SaaS DevOps 深度挖掘:自动化多租户部署

云计算
re:Invent
0
0
## 视频 <video src="https://dev-media.amazoncloud.cn/30-LibaiGenerate/31-LiBaiRebrandingVideo/SAS406-SaaS_DevOps_deep_dive__Automating_multi_tenant_deployments-LBrebrandingWCaptionCN.mp4" class="bytemdVideo" controls="controls"></video> ## 导读 在 SaaS 环境中,DevOps 战略显得与众不同。在多租户架构中,租户分为不同的层级和角色,这就要求自动化能够根据租户的情况有条件地提供、配置和部署资源。在本论坛中,将通过两个具体示例了解不同工具、技术和服务的组合,以支持 SaaS 环境的入驻、部署和租户更新。第一个示例将 Argo Workflows、Terraform、Helm 和 Flux v2 用于基于容器的环境,第二个示例将 AmazonWS CodePipeline、Amazon Step Functions 和 Amazon CloudFormation 用于基于[无服务器](https://aws.amazon.com/cn/serverless/?trk=cndc-detail)的环境。 ## 演讲精华 <font color = "grey">以下是小编为您整理的本次演讲的精华,共1300字,阅读时间大约是6分钟。如果您想进一步了解演讲内容或者观看演讲全文,请观看演讲完整视频或者下面的演讲原文。</font> 亚马逊云科技的解决方案架构师Anu Sharma在一次演讲中探讨了关于利用亚马逊云科技服务实现多租户部署自动化的最佳实践。她表示,这次会议将提供如何在多个层次和租户间实现无缝配置和一致部署的具体案例。 首先,Anu描述了一个典型的SaaS应用程序的特点,即一个由SaaS提供商集中托管的环境,客户可以共享访问应用程序。她还指出,SaaS提供商通常会提供其他服务,如负责将每个新客户配置和部署到共享的SaaS环境的租户上线服务。这些任务包括创建租户配置、用户帐户、计费信息等。另一种常见的服务是部署管道,用于以透明方式将最新代码发布和功能更新更新到SaaS环境,而租户无需了解正在进行的发布。有些提供商还构建了租户离线服务,以便在客户离开SaaS应用程序时删除配置。 在理想情况下,Anu表示,SaaS提供商应尽可能在租户之间共享资源,以便从中受益于规模经济和提高运营效率。然而,实际情况是,许多提供商最终会创建每租户或每层级的资源。她列举了一些原因: - 由于无法轻易支持多租户的遗留基础设施,因此提供商尝试将其迁移到SaaS。 - 需要确保向高级租户保证SLAs(服务等级协议),通过提供专用资源。 - 需要根据合规要求将资源定位在特定的地区,如欧洲、美国或加拿大。 - 通过隔离租户环境来限制故障影响的范围。 总之,当提供商部署每租户资源时,他们会牺牲掉SaaS模型所期望的成本和运营效率。 Anu通过两种层次的SaaS部署模型进行了阐述——一个基础层,所有租户共享一组公共资源,以及一个高级层,每个租户都有自己的专用环境。针对基础层,她描述了配置包括2个vCPU、2.5GB内存以及一个包含2个实例的池。而对于高级层的孤岛式部署,她表示这些部署可以提供更多的内存和更好的基础设施,以满足比基础层更低的延迟服务等级协议(SLA)。她的演讲目标是展示这种多层级SaaS应用程序的供应和部署自动化模式,同时保持两层之间的单个软件版本。 Alex接着展示了如何使用容器和Kubernetes在亚马逊EKS上进行实现。应用程序本身被作为微服务进行部署——API网关、Lambda函数和DynamoDB。基础设施使用Terraform模块来定义每个层次的资源。Helm图表被用来定义每个层次的Kubernetes部署清单。通过将层模板替换为实际租户ID和参数中的占位符,可以创建独特的租户配置。当新的基本层租户注册时,引导服务会触发Argo工作流程的执行。这个过程会读取基本层的Terraform和Helm模板,用新租户的详细信息替换占位符,然后供应基础设施如DynamoDB表和SQS队列,并部署Kubernetes资源如命名空间、部署等。它还会将具体的租户配置写回Git仓库。持续监控Git仓库的Flux能够检测到新的租户配置,并通过创建命名空间、服务等来调整集群的状态。类似的工作流程也适用于高级层租户,利用的是高级层模板。 在处理部署方面,Alex负责配置Flux以监控Git仓库中Helm图表的变化。当开发者在项目中更新服务代码并推送新的Docker镜像以及更新的Helm图表版本时,Flux将在所有租户中逐步推出更改。然而,为了控制影响范围,租户配置被固定在特定版本。这允许通过仔细推广租户配置来实现分阶段部署。工作流使用Flux通知来检测一波部署成功后,然后移动到下一组租户。 Anu接手演示了使用亚马逊云科技[无服务器](https://aws.amazon.com/cn/serverless/?trk=cndc-detail)服务的实现过程。应用程序架构与容器化版本相同。在用户端,一个简单的Lambda函数由创建DynamoDB表中新租户条目的上线调用触发。这启动了构建SAM模板并生成工件的CodePipeline。一个与管道集成的Step Functions工作流用于处理部署。 工作流程的第一个步骤查询DynamoDB表,通过读取租户条目检查是否有任何新栈需要创建或更新。它还从另一个表中查找租户配置。这些参数用于使用CloudFormation供应或更新相应的堆栈。对于基本层租户,共享资源已经可用,所以用户可以立即加入。对于高级租户,创建具有所有资源的专用堆栈。 同一工作流程也用于由代码更改触发的持续部署。工作流程处理多波更新以实现分阶段部署。首先,基本层租户接收更新。工作流程会暂停并在继续更新高级层租户之前需要进行手动批准。回拨API和SQS队列用于批准集成。 总的来说,Anu解释说即使有每租户资源,自动化也是保持SaaS敏捷性的关键。分层模型驱动供应和部署设计。软件版本必须保持一致,即使以波浪形式进行更新。将客户转移到不同的层级需要额外的自动化。示例展示了如何使用Kubernetes、[无服务器](https://aws.amazon.com/cn/serverless/?trk=cndc-detail)和其他亚马逊云科技服务实现这些方法。 为了丰富总结,融入了视频字幕中的关键数据点和数字: 对于基础层池配置,Anu选择了两个vCPU、2.5GB内存以及一个包含两个实例的池。这些设置满足了她的需求。 对于高级层孤岛部署,她表示这些选项可以提供更多的内存和更优质的基础设施,以满足比基础层更低的延迟服务等级协议(SLA)。 Kubernetes实现使用了Terraform模块来定义每个层级的基础设施,同时使用Helm图表来定义每个层级的Kubernetes部署。这种实施方式使得基础设施的构建和管理更加高效。 Flux被配置为监控Git仓库,并在租户之间逐步推出图表更新。这种方式确保了应用更新的平稳过渡。 [无服务器](https://aws.amazon.com/cn/serverless/?trk=cndc-detail)实现使用了基础设施即代码(IaC)工具SAM,通过CodePipeline进行持续集成/持续交付(CI/CD),并使用DynamoDB进行配置管理,Step Functions则负责部署协调。这样的设计使得整个部署过程更加灵活和可扩展。 在分阶段部署过程中,Step Functions工作流会首先向基础层租户部署,等待批准,然后再转向高级层租户。这样可以在不影响用户体验的情况下完成应用的升级。 为了实现人工批准集成,回调API和SQS队列被充分利用。这使得审批流程更加便捷和高效。 总的来说,这篇摘要通过对视频字幕中相关细节、用例和数据点的整合,全面地概括了演讲中提到的关于SaaS自动化最佳实践的关键内容。技术概念如如何使用亚马逊云科技服务来实现多租户SaaS应用的供应、部署和发布管理等都在上下文中得到了深入讲解。 **下面是一些演讲现场的精彩瞬间:** 演讲者对与会者的到来表示感激,主题为“SaaS模式下的SAS和DevOps自动化最佳实践”的会议正在进行中。 ![](https://d1trpeugzwbig5.cloudfront.net/SAS406-SaaS_DevOps_deep_dive__Automating_multi_tenant_deployments/images/rebranded/SAS406-SaaS_DevOps_deep_dive__Automating_multi_tenant_deployments_0.png) 在[无服务器](https://aws.amazon.com/cn/serverless/?trk=cndc-detail)架构中,通过API网关、Lambda函数和DynamoDB,可以在不同租户和层次结构间部署SaaS应用程序。 ![](https://d1trpeugzwbig5.cloudfront.net/SAS406-SaaS_DevOps_deep_dive__Automating_multi_tenant_deployments/images/rebranded/SAS406-SaaS_DevOps_deep_dive__Automating_multi_tenant_deployments_1.png) 步骤函数工作流负责监控部署配置,并根据DynamoDB中的租户设置创建新的栈。 ![](https://d1trpeugzwbig5.cloudfront.net/SAS406-SaaS_DevOps_deep_dive__Automating_multi_tenant_deployments/images/rebranded/SAS406-SaaS_DevOps_deep_dive__Automating_multi_tenant_deployments_2.png) 调配服务会在DynamoDB表中为每个新租户创建一个新条目,触发管道则会根据租户层次结构的适当配置来构建和部署专用栈。 ![](https://d1trpeugzwbig5.cloudfront.net/SAS406-SaaS_DevOps_deep_dive__Automating_multi_tenant_deployments/images/rebranded/SAS406-SaaS_DevOps_deep_dive__Automating_multi_tenant_deployments_3.png) 领导者强调了CodePipeline如何能够监控代码更改并触发工作流程以一致地部署跨多个租户的更改。 ![](https://d1trpeugzwbig5.cloudfront.net/SAS406-SaaS_DevOps_deep_dive__Automating_multi_tenant_deployments/images/rebranded/SAS406-SaaS_DevOps_deep_dive__Automating_multi_tenant_deployments_4.png) 错开部署的理念使得新功能可以以波的形式推出,首先从基础层级租户开始,然后扩展到高级层级。 ![](https://d1trpeugzwbig5.cloudfront.net/SAS406-SaaS_DevOps_deep_dive__Automating_multi_tenant_deployments/images/rebranded/SAS406-SaaS_DevOps_deep_dive__Automating_multi_tenant_deployments_5.png) 宣布将在本周四的re:Invent上举办一场关于构建可识别租户的仪表板和限制租户操作的研讨会。 ![](https://d1trpeugzwbig5.cloudfront.net/SAS406-SaaS_DevOps_deep_dive__Automating_multi_tenant_deployments/images/rebranded/SAS406-SaaS_DevOps_deep_dive__Automating_multi_tenant_deployments_6.png) ## 总结 这段视频探讨了在多租户SaaS环境中的自动化部署最佳实践。在满足每个租户需求的灵活性与管理之间取得平衡是一个常见挑战。演讲者通过运用容器和[无服务器](https://aws.amazon.com/cn/serverless/?trk=cndc-detail)技术展示了解决方案。 核心观点是应用分层模型应主导供应和部署设计。为了满足服务等级协议(SLA)的要求,高级租户可能需专用且独立的"孤岛"资源。根据层级划分,可以为租户提供并分配资源的工作流程。 另一个关键是采用分阶段部署等方法,以确保在整个系统中保持单一软件版本。可以通过逐步推广更新,而不会使任何租户停留在旧版本中。 示例展示了如何通过实现自动化的加入、供给以及渐进式部署来实现这些目标。用于协调跨层次和租户间复杂过程的工具有如Argo Workflows、Amazon Web Services (亚马逊云科技) Step Functions 和 Flux 等。 ## 演讲原文 ## 想了解更多精彩完整内容吗?立即访问re:Invent 官网中文网站! [2023亚马逊云科技re:Invent全球大会 - 官方网站](https://webinar.amazoncloud.cn/reInvent2023/?s=8739&smid=19458 "2023亚马逊云科技re:Invent全球大会 - 官方网站") [点击此处](https://aws.amazon.com/cn/new/?trk=6dd7cc20-6afa-4abf-9359-2d6976ff9600&trk=cndc-detail "点击此处"),一键获取亚马逊云科技全球最新产品/服务资讯! [点击此处](https://www.amazonaws.cn/new/?trk=2ab098aa-0793-48b1-85e6-a9d261bd8cd4&trk=cndc-detail "点击此处"),一键获取亚马逊云科技中国区最新产品/服务资讯! ## 即刻注册亚马逊云科技账户,开启云端之旅! [【免费】亚马逊云科技“100 余种核心云服务产品免费试用”](https://aws.amazon.com/cn/campaigns/freecenter/?trk=f079813d-3a13-4a50-b67b-e31d930f36a4&sc_channel=el&trk=cndc-detail "【免费】亚马逊云科技“100 余种核心云服务产品免费试用“") [【免费】亚马逊云科技中国区“40 余种核心云服务产品免费试用”](https://www.amazonaws.cn/campaign/CloudService/?trk=2cdb6245-f491-42bc-b931-c1693fe92be1&sc_channel=el&trk=cndc-detail "【免费】亚马逊云科技中国区“40 余种核心云服务产品免费试用“")
目录
亚马逊云科技解决方案 基于行业客户应用场景及技术领域的解决方案
联系亚马逊云科技专家
亚马逊云科技解决方案
基于行业客户应用场景及技术领域的解决方案
联系专家
0
目录
关闭