SAP 云平台多目标应用 Multi-Target Application 的开发技术介绍
随着 SAP 云平台的出现,SAP 云平台开发生态圈告别了过去单凭 ABAP 打天下的局面。
伴随着 SAP 云转型的步伐,越来越多的编程语言,技术栈,工具纷纷加入 SAP 开发生态圈。现代企业级应用,越来越不青睐过去传统的单体式架构,取而代之的是采用微服务的思想,将复杂的单体应用根据业务拆分成一个个细粒度的分散的松耦合模块,这些模块可以由不同的编程语言和技术栈实现。
凡事有利就有弊,这种拆分除了让我们享受微服务架构带来的收益外,也引入了新的挑战,比如这些模块群的生命周期管理,统一部署和配置等等。SAP MTA 的引入就是为了解决这些挑战,Multi Target Application 里包裹的所有模块,不管它们采用何种异构的技术栈实现,都共享同一套生命周期管理。通过 MTA 管理的应用模块,所有运行时的依赖问题都能得到妥善处理。
MTA 应用由表示数据、业务逻辑和 UI 层的多个软件模块组成。 这些模块使用不同的技术创建并部署到不同的目标平台,但共享相同的开发生命周期。MTA 应用程序概念旨在协调所有这些模块的部署,以便正确解决所有运行时依赖项,并按预期运行应用程序。 所有这一切是通过向部署工具提供一组描述符(descriptor)来实现的,这些描述符定义了应用程序中所有模块的相互依赖关系和部署场景。
MTA 描述符(位于项目根文件夹中的 mta.yaml 文件)在使用 SAP Web IDE 或者 SAP Business Application Studio 创建 MTA 应用程序项目时自动生成,并在项目属性更改或添加或删除模块时动态更新。 目前并非所有必要的信息都能够自动生成,在某些情况下,开发人员仍然需要手动维护描述符以完善资源、属性和依赖项的声明和定义。
MTA 描述符以 YAML 格式编写,具有严格的语法要求。 开发人员可以在基于文本的代码编辑器中编辑描述符,但更佳的选择是使用可视 MTA 编辑器,因为它提供输入验证。
要将 MTA 编辑器设置为 MTA 描述符的默认值,请转到 Preferences Default Editors 并设置 MTA 应用程序描述符的编辑器。
注意,MTA 可视化编辑器删除注释并格式化文件。 如果要添加注释,请使用代码编辑器。 要打开代码编辑器,请将代码编辑器设置为默认编辑器,或者右键单击文件并选择使用代码编辑器打开。
如果使用代码编辑器编辑文件,使用空格而不是制表符进行缩进很重要。
本文只是对 SAP 云平台上的 MTA 模型进行 Hello world 级别的介绍,更多 SAP MTA 高级用法,请参考 SAP 官方文档。
在 SAP WebIDE 里根据向导可以很容易地创建一个 MTA 项目:
创建模板选择 Multi Target Application:
随便命个名:
从 MTA 右键菜单里,我们能看到支持许多不同类型的模块创建,大家体会到了 Multi 的含义了吗?这里简单起见,我先创建一个 nodejs 模块:
nodejs 模块取名为 hello:
这里维护的信息会写入最后生成 nodejs 模块的 package.json 文件里:
生成的 package.json 如下,做过 nodejs 开发的朋友都很熟悉了:
通过命令行 cf login 和 cf buildpacks 能看到当前登录的 SAP Cloud Platform CloudFoundry 环境里支持的 buildpack 列表,我们创建的 nodejs 模块需要的 buildpack 也在里面。这些 buildpack 可以用于对相应的模块进行编译,处理依赖,打包,确保它们能够顺利运行在 CloudFoundry 上。
我在这个 hello world 级别的 nodejs 模块里,实现了一个简单的打印当前运行环境所有的环境变量的功能。代码编辑完后,点击 Run 菜单运行,会自动触发依赖分析,打包和部署的动作:
部署完毕后,会生成一个应用的 url,点击:
成功打印出了当前 CloudFoundry 运行实例上的环境变量:
依法炮制,创建一个类型为 Java 的模块:
Java 模块是相关 Java 文件和服务定义的集合。Java 模块实现了应用程序的业务逻辑,可以代替 Node.js 模块,也可以作为 Node.js 模块的补充。Java 模块可以是使用 Apache Maven 构建的 Java Web Archive (WAR) 或 Java Archive (JAR)。
如果开发人员决定使用 settings.xml 文件来提供特定于项目的 Apache Maven 设置,请注意此文件会覆盖默认设置。
如果需要,在与 pom.xml 同样的文件夹层级结构下 创建 settings.xml.
模板选择 Spring Boot Application:
换个名字:hellojava
这次就打印一个 Hello World 就完了:
同样点击 Run 菜单,触发 build 和部署,最后自动启动模块:
每个 MTA 项目都有一个描述文件,格式为 yaml,里面记录了 MTA 包含的每个模块的技术明细。SAP 官方文档里定义的很多高级用法,都在这个 yaml 文件里做文章。
在真实场景中,开发人员完成 MTA 的开发后,需要对 MTA 项目进行 build,生成一个 Archive 文件,交给管理员由后者进行部署:
在 MTA 项目右键菜单里选择 Build,生成这个 Archive 文件:
管理员可以用命令行或者 SAP WebIDE 里的菜单进行部署:
一旦管理员触发部署动作后,MTA 项目里包含的所有模块都会被部署到 SAP Cloud Platform 上并处于运行状态。
总结
本文首先对 SAP 云平台上的多目标应用(MTA 项目)做了概要的介绍,包含 MTA 应用的基本概念和解决的业务痛点,然后从一个实例的例子出发,创建了一个包含 Node.js 和 Java 模块的 MTA 应用,并展示了该应用部署的详细步骤。希望这篇文章能让大家对 SAP 云平台提供的 MTA 模型有一个最基本的认识,感谢阅读。
版权声明: 本文为 InfoQ 作者【Jerry Wang】的原创文章。
原文链接:【http://xie.infoq.cn/article/a766986044f4a9336606bfa3e】。文章转载请联系作者。
评论