随着SAP云平台的出现,SAP云平台开发生态系统告别了过去ABAP一统天下的局面。随着SAP云化转型的步伐,越来越多的编程语言、技术栈和工具加入了SAP开发生态。现代企业级应用越来越不受过去传统单体架构的青睐。取而代之的是,他们采用微服务的思想,将复杂的单体应用按照业务拆分成细粒度分散的松耦合模块。模块可以通过不同的编程语言和技术栈来实现。任何事物都有优点和缺点。这种拆分不仅让我们享受到了微服务架构带来的好处,同时也带来了新的挑战,比如这些模块组的生命周期管理,统一部署配置等等。SAPMTA的引入就是为了解决这些挑战。MultiTargetApplication包裹的所有模块,无论使用何种异构技术栈,都共享同一套生命周期管理。使用由MTA管理的应用程序模块,可以正确处理所有运行时依赖性。MTA应用程序由代表数据、业务逻辑和UI层的多个软件模块组成。这些模块使用不同的技术创建并部署到不同的目标平台,但共享相同的开发生命周期。MTA应用程序概念旨在协调所有这些模块的部署,以便正确解析所有运行时依赖性并使应用程序按预期运行。所有这一切都是通过为部署工具提供一组描述符来实现的,这些描述符定义了应用程序中所有模块的相互依赖性和部署场景。MTA描述符(位于项目根文件夹中的mta.yaml文件)在使用SAPWebIDE或SAPBusinessApplicationStudio创建MTA应用程序项目时自动生成,并在项目属性更改或添加或删除模块时动态更新.目前并不是所有需要的信息都可以自动生成,在某些情况下,开发者仍然需要手动维护描述符来完成资源、属性和依赖的声明和定义。MTA描述符以YAML格式编写,具有严格的语法要求。开发人员可以在基于文本的代码编辑器中编辑描述符,但更好的选择是使用可视化MTA编辑器,因为它提供输入验证。要将MTA编辑器设置为MTA描述符的默认编辑器,请转至首选项默认编辑器并为MTA应用程序描述符设置编辑器。请注意,MTA可视化编辑器会删除注释并格式化文件。如果要添加注释,请使用代码编辑器。要打开代码编辑器,请将代码编辑器设置为默认编辑器,或右键单击该文件并选择使用代码编辑器打开。如果使用代码编辑器编辑文件,重要的是使用空格而不是制表符进行缩进。本文只是对SAP云平台上MTA模型的一个helloworld级别的介绍。SAPMTA更高级的用法,请参考SAP官方文档。在SAPWebIDE中,可以根据向导轻松创建MTA项目:创建一个模板,选择MultiTargetApplication:任意命名:从MTA右键菜单中,我们可以看到它支持多种不同类型的模块创作,大家是否都经历过MultiMeaning?这里为了简单起见,我先创建一个nodejs模块:nodejs模块名为hello:这里维护的信息会写入到最终生成nodejs模块的package.json文件中:生成的package.json如下,做过nodejs开发的朋友都非常熟悉:通过命令行cflogin和cfbuildpacks可以看到当前登录的SAPCloudPlatformCloudFoundry环境支持的buildpack列表,我们创建的nodejs模块需要的buildpack是也在其中。这些buildpacks可以用来编译相应的模块,处理依赖,打包,保证它们可以在CloudFoundry上流畅运行。在这个helloworld级别的nodejs模块中,我实现了一个简单的打印当前运行环境的所有环境变量的功能。代码编辑完成后,点击运行菜单运行,会自动触发依赖分析、打包、部署等动作:部署完成后,会生成一个应用程序url,点击:成功打印出环境变量当前CloudFoundry运行实例:依法炮制,创建Java类型的模块:Java模块是相关Java文件和服务定义的集合。Java模块实现了应用程序的业务逻辑,可以替代或补充Node.js模块。Java模块可以是使用ApacheMaven构建的JavaWebArchive(WAR)或JavaArchive(JAR)。如果开发人员决定使用settings.xml文件来提供项目特定的ApacheMaven设置,请注意此文件会覆盖默认设置。如有必要,在与pom.xml相同的文件夹层次结构下创建settings.xml。模板选择SpringBootApplication:改名字:hellojava这次只要打印一个HelloWorld就结束了:同样点击Run菜单触发构建部署。最后自动启动模块:每个MTA项目都有一个yaml格式的描述文件,记录了MTA包含的每个模块的技术细节。很多SAP官方文档中定义的高级用法都写在这个yaml文件中。真实场景中,开发者完成MTA的开发后,需要构建MTA项目,生成Archive文件,交给管理员部署:在MTA项目的右键菜单中选择Build生成Archive文件:Manage管理员可以使用SAPWebIDE中的命令行或菜单进行部署:一旦管理员触发部署动作,MTA项目中包含的所有模块将被部署到SAPCloudPlatform,并处于运行状态状态。总结本文首先对SAP云平台上的多目标应用(MTA项目)做一个简单的介绍,包括MTA应用的基本概念和解决的业务痛点。然后,从一个例子开始,一个包含Node.js和Java模块的MTA应用的项目,展示了应用部署的详细步骤。希望本文能让大家对SAP云平台提供的MTA模型有一个基本的了解,感谢阅读。
