TAP 系列文章9 | 应用开发加速器

背景

对于开发人员来说,尤其是新加入的人员来说,一直以来都有个困惑,那就是如何高效地启动应用开发。通常情况下,开发部门通过一定时间的积累,会有相关的开发规范和项目规范。如何让新人能够最快的适应这些规范,项目该怎么建,配置该怎么写,代码依赖库有哪些,注释怎么写等等,都是需要解决的问题。否则,每个开发人员写的项目将会五花八门,到最后无人能够读懂而没法接手,更谈不上更新维护。在一个相对规范的开发团队,每个项目和其它项目都有大体的类似性,新加入的成员不想每次都从零开始,可不可以站在前人的肩膀上,“借鉴”其他类似项目,以它们为模版和基础,进行后续开发呢?要找到这个问题的答案,我们首先会想到一个叫做Spring Initializr的工具。对于使用Spring框架的开发人员来说,对它一定不会陌生,那我们就从它开始讲起吧。

Spring Initializr

如果要从零开始构建一个Spring Boot的项目,还是比较繁琐的。你需要选择是创建Maven还是Gradle项目,Spring Boot框架版本,JDK版本,和需要用到的依赖,这些都需要手工写入项目配置文件(比如Maven项目为pom.xml)。除此之外,还有项目的元数据例如名称,包名,组,打包方式等等。另外,源代码中还要实现一个注解为SpringBootApplication的Java类和它的main方法,以及其他的一些固定实现,比如单元测试方法等等。Spring社区为了简化这一系列的过程,而为Spring Boot开发人员提供了Spring Initializr初始配置工具。当打开了http://start.spring.io 后,就出现了如下的这个页面:

在这里,我们可以通过选项和输入的方式设置以上提到的各种参数和项目的元数据,然后选择相关的依赖包,最后点击Generate,然后一个zip包就被产生并下载到了本地。使用常用的IDE工具,比如IntelliJ IDEA,把zip包import进去,一个新的初始Spring Boot项目就产生了,极大的简化并加速了创建新项目的过程。

TAP应用加速器

以上我们已经看到了Spring Initializr对Spring开发人员工作的帮助。但是Spring Initializr还是有它的局限性,首先它是一个公网的Saas服务,不能成为企业的私有模版仓库。其次,它只支持Spring Boot的项目,不支持其他的例如Go,C#,PHP,Node.js等语言框架。最后,由于它是面向大众的服务,不能做一些定制化的改变。所以,必须要改进这些不足,才能打造一个私有化的企业应用模版仓库。我们的解决方案就是Tanzu Application Platform里面自带的应用加速器(App Accelerator)。

我们把每一个模版 称为一个加速器(Accelerator)。我们来看一下应用开发人员怎么使用应用加速器来创建一个初始项目。打开TAP的GUI界面,选择了左侧栏里的App Accelerator,可以看到在其中已经内置了不少加速器样例,有使用Spring,Node.js,C#等等,如下图:

这里我们选择Tanzu Java Web App,它是一个Spring项目模版,需要填写了一些参数,诸如项目名称,镜像仓库存储前缀等等:

回顾参数并点击Generate Accelerator:

一个含有初始项目的zip包被生成,然后可以下载回本地:

将下载的zip包在常用的IDE,例如IntelliJ IDEA中打开后,就成为了一个初始的应用项目,整个过程简单快速!

创建自己的应用加速器

在以上的示例里面,作为开发人员已经感受到了使用加速器的便利。那么作为应用架构师,模版的创建者角色,该如何来创建一个自制的加速器呢?最方便的方法是在一个已有的样例加速器的基础上加以定制,然后生成一个新的加速器。样例加速器可以在 https://github.com/sample-accelerators/ 这里找到。还是以Spring样例加速器为例,首先我们下载样例加速器Tanzu Java Web App:git clone https://github.com/sample-accelerators/tanzu-java-web-app.git

在这个Spring样例加速器里面,描述文件是accelerator.yaml,我们来看看该文件的一些基本结构:

这一节里面有显示名称,描述,图标和标签的设置。

这一节里有输入参数的定义。

这一节里有文字替换的设置。

加速器的描述文件所有写法可以参照https://docs.vmware.com/en/Application-Accelerator-for-VMware-Tanzu/1.1/acc-docs/GUID-creating-accelerators-accelerator-yaml.html, 在这里就不再赘述了。

为了展示效果,我们把display Name名称改成My Tanzu Java Web App,然后把整个加速器推送到私有代码库里面。最后使用Tanzu命令或者使用yaml文件建立自己的加速器,示例yaml文件如下:

这里主要设置git仓库地址和branch名称,然后使用kubectl create命令把yaml配置导入kubernetes。一旦成功,就可以通过Acc Accelerator管理界面看到新建的自制加速器了:

应用加速器之价值总结 开发部门设立了应用加速器后,对于新的项目就可以设置项目规范和应用的开发规范并且有相应的加速器借鉴。开发架构师就可以总结典型的成功项目作为模版和标杆,并且发布出来作为加速器,便于快速推广和复制。哪个项目做得好,也可以再贡献回来给别的项目组借鉴。慢慢的,开发部门的加速器积累得越来越多,最后会形成一个丰富多彩的应用知识库。

作者简介

熊铭杰,VMware大中华区应用现代化部门高级解决方案架构师,在加入VMware之前,曾先后任职BEA System、IBM、Redhat等企业。多年来一直从事企业级软件开发、中间件和云原生相关领域工作,对企业级软件开发和架构设计、微服务架构设计以及容器平台的架构设计、软件开发、实施和运维等工作具有丰富的经验积累;CNCF认证CKA工程师;VMware认证Spring Professional工程师。

来源|公众号:VMwareTanzu云原生

{{o.name}}
{{m.name}}

猜你喜欢

转载自my.oschina.net/u/4238514/blog/5556864
今日推荐