什么是平台工程?

平台工程是一套设计、搭建工具链与工作流的流程,可帮助软件工程企业具备自助服务能力。这涉及创建包含集中式工具、服务和自动化工作流的内部开发者平台 (IDP),以简化开发流程并消除业务复杂度。

平台工程师负责设计、实施和维护这些平台。他们提供更新、监控基础架构、支持平台与应用,并推行自助服务功能与工作流自动化

本文将探讨平台工程中的核心概念、平台工程师的核心职责,以及平台工程工作流示例。还将探讨平台工程的优势与挑战,以及所使用的工具与技术。

平台工程中的核心概念

平台工程在软件开发流程中与 DevOps 原则和 IDP 相互关联。以下是这些核心概念的定义。

DevOps 是一套融合开发 (Dev) 与运维 (Ops) 的实践与工具,强调协作、自动化与持续改进。该模式提倡持续集成、持续部署 (CI/CD) 与基础架构即代码 (IaC),以支持高效的软件交付。

IDP(如 Compass)使用该 DevOps 模式,为开发者提供统一界面来访问工具、自动化 CI/CD 管道、管理环境并监控性能。

平台工程负责设计、搭建和维护 IDP。同时,它对提升组织能承载的复杂度上限也起到至关重要的作用。复杂度上限指团队在能够应对的复杂度范围内所能承受的上限—一旦超出这一限度,就会影响工作满意度、软件质量与软件开发效率。

平台工程师的核心职责

平台工程团队负责创建开发者用于开发和部署的内部工具和环境。他们必须确保平台符合组织的特定需求,同时提升开发者体验。平台工程师聚焦自动化、安全与可扩展性,以打造易用、安全且高效的平台。

平台工程团队还尝试通过从日常工作中抽象出组织复杂业务,从而减轻认知负担。如果实施得当,平台工程能让团队将更多时间投入软件开发。

以下是平台工程师的部分核心职责:

  • 设计与实施基础架构:平台工程师使用 IaC 工具设计和实施可扩展、可靠且自动化的基础架构。设计与实施可确保一致且可重复的基础架构管理,减少人为错误,并加快部署流程。

  • 搭建 CI/CD 管道:工程师搭建并维护 CI/CD 管道以实现软件交付自动化。此过程包括应用代码变更、运行自动化测试以及无缝部署更新,以确保快速可靠的软件发布

  • 维护与扩展平台:平台工程师维护并扩展平台,以满足组织不断增长的需求。此过程包括使用编排工具管理容器化应用,从而确保高可用性和优化的性能。平台工程师添加自定义工具与新服务,或修改现有工作流,以使平台适应不断变化的需求。

  • 实施安全措施:工程师实施强大的安全措施与标准,以保护基础架构与应用。此实施涉及自动化安全扫描、执行合规性策略以及管理访问控制。这可以防范漏洞,同时保障业务符合监管要求。

  • 协作与支持:平台工程师与开发和运维团队协作,以提供支持并确保平台平稳运行。他们与这些团队紧密合作,以了解其需求、排查问题,并持续改进平台,从而提升开发者的工作效率与运营效率。他们可能会使用工作流管理工具来促进这种协作。

平台工程工作流

平台工程工作流确保采用结构化的方法来搭建和维护稳健、可扩展且安全的平台:

  1. 需求收集:平台工程师与利益相关者合作,以了解开发和运维团队的需求和要求。此阶段涉及确定支持企业目标所需的工具、技术与流程。这通常包括创建流程图,以可视化平台的组件和交互。

  2. 设计与架构规划:工程师根据收集到的需求设计基础架构与架构。此过程包括选择合适的技术、定义系统组件以及创建详细的架构图,以确保可扩展性、可靠性和安全性。

  3. 实施与开发:平台工程师使用 IaC 和其他自动化工具来实施基础架构与平台组件。工程师开发 CI/CD 管道、配置容器编排并集成必要的服务,以搭建统一的平台。

  4. 测试与验证:平台每一次变更上线生产环境前,都会开展全面测试,以验证平台功能、性能与安全性。此步骤包括自动化测试、负载测试和安全评估,以确保平台满足所有要求和标准。

  5. 部署与维护:工程师将平台部署到生产环境。持续的维护可确保其稳定性和性能。此步骤包括监控、扩展,并根据需要应用更新或补丁。

  6. 反馈与迭代:持续收集用户与利益相关者的反馈,有助于发现需要改进的领域。工程师对平台进行迭代,进行必要调整与改进,以更好地满足企业不断变化的需求。他们可能使用 Scrum 或看板等敏捷方法来管理这些迭代。

平台工程的优势

平台工程具有多种优势,能够显著优化组织的软件开发与交付流程。其部分核心优势如下:

提升开发者工作效率

平台工程旨在简化并自动化各类任务与流程,让开发者能将更多精力投入代码编写与功能交付工作。依托自助服务平台、自动化工作流及可复用组件,开发者无需耗费大量时间处理重复性手工任务,而把更多精力投入到增值活动上。

