软件规模扩大、复杂性增加,DevOps对调试基础设施使其可供开发者构建显得越来越重要。
译自 What Does a Platform Engineer Do? And Do You Need One?,作者 Lori Marshall 是一位具有软件开发、数据库开发、数据库培训、业务分析和产品负责人经验的分析软件和IT专业人员。目前担任Ambassador Labs的产品副总裁,她拥有超过...
如果你在从事DevOps工作并正在寻找新的角色,你会有大量的机会。随着软件规模的扩大和复杂性的增加,DevOps工程师对于调试基础设施使其达到开发人员可以在其上构建的可用状态变得更加重要。
但是这种需求的扩张也导致了DevOps工程师职责的增多。因此,我们现在看到该领域的子集正在成为自己角色,比如平台工程。
平台工程师的任务是为开发人员建立他们需要的高效平台。这个角色结合了深厚的技术知识,以及理解开发人员所需的软技能,和组织了解为了发展所需的领导技能。
以下是我们如何看待这个角色,以及为什么它对于希望为开发人员提供更好体验的组织来说是一个重要的角色。
在高层次上,平台工程师的角色是提高开发人员的生产力和工程速度。平台工程师为工程师提供快速、高效和安全软件开发所需的工具和环境。通过减少开发过程中的摩擦和消除障碍,平台工程师使开发人员能更关注创造创新产品,减少运营复杂性。
这意味着他们日常在做什么?平台工程师专门于创建和维护开发人员用于构建和部署应用程序的软件平台。他们关注支持应用程序开发的基础设施和基础技术,如云服务、服务器管理和数据库系统。
他们将为公司的应用程序开发人员提供一个可以轻松用于测试和部署应用程序的“平台”。根据公司的规模,部分管理可能会包装进平台工程师管理的内部开发者平台(IDP),允许开发人员自助服务他们的部署和运维需求。
这个IDP通常包括用于自动化测试、部署、监控和扩展的工具。平台工程师负责确保这个平台对开发人员来说高效、可靠和易于使用。他们与软件开发团队密切协作,以了解他们的需求,并相应地定制IDP,以促进更顺畅、更高效的开发流程。
除了这些责任外,平台工程师经常积极参与故障排除和解决出现的任何与基础设施相关的问题,从而维护系统的整体运行状况和性能。
平台工程师在工程组织中是一个相对较新角色,但这并不意味着这个角色的职责是新的。如果你当前在DevOps岗位上更侧重运维方面,那么在另一家公司你的头衔可能就是平台工程师。其他你可能会发现平台工程是职位描述的关键组成部分的头衔包括: 站点可靠性工程师、基础设施工程师、云架构师和DevOps自动化工程师等。
这些不是相同的角色,但在范式图中它们每个都与平台工程有一些重叠。如果你发现自己有这些头衔之一,转为平台工程师是一个选项。它们与传统的运维角色不同,因为它们专注于开发和优化支持整个软件开发生命周期的工具和系统。该角色需要对软件开发流程有深入的理解。这种理解使平台工程师能够创建流水线化的、自动化的工作流程,来支持和增强他们的开发团队的效率和效果。
如果你想从类似的工程角色过渡到平台工程:
- 增强你的云和基础设施知识: 深入了解各种云平台和基础设施管理实践。这些是平台工程的核心组成部分。
- 增加你对IDP的了解: 获取有关IDP的知识。学习如何构建和管理平台,以允许开发人员自助服务和自动化开发生命周期的许多方面。这包括理解各种工具和系统的集成,以便创建一个内聚和高效的开发环境。
- 开发自动化技能: 专注于学习和掌握自动化工具和脚本语言,这对于创建高效的开发和部署流程至关重要。
- 了解系统设计和架构: 了解系统设计和架构的原则,因为平台工程经常涉及设计可扩展和可靠的系统。
由于这是一个新兴领域,这个角色会随着公司的具体需求和技术格局而改变。一个平台工程师可能会更关注基于云的解决方案和微服务架构,而另一个可能会深入参与内部基础设施和遗留系统集成。
随着公司规模的增长,平台工程师的角色可以发生巨大变化。在小公司,构建产品的工程师会选择他们的部署基础设施。随着开发人员组织成功能团队并且需要一些集中式基础设施,平台工程在大公司才真正凸显出来。
小公司
在小公司,平台工程师角色是多方面的,将亲力亲为的技术工作与战略决策相结合。这通常包括与小团队紧密合作,每个人的贡献对公司的技术基础设施和整体成功来说都是至关重要的。在那里,他们的角色可能更类似于工程领导或DevOps经理,尽管他们的职责仍反映真正的平台工程师。
角色和职责:
- 开发环境设置: 从本地设置到基于云的系统,建立和维护整个开发环境。
- 云服务管理: 监督云服务,包括选择、配置和管理像亚马逊网络服务(AWS)、微软Azure和谷歌云平台(GCP)这样的云提供商。
- Kubernetes实施: 即使在小型设置中,也要引入和管理Kubernetes进行容器编排,以提高应用程序的可扩展性和效率。
- 内部开发者平台(IDP)的实施: 创建和管理一个基本的IDP以简化开发流程,使开发人员更容易部署和管理应用程序。
- 应用程序可扩展性和安全性: 确保应用程序可扩展且安全,这通常需要对软件开发和信息安全有深入的理解。
- 与创始人的直接协作: 与公司创始人或关键利益相关者密切合作,以使技术战略与业务目标保持一致。
- 全栈意识: 广泛了解前端和后端开发流程与工具。
中型公司
随着公司的增长,中型公司的平台工程师开始专注于特定领域,更多地关注改进和扩展现有系统,而不是从零开始构建它们。在中型公司,一个平台工程师可能会专门负责监督一个功能,或者一个小团队的平台工程师会监督工作。
角色和职责:
- 自动化部署流程: 开发和维护CI/CD流水线以简化软件部署。
- 系统架构改进: 为了更好的性能和可靠性增强系统架构,可能涉及微服务和无服务器架构。
- Kubernetes专业知识: 加深使用Kubernetes和API网关来管理和编排跨多个环境的复杂分布式系统。
- 高级内部开发者平台(IDP): 开发和管理一个更复杂的IDP,结合更多的自动化和自助服务功能给开发团队。
- 第三方服务集成: 集成和管理第三方服务和API以扩展系统功能。
- 与多个团队的协作: 与公司内不同的功能团队协作,例如开发、QA和安全,以确保协调的运作。
- 文档和最佳实践: 创建全面文档并建立系统使用和维护的最佳实践。
大公司
平台工程师通常在大型组织中管理复杂的大规模系统,并参与高级战略决策。在较大的公司,他们通常专注于专用功能,并有充足的团队和预算来投入其工作。
角色和职责:
- 大规模云基础设施管理: 监督广泛的云基础设施,侧重于优化和成本管理。
- 大规模Kubernetes: 大规模实现和管理Kubernetes集群,解决与多租户、安全性和大规模部署相关的挑战。
- 高可用性和灾难恢复: 确保系统高度可用并制定可靠的灾难恢复计划。
- 数据库性能优化: 专门优化大型数据库的性能和安全性,通常涉及数据仓库和大数据技术。
- 企业级内部开发者平台(IDP): 为大型开发团队设计和管理具有广泛自动化、监控和自助服务功能的高级IDP。
- 领导力和团队管理: 领导工程师团队,设置目标和标准,同时指导初级成员。
- 战略规划和政策制定: 对长期基础设施战略做出贡献,并为IT实践和安全制定政策。
在所有公司规模中,平台工程师都对调整技术与业务需求至关重要。
不仅公司规模重要;它的文化和技术方法也极大地塑造了平台工程师的角色。在重视创新和快速增长的组织中,平台工程师可能会被鼓励尝试尖端技术。相反,在优先考虑稳定性和规避风险的公司,重点可能是加强现有的系统和流程。理解和适应这些文化细微差异对于这个角色的成功至关重要。
随着平台工程师从较小的组织向较大的组织发展,他们的影响力和职责范围也趋于增加。在较小的环境中,他们可能直接参与战术的日常运营,而对于大公司来说,他们的角色通常会发展成更具战略性的角色。这可能包括制定长期的基础设施目标、制定政策和指导初级工程师。职业发展也可以导致如技术总监(CTO)或工程主管这样的角色,在那里作为平台工程师获得的技术和领导技能的融合证明非常宝贵。
思考平台工程师所需技能的一种方法是将其分类为两组不同但必要的技能。
第一组技能是技术理解。这可能包括:
- 专注于自动化: 自动化重复任务可以节省时间并减少错误的可能性,从而使系统更可靠。
- 优先考虑安全: 总是考虑平台决策的安全影响。了解和实施安全的最佳实践可以防止未来出现重大问题。
- 熟练掌握云技术: 熟练掌握像AWS、Azure和Google Cloud这样的云平台。这些是现代平台工程的组成部分。
- 理解容器化和编排: 掌握Docker和Kubernetes等工具的知识对于应用程序的高效部署和扩展至关重要。
第二组技能包括所谓的“软技能”。这些技能同样重要。平台工程师必须弥合软件开发和运维基础设施之间的差距,确保两端保持一致并优化以获得最佳性能。平台工程师必须了解两端的个人和团队,并与他们合作找到最佳解决方案。这需要:
- 有效的沟通: 向非技术利益相关者清楚地阐述技术概念,并与各种团队协作。
- 解决问题的能力: 批判性和创造性地思考以解决复杂的技术挑战。
- 团队合作: 与开发和运维团队一起有效工作,实现共同目标,培养持续改进的文化。
此外,平台工程师经常在实施和采用新技术(如容器化和云原生解决方案)方面发挥领导作用,以保持开发环境处于尖端水平。这种前瞻性的方法是平台工程角色的一个标志,将其标志为DevOps更广泛范围内一个独特的且越来越重要的学科。随着今年的推进,我们预计平台工程的崛起会更加明显。