乐趣区

SAP云平台里的三叉戟应用

大家第一次看到 SAP MTA 这个词组,会联想到什么?

Jerry 第一次看到的时候,联想到的是那一个个足坛著名的三叉戟攻击组合。

海皇波塞冬 (Poseidon),奥林匹斯十二神中地位仅次于宙斯的大神,海界的统治者,他的威严与大地无穷无尽的生命力及洪水相匹敌。三叉戟是海皇波塞冬的武器,外型似鱼叉,中间刺较长而边缘两根刺较短。这把武器因《圣斗士星矢》在国内的热播而被广大八零后九零后熟知。

由于三叉戟极富攻击力的视觉外观,国内外很多球迷喜欢将很多成为无数后卫噩梦的足坛攻击性组合称为“三叉戟”组合,并使用构成这些组合的球星名字首字母的组合命名,比如巴塞罗那队曾经的南美三叉戟 MSN,以及死敌皇家马德里的欧洲三叉戟 BBC.

当然,咱国内足坛也有自己的三叉戟,比如令无数老球迷津津乐道的“金玉圣”三叉戟:李金羽,张玉宁,曲圣卿。

刮起青春风暴的辽小虎们凭借无坚不摧的金玉圣三叉戟,在 1999 年甲 A 联赛里差点创造了德甲凯泽斯劳滕般的奇迹,最后仅以 1 分之差,位于山东鲁能泰山队之后,屈居亚军。

(Jerry:我大四川全兴队这一年高开低走,不过还是创造了四川队的历史最佳名次)

所以 Jerry 第一次看到 SAP MTA 这个组合时,虽然视觉上看到的是 Multi Target Application,然而脑子里却习惯性地把给我留下深刻印象的球星名字和 MTA 进行匹配:

M:Makélélé

马克莱莱,法国著名球星,司职防守型后腰,在 Jerry 心中他是最被低估的巨星之一。绿茵场上总有一些默默无闻干着脏活的“蓝领”球员,当球队进球时镁光灯的焦点从来不会落在他们身上,然而一旦缺少他们,所有人才发现整只球队都玩不转了。马克莱莱就是这样的低调实力派球员,实力远大于名气。重心低,下盘稳,一对一缠斗能力极强,防守动作成功率极高,以其惊人的横向覆盖能力,使得他在球队里踢的位置被称为“马克莱莱位置”。

T: Totti

托蒂,意甲罗马队狼王,随着意甲在国内的直播而吸引了无数球迷。2017 年 8 月 14 日,《天下足球》栏目推出的托蒂退役特别节目《狼图腾》,以天下足球栏目特有的催泪风格,送别了托蒂离开绿茵场。一个人, 一座城, 一袭红衣, 一生传奇, 他早已是红狼之王, 永恒之城的图腾, 纵横 28 年屹立不倒。他的告别结束了一段童话, 带走了一段光阴,也让国内无数八零后九零后球迷,送别了自己的青春。

A:Adriano

阿德里亚诺,巴西历史上继罗纳尔多之后又一位极有希望成为新球王的球星,他拥有成为球王的一切条件,巅峰期的阿德里亚诺无论是在真实的绿茵场上还是各式足球电脑游戏里都是 bug 一般的存在,有球迷称阿德里亚诺是现役球员莱万多夫斯基和 C 罗的综合体。

可惜造化弄人,阿德里亚诺像一颗流星一样迅速陨落了,坠入凡间的速度比罗纳尔迪尼奥更快。尽管阿德里亚诺远远没有达到专业人士和球迷期望他达到的高度,但他在国际米兰 03 到 05 年的巅峰表现,如今仍然是无数球迷津津乐道的话题。

Jerry 排出的这个 MTA 组合虽然不是一个锋线三叉戟,但应该能算一个攻防俱佳,相当有竞争力的一个中前场铁三角吧?

扯淡完毕,进入正题。

SAP MTA: Multi Target Application

Jerry 前一篇文章 学而不思则罔 – SAP 云平台 ABAP 编程环境的由来和适用场景 里介绍过,随着 SAP 云平台的出现,SAP 云平台开发生态圈告别了过去单凭 ABAP 打天下的局面。

伴随着 SAP 云转型的步伐,越来越多的编程语言,技术栈,工具纷纷加入 SAP 开发生态圈。现代企业级应用,越来越不青睐过去传统的单体式架构,取而代之的是采用微服务的思想,将复杂的单体应用根据业务拆分成一个个细粒度的分散的松耦合模块,这些模块可以由不同的编程语言和技术栈实现。

凡事有利就有弊,这种拆分除了让我们享受微服务架构带来的收益外,也引入了新的挑战,比如这些模块群的生命周期管理,统一部署和配置等等。SAP MTA 的引入就是为了解决这些挑战,Multi Target Application 里包裹的所有模块,不管它们采用何种异构的技术栈实现,都共享同一套生命周期管理。通过 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 运行实例上的环境变量:

依法炮制,创建一个 MTA 三叉戟的第二根尖刺,类型为 Java 模块:

模板选择 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 模型有一个最基本的认识,感谢阅读。国庆黄金周的第二天,祝大家国庆愉快。


要获取更多 Jerry 的原创文章,请关注公众号 ” 汪子熙 ”:

退出移动版