云服务器价格_云数据库_云主机【优惠】最新活动-搜集站云资讯

天翼云_百度云账号密码男人懂_稳定性好

小七 141 0

亲爱的社区,

最近,我就SAP组件(如ABAP程序、SAP UI5应用程序)的部署主题进行了多次讨论,并讨论了采用Jenkins或Azure DevOps等工具提供的现代持续集成/部署流程所面临的挑战。

这里有一些关于如何集成ABAP单元的博客条目,SAP Code Inspector等已经与Azure DevOps合作,因此我想借此机会展示使用Azure DevOps的UI5应用程序的灵活部署。我们将特别关注金丝雀版本,但是这种方法可以很容易地扩展到支持A/B测试?

现在零停机部署(包括安全回滚)是不够的。与一小部分最终用户群比较用户采用情况以及测试版本时,使用新特性甚至其变体是至关重要的。因此,我们不仅仅是简单的部署槽交换(通常称为蓝/绿部署)。这就是金丝雀释放和A/B测试发挥作用的地方。

图1。流行的部署风格

金丝雀版本描述了新功能只对当前使用你的应用程序的一小部分用户开放的部署。这样,您就可以降低在生产中进行测试的风险,并获得即时反馈。A/B测试使用类似的路由机制,但侧重于部署各种不同的功能,以便能够比较用户的反应/采用情况。

能够用SAP UI5应用程序做到这一点不是很好吗?今天是你的幸运日!

仔细看看实现细节

想象一下,您希望能够在SAP WebIDE中进行开发,并且仍然能够从像Azure这样的云hyperscaler的应用程序托管功能中获利。我为金丝雀的发布提供了一个完全可行的例子。您可以在这里找到GitHub和publicdevops项目的源代码。使用的概念可以应用于替代软件堆栈,并且不限于Azure云。

我选择此设置是因为它非常容易部署,但功能仍然丰富。例如,容器的azureapp服务为您提供了现成的部署槽和流量路由。现在,让我们来看看架构:

图2带有DevOps的Azure上的UI5金丝雀版本

每次Git推送到GitHub都会触发Azure DevOps中的构建过程。这是由sapwebide的开发人员发起的。(1)构建过程运行Dockerfile来创建一个映像,物联,其中包含来自GitHub(nginxweb服务器实例)的更新SAPUI5代码,并将结果推送到容器注册表(在我的例子中是Azure容器注册表(ACR))。(2-4)完成后,发布管道将在ACR上获取最新的映像,并将其部署到Azure应用程序服务中,以便将容器放到"Dev"槽中,同时调整应用程序的路由。现在,5%的最终用户被路由到运行调整后的应用程序的"Dev"槽,而95%的用户仍然看到以前的高效应用程序。查看Azure文档以获取必要的CLI命令。(5-7)在Azure DevOps中的开发人员批准流程的最后一个阶段之前,将暂停与新版本应用程序的完全交换(请参见上图中的橙色点)。(8-9)

对于这种情况,有许多方法可以实施审批流程,数据分析怎么做,例如,使用质量门来命名另一个选项。我在为这个例子寻找一种快速而简单的方法。因此,我的手动批准就足够了。

另一方面注意:由于集成是通过GIT实现的,因此它也将与SAP的下一代IDE SAP Business Application Studio配合使用。这是今年在TechEd上宣布的。尽管仍处于beta测试阶段,但可能值得一看,尽管SAP表示WebIDE完整堆栈在一段时间内仍将是生产场景的工具。

后端注意事项

我的示例集中在应用程序的UI部分。对于一个完全高效的场景,您还需要考虑后端软件组件(OData服务等)的可伸缩性和版本控制。一种方法是查询参数,就像您在API版本控制中看到的那样。但是,请记住,返利下载,我的报告建议在生产中进行"测试"。

因此,就ABAP开发而言,这可能会影响您的SAP传输策略。我想提一个常见的解决方案:黑暗部署。我的意思是你的ABAP代码的一部分,只在某些情况下运行。您可以想象UI5应用程序中的配置(标志或查询参数),可视化数据大屏,这些配置激活后端上的其他或可选代码部分。这种方法适用于金丝雀发行版和A/B测试。

这是关于将UI上的功能与后端匹配的方法。但规模呢?一般来说,扩展SAP后端系统是当今云提供商的一个典型用例。从我的角度来看,能够根据需求无限地扩展web应用程序是没有意义的,但要保持后端静态不变。但这是另一篇博文的主题

最后一句话

我简要介绍了流行的部署风格,并向您展示了如何为您的UI5应用程序实现一个现代的"金丝雀版本",在SAP WebIDE中开发并利用Azure云组件提供应用程序服务和Azure DevOps提供CI/CD时,

在我的CI/CD示例的基础上构建,您可能会变得非常"疯狂",云上,并开始为云应用程序本身构建自动化解决方案,以根据需求(例如基于指标)进行放大/缩小和放大/缩小。

让您开始很快,我向我的azuredevops项目添加了一个构建管道,该管道通过脚本执行terra来启动必要的Azure组件。不过,您需要在azuredevops中完成配置。

在我的下一篇博客中,我将扩展这个示例以与Kubernetes一起工作。它在部署功能方面没有比这更灵活的了。

请在这里找到我的GitHub存储库:https://github.com/MartinPankraz/UI5OnAzure

公共Azure DevOps项目:https://dev.azure.com/mapankra/SAPUI5onAzure

随时可以离开或问很多后续问题。

最好问候

马丁

所表达的意见仅为我自己的意见,不表达我的雇主的意见或看法。