背景

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

TAP 系列文章9 | 应用开发加速器相关推荐

  1. TAP 系列文章6 | TAP的应用模型

    云原生12要素应用模型 大家可能听过Netflix的故事,在AWS Region故障的时候,它的服务仍然没受到什么影响,能继续对外提供流媒体服务.他们遵循的就是云原生应用与云平台的契约:即使云平台再可 ...

  2. iPhone开发系列文章(四)-开发iPhone应用程序(一)

    本人翻译的Apple Dev Center的技术资料并稍作修改. 转载请注明出处:http://blog.csdn.net/zhyzh2046/ 从较高的层面看,开发iPhone应用的过程与开发Mac ...

  3. [转载]C# WinForm开发系列 - 文章索引

    该系列主要整理收集在使用C#开发WinForm应用文章及相关代码, 平时看到大家主要使用C#来开发Asp.Net应用,这方面的文章也特别多,而关于WinForm的文章相对少很多,而自己对WinForm ...

  4. Flex与.NET互操作系列文章

    本系列文章主要介绍了关于Flex与.NET结合开发中的一些互操作性,包括网络通信.数据加载.数据传输.文件传输.以及应用于Flex与.NET协作开发的通信网关开源项目FluorineFx的相关知识点. ...

  5. Flex与.NET互操作系列文章索引

    本系列文章主要介绍了关于Flex与.NET结合开发中的一些互操作性,包括网络通信.数据加载.数据传输.文件传输.以及应用于Flex与.NET协作开发的通信网关开源项目FluorineFx的相关知识点. ...

  6. 微信公众号开发系列-玩转微信开发-目录汇总

    引言 最遗憾的不是把理想丢在路上,而是理想从未上路. 每一个将想法变成现实的人,都值得称赞和学习.致正在奔跑的您! 在现在这个无处不在的互联网背景下,各种应用已不再仅仅局限于网页或桌面应用了,IOS. ...

  7. Oracle APEX 系列文章2:在阿里云上打造属于你自己的APEX完整开发环境 (准备工作)...

    本文是钢哥的Oracle APEX系列文章中的第二篇,完整 Oracle APEX 系列文章如下: Oracle APEX 系列文章1:Oracle APEX, 让你秒变全栈开发的黑科技 Oracle ...

  8. Web开发兼容性系列文章(一):不同设备浏览器的userAgent值大全

    Web开发兼容性系列文章(一):不同设备浏览器的userAgent值大全 Posted on 2011-07-22 12:37 随它去吧 阅读(1388) 评论(11) 编辑 收藏 http://ww ...

  9. iOS开发系列文章(持续更新……)

    iOS开发系列的文章,内容循序渐进,包含C语言.ObjC.iOS开发以及日后要写的游戏开发和Swift编程几部分内容.文章会持续更新,希望大家多多关注,如果文章对你有帮助请点赞支持,多谢! 为了方便大 ...

最新文章

  1. 你有哪些 Deep learning(RNN、CNN)调参的经验?
  2. 数据库从表中随机选择一行数据
  3. opengl代码实例_OpenGL-打开一个窗口
  4. 求知无限,刷新.NET 中国社区
  5. TypeScript + Gulp + 混淆 + 打包
  6. 简单实现ToolStripMenuItem(菜单栏)的单选效果
  7. 自动驾驶的“第三眼美女“什么时候才能出现?
  8. 有向图(网)、无向图(网)的构造以及遍历
  9. as的断点调试与高级断点调试
  10. 程序员用代码求救, 同事“秒懂”
  11. 重磅!2023 IEEE Fellow名单出炉:唐立新、宗成庆、朱军、姬水旺、刘威等入选
  12. 用什么来做用户行为分析?七个实用工具推荐给你
  13. 【Python大作业】耦合网络信息传播
  14. 腾讯云香港轻量新IP段简单测评
  15. win10+NVIDIA geforce gtx 960M+cuda9.0+cudnn7.1+pytorch_1.1.0+torchvision_0.3.0---已解决
  16. 全球及中国氢燃料电池汽车行业销售规模与运营前景展望报告2022版
  17. 波斯顿房价 paddlepaddle 深度学习
  18. 【电力电子】【2016.05】【含源码】三相四线制配电系统的电流不平衡校正
  19. 屏蔽在线视频广告的方法
  20. 五个计算机常用应用软件,这些电脑软件很常用 日常必备软件就是它了

热门文章

  1. 关于FPGA设计中的参数化设计
  2. word文档批量调整页码-wordAID
  3. 新能源发电系统家用储能防逆流监测电表
  4. 2021考研真题及答案解析
  5. 不同计算机用户的区别是什么意思,计算机工作站是什么意思(专业级后期工作站配置必须搞懂的7个问题)...
  6. Android性能优化:那些关于Bitmap图片资源优化的小事
  7. explicit的用法
  8. 笔记本保养的8个注意事项
  9. 弹出保存对话框html,IE浏览器打开网页弹出保存对话框的的原因及解决方式
  10. SPOJ Problem 2157:Anti-Blot System