技术1 分钟阅读时间

开启寻找银弹之旅,平台工程已在路上

文章来源于《CIO时代网》,作者邹震

计算机科学家布鲁克斯在《没有银弹》一书中,将软件工程中存在的陷阱比做是可怕的人狼,这是一群可以完全出乎意料地从熟悉的面孔变成可怕的怪物,而战胜人狼的必备武器是银弹,对软件工程而言,银弹是能够10年内大幅度地提高软件的生产率、可靠性和简洁性的方法。

但布鲁克斯的观点却异常悲观:在软件工程中,“没有银弹”,没有一种能够遏制软件向“怪物”变异、同时还可大幅提升开发效率和产品质量的武器。布鲁克斯的观点在被软件工程学经典巨著《人月神话》引述之后,成为一个软件界人人关注的话题。只不过,20年过去之后,人们依然没有放弃努力,还在寻找“银弹”。而借助平台工程的崛起,VMware Tanzu正在不断接近“银弹”。

寻找“银弹”的征程

不得不说,布鲁克斯的预见力实在是太超前了。二十年过去,那些让软件工程落后进度、超出预算、存在大量缺陷的因素还是层出不穷。不仅如此,软件开发人员所处的环境也在发生着巨变,当企业越来越多地把数据存储、应用于云端时,云原生应用开始占据主流地位。IT与核心业务结合得越发紧密,让应用的开发速度变得越来越快。

而软件工程的方法,也顺势从瀑布式开发向前进不断进化。在产品既要保让客户预期质量,又要快速推向市场的情况之下,角色之间的传统界限变得越来越小。于是,一系列的开发方法和管理方法也在向前更新。

虽然与站点可靠性工程(SRE)一起流行,但DevOps的普及性显然更高。得益于敏捷开发的出现,软件工程开始进入新的时代,CI/CD、管道自动化、容器化部署和分布式服务等技术,成为了软件开发者的必备武器。

但不得不说的是,软件工程领域尽管涌现了大量新技术和理念,但“银弹”并没有出现。VMware Tanzu(业务)大中华区总经理邓惠钧将DevOps的不成功归结为以下几个原因:“DevOps在落地的过程中存在许多难题,其中最主要的有两个。一是公司策略已经走得很远了,但却发现技术能力没跟上,很多DevOps流程因为这个原因,落地情况并不好。第二个难题是不同的开发团队都有自己偏好的工具和流程,所以不同团队做的东西都是重复性的,企业也没有办法重复利用,从而出现了很多DevOps孤岛。”

在这样的情况之下,平台工程登场了。同许多新兴技术一样,平台工程的真正含义还在探索之中,业界认同的平台工程是为开发人员构建和维护自助服务平台,从而充当起开发人员和基础设施之间的屏障,进而可以让软件开发者减少软件开发所需的工作量,更快地将代码投入生产。

在过去的20年间,软件工程领域一直存在着一个非常明显的趋势,就是组织越来越依赖于自动化工具。到了平台工程,内部开发者平台(IDP)开始承担起这一角色。IDP 是一个包含自助式云原生工具和技术的平台,开发人员可以使用这些工具和技术来构建、测试、部署、监控或执行与应用程序开发和交付有关的几乎任何事情,同时尽可能减少开销。

当把IDP开发者平台集成进来之后,VMware Tanzu也在平台工程领域开始发力。VMware现代化应用事业部技术总监俊刚表示:“针对平台工程,VMware并不是一个新入者,从容器技术、云原生开始,VMware就在这个领域经营多年。在平台工程概念去年年底被提出来之前,我们就一直在与平台工程相关联的领域提升开发者效率。”

而要说到VMware Tanzu将在平台工程中所起的作用,还需要从VMware Tanzu自身的特点说起。

神秘的Tanzu

从发布的第一天起,VMware Tanzu就被披上了一层神秘的色彩。在斯瓦希里语中,“tanzu”指的是一棵正在生长的树枝;在日语里,“tanzu”是指由模块组成的老式橱柜。而对于VMware而言,Tanzu代表着不断进化的解决方案,用以帮助用户构建、运行和管理现代应用程序。

Tanzu听上去很神秘,拆解开来我们却会发现大量熟悉的技术和产品,但形成一个新组合之后,却让人看难看清它的全貌。原因在于Tanzu并不是一个产品,而是以 Kubernetes 为平台,包含了应用的构建、运行和管理的多个产品。象Spring以及Spring衍生产品、Web服务器Tomcat、缓存中间件 Redis、消息中间件 RabbitMQ、Greenplum 数据引擎等知名开源产品,都可以在Tanzu中找到。再加上开源的Kubernetes平台,如果我们了解到VMware是Kubernetes排名第二的主要贡献者,我们就会明白VMware Tanzu本质上就是一个开放型的解决方案。

