Steven
作者Steven课题专家组·2024-02-22 15:37
IT顾问·steven

理解平台工程的本质

字数 2910阅读 599评论 2赞 1

平台工程是什么?

平台工程是为了让软件工程团队能够更有效的交付软件应用,以使客户获得有竞争力的业务优势,构建的一些列研发、运维运营工具平台,以更高效的方式持续交付软件应用系统和确保软件稳定运行。平台工程的目的是帮助软件团队提升和持续交付软件业务价值 。平台工程为软件研发人员、测试、运维人员等提供一站式的应用生命周期过程所需的所有资源、工具、平台、接口服务以及库文件等(如图),也相当于给软件人员提供一个包含资源、技术工具、数据和业务应用接口等的环境,不说无所不包的自服务环境,至少说是相对全面的软件工程工具平台等支持,足不出户就可以完成业务应用的研发和部署运行运维等整个生命周期的工作。

平台工程本质是自服务敏捷基础设施,为使用者抽象并封装了基础设施能力,提供标准化的A PI 等。例如通过基础设施即服务( IAAS)API创建虚拟服务器实例、网络和存储 卷等 , 应用自动化 的配置管理和 流程 ,使应用程序和支持服务 快速执行和 运行。 对软件研发人员来说,“ 平台 ”提供研发的环境和工具,自动化 构建应用程序 组件、 构建应用程序 部署 环境,部署应用程序,并启动必要的流程 等 。 研发人员 不必考虑他们的代码在哪里运行,也不必考虑是如何到达那里的, 都由 平台透明地处理这些问题。

但这些“平台”或说自服务敏捷基础设施从哪里来?通常来说,是买不来的。首先每家公司都有自己的技术栈、技术积累、业务方向和重点,需求是不一样的;其次,“平台”不是一个平台,而是一些列相互关联和相互支撑的平台工具体系,一家厂商通常是没有能力构建和满足特定客户需求的这样的能力体系的。多家厂商面临着单体系统建设集成、重复建设等问题,因此,“平台”往往需要自己逐步构建,这就需要有相应的平台工程研发和运维团队,专注于基础设施自服务工具的规划、设计、研发和运维等。也因此,平台工程并不适合大部分企业。平台工程的构建需要有足够的技术人员团队和实力,以及足够的业务需求,否则就没有必要性。

平台工程中的“平台”

平台工程的“平台”不是云平台,虽然可以通过云平台为底座来构建。Mauricio将平台定义为对知识进行的编码,从而为开发团队提供高效所需的所有工作流程。平台工程可以通过云原生 Kubernetes 来构建,Kubernetes 相当于操作系统的内核,基于Kubernetes 构建云原生PaaS 平台(云原生操作系统),提供应用研发、应用托管、应用运维等整个软件应用生命周期过程所需的平台、工具、API 接口等的体系,包括软件的研发、测试、部署、运行、运维、监控、日志等工具、平台和自动化流程等等。

平台工程的平台至少包括基础设施资源平台、PaaS平台、中间件工具、平台可复用服务等(如上图)。平台可复用服务从中台架构(“中台”的概念太过混乱,这里是优化的中台架构,中台实现的是经过抽象和封装的以微服务为粒度的企业级可复用服务,不包括支撑这些服务的平台和工具)来说,就是中台架构中的在企业内共享和复用的服务,服务粒度可以是微服务,和平台工程所推崇的A PI 化是一致的。因为API 化,才能便利构建自动化的流程。构建平台工程,就是实现这些自服务能力,赋能软件研发运维人员敏捷交付业务应用,再赋能业务人员敏捷响应客户需求,也就是交付客户价值。

平台工程的价值

有人说平台工程是典型的的赋能方案,这点我非常赞同。平台工程主要目的就是为了提供给研发人员等完成研发等工作所需的各种工具平台和服务等。不过平台工程的价值不仅仅限于赋能,它是技术发展的结果。云计算提供了一个资源融合的基础设施底座,分离了应用和基础设施的耦合性,可以让研发人员专注于应用的研发。因此云计算在基础设施平台上实现了统一的方案。云原生为企业的敏捷研发、变更、部署、运行等提供了解决方案,驱动企业以云平台为底座构建统一的基础设施平台,避免重复建设、提升协作效率、降低成本并敏捷响应业务需求。

