编程语言、软件设计架构(如微服务)、协议(如OData)的最新趋势和进展,以及多层和分布式部署平台的多样性加速了更多、更小、解耦和多样化的模块来构建应用程序。在微服务架构下,越来越多的业务应用往往由使用不同语言和技术开发并部署到各种目标运行环境的多个部分组成。各种各样的应用程序模块带来了许多生命周期挑战。开发、部署和配置复杂应用程序的所有单独部分涉及许多步骤,通常针对特定平台或应用程序服务器。所需的服务必须预先配置和供应,不同的模块必须按照严格特定的顺序“连接”在一起,在多个平台上配置和部署,通常使用不同的工具,并在测试、暂存和生产环境中重复使用。零停机升级是复杂性的另一个来源。SAPBTP创造了多目标应用程序(MTA)一词来表达这种生命周期管理需求的多样性,而其他在业界广为流传的术语如“分布式”、“多语言”、“多模块”、“多层”或“多头”应用程序不足以表达这种架构的多样性。但本质上,MTA只是现有多部分应用程序的自然演变。例如,由UI和数据库模块甚至应用程序代码组成的SAPHANAXSAdvanced(XSA)应用程序就是MTA的一个示例。开发人员和管理员希望将结构化应用程序的开发、版本控制、部署和操作作为一个逻辑单元进行管理。MTA的另一个典型示例是JavaEE应用程序,它由bean、Web和应用程序模块、资源适配器等组成,所有这些都遵循相同的开发生命周期并跨多个计算层部署。SAPBusinessTechnologyPlatform为协调的跨平台部署引入了新的分发要求。当作为SaaS扩展平台并采用Fiori即服务(FaaS)概念时,应用程序开发人员需要将其应用程序分布在异构目标(JavaVM、前端服务器、SaaS后端)上,每个目标都有自己的部署API,同时提供精心管理的单一应用程序生命周期。对微服务设计原则、API管理的日益关注以及OData协议作为丰富的服务UI边缘的出现进一步鼓励了使用不同语言、IDE和构建方法开发的应用程序模块的激增。但所有这些部分,UI、服务和数据模型,仍必须作为一个连贯的应用程序运行。在部署方面几乎没有统一性。每个运行时、应用程序服务器或云框架通过引入各种编排解决方案(大量清单文件和格式、项目JSON文件、应用程序描述符、存储库、SAP的CTS+等)以其独特的方式管理多目标方面。CloudFoundry等PaaS以灵活的方式改进传统应用服务器,通过容器化支持各种应用运行时技术。这为选择实现技术(Java、Node.js、Python等)带来了更多自由。应用程序可以分解为独立扩展的模块,并且可以选择最适合每个模块重点的技术。例如,在Node.js中实现的可扩展请求预处理代理可能会覆盖实现业务逻辑的Java模块。虽然从运行时的角度来看这是有利的,但此类分布式应用程序的开发和生命周期管理变得更加困难。
