Azure Function可以说比较早期的一个serverless服务,随着这些年云服务的大行其道,Serverless在概念越来越火,什么叫serverless?

Serverless computing (or serverless for short), is an execution model where the cloud provider is responsible for executing a piece of code by dynamically allocating the resources. And only charging for the amount of resources used to run the code.

从上面的定义可以知道serverless指的是用户不用考虑服务器之类的,只需要把的代码放到云服务商提供的serverless服务里运行,并且收取的费用是按照执行代码时占用的资源。所以如果你的代码不是需要一直运行着的,那就意味着你使用serverless服务比使用传统的服务更加省钱。

在Azure里越来越多的服务有了serverless,除了刚才说的Azure Function,还有了Serverless Kubernetes(使用virtual nodes),数据库方面CosmosDB,和传统的SQL也都有了serverless,让用户在使用时更加省钱。

Azure SQL Database serverless: https://docs.microsoft.com/en-us/azure/azure-sql/database/serverless-tier-overview

Azure Cosmos DB serverless: https://docs.microsoft.com/en-us/azure/cosmos-db/serverless

通常我们在开发一个应用时需要用到好几个环境,比如开发环境,测试环境,生产环境,有时候还会需要一个UAT环境,一般除了生产环境,其他环境的使用率都会比较低,这时候如果使用serverless的服务,那会剩下很多云服务费用。

那我们看看在开发Teams app的时候如何使用serverless,一个最最简单(用来demo级别的)的teams app的架构如下:

Teams和Azure的bot service进行交互,然后bot service和我们的服务通过HTTP api进行交互,在这里我们使用的是Azure Function,在Function里使用HTTP trigger,这样就可以把http接口暴露给bot service。

这个架构我之所以说是demo级别,因为连数据库都没有用,我们知道通常情况下一个系统肯定需要DB。好,让我们加上数据库。

我们这里可以使用上面说的SQL serverless或者是Cosmos DB serverless,但这个架构我只能说是pilot级别的架构,就是说只是用来做一些尝试性的试验项目。

如果我们要做一个真正的产品,哪怕是一个微型的产品,我们至少还需要日志系统(用来监控运行情况或者查错)和存放秘密的地方(比如保存数据库的连接字符串)。我们再来升级一下:

我们可以使用Azure的App Insights和Key Vault这两个服务,这两个可以算是serverless,因为我们在使用它们的时候不需要关心任何的运行他们的服务器,只需要根据保存数据的多少和调用次数进行付费,非常好用。

上面这个架构只是一个微型teams app产品的架构,如果需要做一个面向全球用户的teams app,那整套架构会非常复杂,我后面会写多篇文章来说明如何设计一个面向全球用户的teams app架构。

使用Azure Serverless来开发Teams App相关推荐

  1. 使用Azure Pipelines来实现Teams App的CI

    我在之前的文章里介绍了如何一步步配置CI/CD来部署Teams App( 之前的文章 ),随着Azure DevOps的发展,微软推出了Azure Pipelines.在这篇文章中,主要介绍什么是Az ...

  2. 如何在 Apple Silicon (M1) 上开发 Teams App

    apple 在几个月前发布了自家的芯片 M1,由于将多核cpu,多核gpu,神经网络运算,内存和其他一切处理部件高度整合在一起,大大提高数据传输速度.发布后好评如潮,我也没有忍住,入手了一台最低配的m ...

  3. 面向全球用户的Teams app之夏令时篇

    我在前两篇文章里分享了Global Ready的teams app时会遇到的不同挑战.这篇我继续分享在夏令时方面的挑战. 夏令时,主要是为了节约能源,英文里通常缩写成DST(Daylight Savi ...

  4. 使用Azure轻松实现Teams App的全球合规性

    我在之前的一篇博客里面讲了合规性对于我们Teams app是非常重要的,因为office365平台就是面向全世界用户的,我们开发的teams app一旦发布后,立刻就会有各国各地区的用户来进行安装使用 ...

  5. Teams app 开发最佳实践

    经常有朋友问我,teams app开发有哪些最佳实践,我看了一些别人的分享,也结合我自己的经验,总结了一下一共有这么几点: 使用 Microsoft Graph API 访问用户数据和组织数据 Mic ...

  6. 低代码开发物联网app(2)-Power Apps 连接Azure SQL Database 读取物联网设备清单

    本文是Power Platform 低代码开发物联网App 系列文章的第二讲: < 概览 -Power Platform低代码开发物联网App> <(1)-Power Platfor ...

  7. 将Teams app升级到net6

    net6 发布已经有一个多月了,因为我的LuckyDraw app是使用Azure app service,当时我查了一下app service还没有ready,昨天我又查看了一下,发现app ser ...

  8. 在VSCode Remote环境下开发Teams Bot

    我使用VS Code开发已经有蛮长一段时间了,时间长了,越来越喜欢VS Code,虽然有些时候会没有传统的VS方便,比如开发Azure Function时你需要编写一下launch.json,而且你需 ...

  9. 如何开发Teams Bot

    很多朋友问我如何开发一个成功的Teams Bot,他们说Bot Framework SDK看起来简单,但是真要的去开发一款成熟的bot,很多地方还是不知道如何使用.我从最早的bot framework ...

最新文章

  1. 互联网+办公”中的网红企业网盘——坚果云
  2. KingPaper初探Java之方法声明及重载
  3. 【阿里云课程】卷积神经网络:结构单元、卷积层反向传播求解与典型模型
  4. IBM informix .net provider
  5. c语言数据结构和数据类型_C语言中的数据类型
  6. 蓝桥杯题目常用API (JAVA)
  7. jsp 九大内置对象详解以及示例
  8. Java与完成端口IOCP
  9. 寿司大厨Sushiswap挥刀Uniswap背后:或将消灭传统VC
  10. 计算机考研英语需要过六级吗,四六级没过,会影响考研英语吗?
  11. 以汨罗命名的鸿蒙网,汨罗千年古镇“新市”考
  12. html火焰字效果,如何用PS制作火焰字特效
  13. 【金融量化分析】#HW2 (Effective return;Duration and convexity;bootstrap method; minimum variance portfolios)
  14. 优秀WordPress版微信小程序推荐(二)
  15. UN Comtrade(联合国商品贸易统计数据库)数据爬取Python代码
  16. RecycleView复用错乱常用解决办法
  17. 【cocos2d-x 手游研发----怪物智能AI】
  18. GameMei 简网APP工场
  19. sicily 1155
  20. salmon的报错解决error while loading shared libraries: libboost_iostreams.so.1.60.0

热门文章

  1. SQL Server各个版本功能比较
  2. python合法变量类型_Python 变量类型
  3. OOP 中的 方法调用、接口、鸭式辩型、访问者模式
  4. linux时间修改-hwclock和date
  5. MVC Html.AntiForgeryToken() 防止CSRF***
  6. 设计模式-Factory Method Pattern
  7. dwr 写的小程序,配置
  8. timertask run函数未执行_图执行模式下的 TensorFlow 2
  9. mysql 5.7.18 winx64安装配置方法
  10. 纯CSS制作各种各样的网页图标(三角形、暂停按钮、下载箭头、加号等)