从网站到企业工作负载,软件对现代企业的生产力和收入至关重要——但软件开发面临严重的成长痛苦。
当今的IT环境非常复杂,迫使开发人员掌握越来越多的技术和工具。敏捷和持续的开发范式加快了开发进度,DevOps将运维责任添加到开发人员工作流中,而微服务架构需要额外的指标收集和动态可扩展性。所有这些变化都伴随着对复杂第三方平台(例如公共云)的更大依赖。
这种必要知识的范围给开发人员带来了信息过载的负担,这可能会影响生产力和产品质量。企业通过实施抽象层来应对这些挑战,旨在使开发人员免受工具和服务底层基础设施某些方面的影响。这些抽象层称为平台,由企业内专门的软件工程团队创建和维护。如今,平台工程正在成为支持繁忙的DevOps员工的重要手段。
什么是DevOps?
DevOps方法旨在加速和改进开发生命周期并创建卓越的软件产品。DevOps模型包含共享所有权、广泛的流程和工具自动化以及快速反馈以推动开发流程。
DevOps环境依赖于流程、协作等文化基础以及广泛的开发工具的组合。DevOps中有两个基本考虑因素:敏捷性和部署。
敏捷
DevOps的第一个关键考虑因素是敏捷和迭代开发。传统的Waterfall开发,一个项目完全定义、编码、测试,然后一次发布,导致开发和测试周期长。
在DevOps模型中,软件项目作为一系列快速的小部分进行开发、测试和发布,有时每天都会发布新版本。这使开发人员能够通过新想法进行创新并承担更多风险,同时确保更好的测试和卓越的产品行为。
部署
DevOps模型中的第二个考虑因素是开发与运营任务的集成。
传统上,软件开发人员会依靠单独的运营团队来部署、配置和维护软件产品。相比之下,DevOps使开发人员能够自行部署和管理软件版本。这使开发人员可以更深入地了解和控制生产中的软件。
DevOps过载的风险
然而,向DevOps、敏捷开发范式和CI/CD的转变带来了概念负载的挑战。
DevOps团队不只是编写软件代码。今天的DevOps团队肩负着广泛的责任,包括:
处理多种编程语言。
使用团队的IT基础设施,包括服务器和存储。
掌握软件开发生命周期中的各种工具,包括集成开发环境(IDE)以及测试和部署工具。
越来越多地参与项目成果的业务方面,例如收入目标。
什么是平台工程?
平台工程的目标是创建有团队的资源和服务组,开发人员无需深入理解或直接管理它们即可使用。这些有团队的群体,称为平台,通常是使用DevOps团队中发现的许多相同的软件开发技能和能力构建的。
平台当然不是一个新想法。例如,IDE本身是一个平台,旨在通过消除使用文本编辑器编写代码和单独的编译器来构建代码的需要,帮助程序员开发高质量代码。举一个最近的例子,完善的PaaS范式让开发人员可以例行地利用第三方云平台来完成开发任务。
鉴于与软件开发相关的不断升级的挑战和概念负担,企业正在寻求通过创建负责通过平台抽象部分开发环境的团队来减轻开发人员日益增加的负担。平台工程是创建和维护DevOps团队使用的各种软件平台的新兴角色。
平台的优点和缺点
平台通过减少相关的底层工作来加速软件开发和部署。
例如,使用开发、测试和部署工具平台意味着DevOps团队不需要安装、配置、更新和维护这些工具。这项工作由平台提供商完成,让开发人员专注于创建高质量代码的核心能力。
但平台不是凭空出现的,一种尺寸永远不会放之四海而皆准。平台本身通常被视为一种产品,必须为业务及其特定的软件开发和生产力需求创建和维护它们。因为平台是由离散的组件和服务组成的,所以它们可以随着时间的推移而改变和增强。
理想情况下,平台工程使用涉及高度自动化的工具集和自助服务功能来提高开发人员的生产力。一个设计良好的平台可以标准化开发任务和实践,从而提高DevOps用户的生产力和质量。
DevOps与平台工程
简而言之,DevOps是一种促进开发和运营团队之间协作的软件开发方法,而平台工程则为DevOps团队提供了一个用于其工具和工作流的集中平台。
乍一看,这两个想法似乎很相似,甚至可以互换。DevOps原则通常涉及集中式平台的创建;同样,平台工程通常在团队成功采用DevOps环境后实施。
成功的平台工程团队通常会与DevOps团队协作。同样,开发人员经常参与平台创建和管理的某些方面,无论是作为他们日常职责的一部分还是响应平台团队的临时请求。
然而,平台工程的目的是通过提供一致、可靠的工具和工作流程来构建软件,从根本上支持DevOps。DevOps团队可以承担任何业务项目,而平台工程师专注于创建和维护DevOps团队使用的特定平台。
在实践中,平台工程已成为DevOps机构的支持资源。平台工程很重要,因为这些团队专门提供开发人员不具备的工具知识的广度和深度。
平台工程与DevOps之间不断发展的关系
开发和平台团队密切相关。毕竟,当采用DevOps的主要好处是协作时,为平台工程创建一个新的孤岛会适得其反。
传统上,DevOps团队负责选择自己的工具,包括IDE以及构建、测试和部署工具。然后,同一个团队使用配置和自动化工具为开发过程建立工作流。
这些工作流程可能涉及数十种不同的工具。支持这种环境需要大量的时间和精力,而且开发人员对各种工具和集成的了解有时是有限的。这种知识差距会耗尽开发人员资源并延迟项目。
平台工程团队接管这些工具和工作流程的设计、实施和维护。平台团队使用工具专家来了解开发人员的需求,为所需任务选择最佳工具,执行集成和自动化,并随着时间的推移对已建立的平台进行故障排除和维护。因此,使用该平台的开发人员可以享受更高的一致性和生产力等好处,而无需详细了解平台的运作方式。
转载请注明出处:https://www.cloudnative-tech.com/uncategorized/4432.html