缩短应用上市周期

借助平台工程,企业可通过自动化、标准化和精简的流程来缩短软件交付生命周期。CI/CD 管道、自动化测试和 IaC 实践能够实现更快、更频繁的发布,从而缩短新应用和功能的上市周期。

提升应用可扩展性与可靠性

平台工程能促进容器化与编排工具等云原生技术的采用。这些技术可构建高度可扩张、高弹性、高容错能力的应用,即便在高负载或系统故障场景下,也能保障稳定运行性能。

降低运营成本

平台工程通过实现基础架构配置、配置管理和部署流程的自动化,助力企业优化资源利用率并降低运营成本。标准化平台和可复用组件还能最大限度地减少重复工作与技术债务,从而有助于节约成本。

增强用户体验

平台工程旨在通过为开发者提供工具、资源与环境的自助访问权限,打造顺畅高效的开发体验。工作流管理解决方案与项目规划工具支持这种体验。开发者能够更自主地开展工作,减少摩擦和瓶颈,并享受创新与协作文化。改善开发者体验能提升员工工作满意度,有助于企业吸引并留住核心人才。

平台工程所面临的挑战

平台工程涉及应对多项复杂的挑战,以维护高效可靠的系统。

平衡创新与稳定性

平台工程师必须通过创新来优化系统,同时确保系统的稳定性与可靠性。快速变更可能会带来风险。在采用新技术与维护稳定环境之间找到恰当的平衡至关重要,可通过周密的项目规划与项目路线图来实现。

管理技术债务

企业为满足眼前需求而采用快速修复方案或欠佳的解决方案时,技术债务会不断累积。平台工程师必须处理此类技术债务,以防止其阻碍后续开发,并保障系统长期健康运行。

紧跟不断发展的技术

技术格局在不断演变。平台工程师必须随时掌握最新的工具、框架与最佳实践。这需要持续学习和适配调整,才能有效整合新技术。

确保平台安全

工程师必须实施稳健的安全措施,以防范漏洞并确保符合监管标准。这涉及对安全协议的持续监控和更新。

平台工程中使用的工具与技术

在决定开发方法时,平台工程师通常会对比 看板与 Scrum,以确定哪种方法最适合其团队的需求和目标。

具体的工具选择取决于企业的技术栈、云提供商与需求。不过,平台工程中使用的核心工具与技术包括:

  • IDP 是由各类工具、服务与流程组成的内部产品,支持软件团队更自主、更快速地交付软件

  • 云平台提供平台工程所基于的底层基础架构与服务。而 Compass 这样基于云的 IDP 方案简化了入职流程与可扩展性,无需承担维护自有平台的成本和开销。

  • CI/CD 工具支持自动化的应用构建、测试与部署。它们对于在 IDP 内实施可靠、可复用的软件交付管道与核心集成至关重要。CI/CD 管道能确保代码变更得到无缝集成与部署。多云持续交付平台通过自动化部署管道来管控发布进入生产环境的时机,从而实现软件变更高效、稳妥发布。如果上一轮发布失败,此类平台会阻止新一轮上线,同时简化版本回滚操作。

  • 事件管理功能支持团队快速响应并解决问题。将 IDP 连接至 Jira Service Management 等工具,可提供自动警报、根本原因分析与事件跟踪,以便团队能够在统一位置查看影响其服务运行状况和可靠性的因素。

  • IaC 工具支持通过代码定义和管理云基础架构,实现一致化、可复用的基础架构调配。

  • 容器技术可将应用打包为可移植、相互隔离的容器。容器编排平台能够自动化完成容器化应用的部署、扩张与管理工作。

  • 可观测性与监控工具提供收集指标、日志和追踪的功能,以便直观掌握应用与基础架构的运行状况与性能。IDP 可集成可观测性工具,包括应用性能监控、日志记录、错误跟踪和追踪,以提供有关应用性能与资源使用情况的实时洞察信息。团队可以从平台监控其应用,从而更快速、更轻松识别和解决问题。

  • 安全与合规工具协助进行安全扫描、密钥管理、策略执行和合规管理。互联的安全工具(如自动化漏洞扫描)结合默认的合规管控与安全记分卡,可确保应用符合组织安全标准,从而减少开发者进行手动安全管理的需求。

  • 服务网格工具提供专用的基础架构层,用于管理微服务架构中的服务间通信。它们支持流量管理、安全性和可观测性等功能。

借助 Compass 优化平台工程

平台工程是软件开发中一个复杂但至关重要的领域,需要在创新与稳定之间达到精准平衡。如果实施得当,平台工程可为开发者提供自助服务能力,加快软件交付速度,并提升应用可靠性。

Atlassian 旗下的 IDP Compass 已助力数千家组织赋能平台团队,规模化优化开发者体验与软件开发流程。