海曙网站建设网站,网营科技是外包公司吗,wordpress 排除置顶,网页设计基础知识选择题今天我们来聊一下#xff0c;一个Teams app的infrastructure#xff0c;我在考虑LuckyDraw的主要出于这么几个出发点#xff1a; 可管理性。因为这是一个个人产品#xff0c;以后维护工作也只有我一个人#xff0c;所以我希望整个infrastructure简单、易管理#xff0c;不…今天我们来聊一下一个Teams app的infrastructure我在考虑LuckyDraw的主要出于这么几个出发点 可管理性。因为这是一个个人产品以后维护工作也只有我一个人所以我希望整个infrastructure简单、易管理不要太花我时间 高可用。Teams的用户遍布全世界所以LuckyDraw的用户来自不同时区这个基础架构要能很好的支持7x24小时高可用 高可扩展。Office365的用户有1B所以LuckyDraw的用户可能会在某个时间点爆发只是可能。这个架构需要能快速的扩展成支持上百万的用户 低成本。一个字穷。我穷啊
下面这张图展示了LuckyDraw整体的基础架构构建在Azure上 中间是Azure App Service运行着Bot由Bot Service打通我的Bot和Teams之间的通道。数据库使用的是Table Storage。Key Vault里保存着连接字符串bot密钥等等。Log Apps用来出发抽奖每个抽奖都在某个指定的时间点被触发Application Insights用来存储日志Availability Test它实际上属于Application Insights用来确保我的LuckyDraw Bot的高可用。
接下来我就一个个具体说一下我为什么要这么设计
App Service
选用App Service主要是因为它可以非常方便的向上扩展和水平扩展而且还支持auto scale当他检测到cpu占用与高于某个阈值时自动水平扩展这样我就很容易管理了不需要担心机器是否够用。而且App Service和Azure里的其他资源非常容易整合。最最关键的是它有Free版本虽然free版本有一些限制但是也足够用于DEV和UAT环境了。
实际上下个版本我准备把App Service Plan从Windows换成Linux这样我的生产环境可以更加便宜而且可以看到B1系列的linux还有优惠便宜到爆 Table Storage
选用Table Storage主要是因为便宜太便宜了我计算过一次抽奖算他平均5KB的数据也就是一百万次抽奖一个月才0.225美金人民币按照6.8来算才1.53元。而且我还可以吧已经结束的抽奖移到Archive Storage才6分人民币每个月每一百万次抽奖。是不是觉得便宜到不可相信的地步 当然使用Table Storage也不是没有缺点的不然那些SQL老大哥们怎么活啊。使用Table Storage有几点需要注意
目前没有成熟的自带的备份方案但可以自己写脚本实现每row数据每个column的数据有大小限制开发是不能使用EFDapper等成熟的ORM库
Logic Apps
当时为了找一个timer的方案很是头痛我并不希望把我的bot的服务做成stateful这样会影响它的scalability。然后我又研究了Azure Durable FunctionAzure Scheduler等方案最后在好友Ares的建议下研究了Logic Apps发现这个用来做Timer是一个很好的方案。 而且它还有自动的retry机制而且一旦出错也非常容易查找当时出错的原因。 Availability Test
这个是Application Insights里的一个功能可以从选定的机房往你指定的Service上发送请求并且监控是否请求成功和网络延迟。下图就是从我选定的5个region给我的bot服务发送请求。延迟最大的是美国东部因为我的bot服务部署在香港所以美国东部距离最远。 Key Vault
Azure的Key Vault可以很好的帮助我们保存密码密钥连接字符串之类的。而且MSI很好用我可以只给我的Bot服务有访问Key Vault的权限我连我自己的azure账号都不给访问权限真正的安全啊。 环境
上面的全套基础架构只是一个环境我在整个开发流水线中一共有三个环境分别是DEVUAT和PROD使用Azure DevOps来完成CI/CD。都是微软自家产品所以AzureDevOps和Azure完美结合。我后面会另外再写一篇关于我如何使用AzureDevOps来自动部署整个infrastructure的文章。 下图就是运行了9天的生产环境的成本一共是12澳币大约60元不到的人民币主要是花在了App Service Plan因为我需要开启Always On功能。以后改成Linux的App Service Plan后会便宜不少。 这个是UAT环境运行18天左右才花了3澳分相当于人民币1角5分不到。所以如果你对Azure的服务十分了解并且你的服务是Cloud Native的真心便宜啊。而且整个架构是高度可扩展的。