使用Azure Serverless来开发Teams App
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相关推荐
- 使用Azure Pipelines来实现Teams App的CI
我在之前的文章里介绍了如何一步步配置CI/CD来部署Teams App( 之前的文章 ),随着Azure DevOps的发展,微软推出了Azure Pipelines.在这篇文章中,主要介绍什么是Az ...
- 如何在 Apple Silicon (M1) 上开发 Teams App
apple 在几个月前发布了自家的芯片 M1,由于将多核cpu,多核gpu,神经网络运算,内存和其他一切处理部件高度整合在一起,大大提高数据传输速度.发布后好评如潮,我也没有忍住,入手了一台最低配的m ...
- 面向全球用户的Teams app之夏令时篇
我在前两篇文章里分享了Global Ready的teams app时会遇到的不同挑战.这篇我继续分享在夏令时方面的挑战. 夏令时,主要是为了节约能源,英文里通常缩写成DST(Daylight Savi ...
- 使用Azure轻松实现Teams App的全球合规性
我在之前的一篇博客里面讲了合规性对于我们Teams app是非常重要的,因为office365平台就是面向全世界用户的,我们开发的teams app一旦发布后,立刻就会有各国各地区的用户来进行安装使用 ...
- Teams app 开发最佳实践
经常有朋友问我,teams app开发有哪些最佳实践,我看了一些别人的分享,也结合我自己的经验,总结了一下一共有这么几点: 使用 Microsoft Graph API 访问用户数据和组织数据 Mic ...
- 低代码开发物联网app(2)-Power Apps 连接Azure SQL Database 读取物联网设备清单
本文是Power Platform 低代码开发物联网App 系列文章的第二讲: < 概览 -Power Platform低代码开发物联网App> <(1)-Power Platfor ...
- 将Teams app升级到net6
net6 发布已经有一个多月了,因为我的LuckyDraw app是使用Azure app service,当时我查了一下app service还没有ready,昨天我又查看了一下,发现app ser ...
- 在VSCode Remote环境下开发Teams Bot
我使用VS Code开发已经有蛮长一段时间了,时间长了,越来越喜欢VS Code,虽然有些时候会没有传统的VS方便,比如开发Azure Function时你需要编写一下launch.json,而且你需 ...
- 如何开发Teams Bot
很多朋友问我如何开发一个成功的Teams Bot,他们说Bot Framework SDK看起来简单,但是真要的去开发一款成熟的bot,很多地方还是不知道如何使用.我从最早的bot framework ...
最新文章
- 互联网+办公”中的网红企业网盘——坚果云
- KingPaper初探Java之方法声明及重载
- 【阿里云课程】卷积神经网络:结构单元、卷积层反向传播求解与典型模型
- IBM informix .net provider
- c语言数据结构和数据类型_C语言中的数据类型
- 蓝桥杯题目常用API	(JAVA)
- jsp 九大内置对象详解以及示例
- Java与完成端口IOCP
- 寿司大厨Sushiswap挥刀Uniswap背后:或将消灭传统VC
- 计算机考研英语需要过六级吗,四六级没过,会影响考研英语吗?
- 以汨罗命名的鸿蒙网,汨罗千年古镇“新市”考
- html火焰字效果,如何用PS制作火焰字特效
- 【金融量化分析】#HW2 (Effective return;Duration and convexity;bootstrap method; minimum variance portfolios)
- 优秀WordPress版微信小程序推荐(二)
- UN Comtrade(联合国商品贸易统计数据库)数据爬取Python代码
- RecycleView复用错乱常用解决办法
- 【cocos2d-x 手游研发----怪物智能AI】
- GameMei 简网APP工场
- sicily 1155
- salmon的报错解决error while loading shared libraries: libboost_iostreams.so.1.60.0
热门文章
- SQL Server各个版本功能比较
- python合法变量类型_Python 变量类型
- OOP 中的 方法调用、接口、鸭式辩型、访问者模式
- linux时间修改-hwclock和date
- MVC Html.AntiForgeryToken() 防止CSRF***
- 设计模式-Factory Method Pattern
- dwr 写的小程序,配置
- timertask run函数未执行_图执行模式下的 TensorFlow 2
- mysql 5.7.18 winx64安装配置方法
- 纯CSS制作各种各样的网页图标(三角形、暂停按钮、下载箭头、加号等)