一些大企业业务繁多,团队众多,传统单体系统建设模式下,面临着各团队各自为政、重复投入、重复建设、集成繁琐、共享困难等问题。数字化使业务之间的交互越来越多,IT 应用数据和功能需要频繁协作,从而也导致I T 团队、IT与业务之间等的协作增多。数字化趋势要求企业不得不考虑内部团队和业务之间的协作和融合,以更快的响应跟上生产力变革。这就要求内部系统、工具平台等的整合、融合,疏通内部协作,构建统一的基础设施,自服务工具、平台、流程等,通过复用和自动化,环境一致性提升交付效率,部署效率,变更效率,可观测性能力等。

平台工程落地

有人把平台工程看作是内部开发平台,这个定义有点窄了。平台工程是为软件人员构建和维护企业内部的自助服务工具平台,却不仅仅是内部开发平台,而可以看作是软件工程平台,是个系统性的工程。就像很多人对DevOps 的片面理解一样,把DevOps 看作是一个研发度量平台,误解了这些概念的本来目的。

平台工程本质上是自服务敏捷基础设施,从这点上理解,就相对容易实施和落地。自服务敏捷基础设施包含研发平台,也包含部署运行运维监控平台、工具等,还有就是企业内部沉淀的可复用服务,以及GPU 、CPU、存储等基础设施资源等,这些都是基础设施的部分。平台工程的落地需要专业的平台工程团队来规划实施。平台工程团队和S RE 的工作有些类似,但侧重不一样。平台工程团队不做业务应用系统的研发,只负责自服务基础设施平台工具的建设、维护和运营(平台工程团队内部实现研发运维一体化),赋能业务应用研发团队完成业务应用的生命周期过程(业务应用研发团队内部也实现研发运维一体化,使用基础设施工具平台,研发运维的是业务应用);平台工程团队和业务应用团队职责清晰,业务应用团队是平台工程团队的内部客户,提需求并由平台工程团队完成这些需求;SRE 侧重于服务和系统的可靠性,虽然也开发自动化的工具,但目的不是赋能业务应用研发团队,而是为了消除重复性的手工工作。

平台工程落地很重要的一点是API的抽象和封装。我们把中台架构优化为中间层是可复用服务,而把支撑这些服务的工具平台看作后端层,这就明确了中台架构的可复用粒度,中台的落地也就很清晰了。平台工程同样需要构建这些可复用服务,松耦合后端工具。举例来说,消息的发布订阅服务,用Kafka 可以实现,用 Rabbit MQ也可以实现,如果通过消息服务的封装,松耦合 Kafka 、RabbitMQ 等消息中间件,则不会受制于具体的某个工具。哪天K afka 不让用了,则可以快速切换到其他消息中间件工具。这就是API的价值,隐藏底层的复杂性,隔离应用和基础设施工具,提供一层稳定的可复用接口层。

实现基础设施 API 的目的,也在于能够简化开发人员从平台使用服务的工作。可以自服务实现相关的业务流程。比如如果需要一个开发环境,调用Environment 接口,输入配置需求,就可以通过快速自动地构建一个所需的环境。

每家的实际不一样,所以平台工程在落地是也会不一样。不过基本思想是一致的。总的来说,无论概念怎么变,本质是不变的。认识到概念的本质,就不会被众多的概念牵着鼻子走。

如果觉得我的文章对您有用,请点赞。您的支持将鼓励我继续创作!

1

添加新评论2 条评论

menglunyangmenglunyang课题专家组系统工程师中国银行
2024-02-29 10:01
对平台工程的定义、目的、组成、落地等方面都做了清晰的阐述,也提出了平台工程的优势和挑战,以及如何通过 API 化、自服务化、产品化等方式来构建和优化平台工程。对于想要了解和入门平台工程的读者是很有帮助的。
lcclcc其它城市商业银行
2024-02-28 15:38
平台工具的使用和搭建还是要综合考虑自身的各方面特性
Ctrl+Enter 发表

本文隶属于专栏

趋势观点
本专栏的文章全部来自国内外行业或领域一线最强实践专家的深刻洞察,他们的分享如同为正在摸索前进的更多同行和企业带来一盏明灯。他们的观点也为企业迎接趋势挑战、克服各种困难提供了最好争议的标的。希望有更多一线最强实践专家加入趋势观点栏目,你们是推动中国企业IT应用最值得尊敬的人。

作者其他文章

相关文章

相关问题

相关资料

X社区推广