在邓惠钧看来,尽管平台工程还处于发展阶段,但平台工程却一定要达成三个目标:“平台工程首先要建立一个统一、可持续的解决方案平台,而不是为某一个单一的项目而做成的解决方案,这就要求把应用开发者当成这个平台的用户。第二是要让企业可以不断重复循环利用应用开发代码和工具,第三则是做好应用开发的安全防护工作。”

VMware Tanzu经过几年的演化,从平台工程能力角度来看,演化出基础架构、应用平台和管理实践等几大模块。因此,VMware Tanzu本身就是平台工程的一个统一、可持续的解决方案平台。

在其中的基础架构中,VMware利用Tanzu Kubernetes Grid将容器技术嵌入到了基础架构层,还利用Aria提供了一整套面向企业级数据中心或云环境的管理工具,可以实现对基础架构的整体监管控制工作。这样当开发团队或运维团队需要资源供给时,就可以通过服务目录、资源动态供给等多种方式,弹性、高效、安全地获得这些资源,从而可以专注于企业应用本身的开发或运营。

在VMware Tanzu的框架里,传统PaaS与IDP开发者平台共同构成了应用平台。在平台工程概念出现两年之前,VMware就在Paas平台上做提升开发者效率和体验的新特性。当平台工程概念成形之后,针对平台工程,VMware新发布了Tanzu Application Platform,将很多面向IDP开发者平台的传统PaaS能力涵盖其中。例如Java在开发者群体中是主流的开发语言,开发者在应用Java时,常会用到非常流行的Spring框架,而Tanzu Spring Runtime的出现,就可以让开发者更好地利用Spring框架。

在应用平台之上,还有由平台即产品管理方法和平台团队分工与角色组成的Tanzu labs Services。准确地说,平台工程并不仅仅是一个平台,在平台之外,还有一揽子工具、方法论、流程。成功的平台工程需要形成先进的产品开发理念,而Tanzu labs Services不仅涵盖了平台即产品管理方法,还提供了平台团队分工与角色的诸多功能。

谈及平台工程中的代码复用和安全性,俊刚表示:“代码复用的基础是先要有安全、高质量的代码。开发人员在做软件开发时会有非常大的自主灵活性,他们可能在网上搜一堆代码,修改后就保证功能正常运行。如果企业在采用这些代码时,只关注所需的功能是否能够实现,而不考查代码的安全性,就会出大问题。因为其中可能会用到开源组件,这些组件可能会存在着安全风险,就算目前是安全的,可能也需要定期升级。所以我们的做法,是扫描这些提交的代码,然后形成一份报告。我们还会在平台中嵌入一个知识库存,与报告中的问题进行对比,然后提醒开发团队,他们用到组件可能存在安全漏洞,需要如何处理。通过软件物料清单,保证代码的安全性。”

平台工程的实现之路

某国内股份制银行曾对DevOps做了非常多的研究,DevOps涉及到整个开发的全流程,这家银行的开发团队在代码管理、测试、生产环境的产品部署,特别是在CI/CD流程方面,已经做了大量的工作。这家股份制银行所采用的IT技术在国内已居于领先的地位。但VMware就平台工程的策略和工具与这家银行进行沟通之后,却发现这家银行遇到了DevOps实施中的常见问题。

这家银行用了很多DevOps工具,但因为各个部门都自主选择工具,所以工具之间的联通性出现了问题。在采用工具解决代码提交问题之后,在自动化构建时却选用了另一种工具,这样工具之间的衔接就出现了问题,形成了一个个孤岛。所以这家银行的DevOps实施,效果只达到了一部分,开发效率的提升效果并不理想。

此外,由于DevOps流程按照多阶段不同团队负责的方式去做,所以整个团队缺乏从最初源代码到最终上线的全面管控视图。这家银行进行IT系统建设时,就只能看到阶段性报告,而没有一个完整视图。这样当应用上线之后,如果出现问题,要回溯去查问题究竟出现在哪里时,因为系统与系统之产的数据没有联通,就只能在不同系统中一个接一个地查。而当这家银行采用了Tanzu Application Platform之后,这两个问题就迎刃而解了。

关于平台工程的落地,俊刚强调:“平台工程一定不是炒一堆的概念,卖一堆的产品,而是需要用户深度参与。我们拒绝做纯产品公司,我们是通过服务去帮助用户解决问题。所以我们需要和用户进行深度沟通,如果用户不告诉我们问题,我们也是一摸黑,什么情况也不知道。此外还要经历一个很重要的探索实践,我们会派出应用专家、平台专家,与用户的关键角色一起研究最佳实践。这个过程中,业务部门会对IT提需求,我们会帮助把当前系统架构整体梳理一遍,然后跟用户开诚布公地讲问题出在哪里。接下来给出工作步骤和内容,这里边可能涉及平台建设,也会涉及管理流程甚至是团队人员如何构建。”

从中不难看出,虽然平台工程概念推出的时间还不到一年,但VMware却已利用它去帮助用户解决问题了。一场应用平台工程提升开发效率的改造,已经开始了。