什么是平台工程?如何开始?

news2024/10/7 12:28:40

平台工程是为开发人员构建和维护自助服务平台的学科。该平台提供了一套云原生工具和服务,帮助开发者快速高效地交付应用。平台工程的目标是通过标准化和自动化软件交付生命周期 (SDLC) 中的大部分任务来改善开发人员体验 (DX)。开发人员可以专注于使用自动化平台编码和交付业务逻辑,而不是像供应基础设施、管理安全性和学习曲线这样的上下文切换

平台工程具有内向的视角,因为它专注于优化组织中的开发人员以提高生产力。组织从以最佳水平工作的开发人员中受益匪浅,因为这会导致更快的发布周期。该平台通过提供开发人员将代码投入生产所需的一切来实现这一目标,这样他们就不必等待其他 IT 团队获得基础设施和工具。使开发人员的日常活动更加轻松和自主的自助服务平台称为内部开发人员平台 (IDP)。

 什么是内部开发者平台 (IDP)

IDP 是一个包含自助式云原生工具和技术的平台,开发人员可以使用这些工具和技术来构建、测试、部署、监控或执行与应用程序开发和交付有关的几乎任何事情,同时尽可能减少开销。平台工程师或平台团队在咨询开发人员并了解他们独特的挑战和工作流程后构建它。

在为许多大型高科技企业 讨论和实施Kubernetes CI/CD 管道和GitOps 解决方案之后,我们意识到一个典型的 IDP 将包含以下 5 个支柱:

  1. 用于自动化部署的 CI/CD 平台(Jenkins、Docker Hub、Argo CD、Devtron、Spinnaker)
  2. 用于管理容器的容器编排平台(Kubernetes、Nomad、Docker Swarm)
  3. 用于身份验证、授权和秘密管理的安全管理工具(HashiCorp Vault、AWS Secrets Manager、Okta Identity Cloud)
  4. 用于自动化基础设施配置的基础设施即代码 (IaC) 工具(Terraform、Ansible、Chef、AWS CloudFormation)
  5. 跨所有集群的工作负载和应用程序可视化的可观察性堆栈(Devtron Kubernetes 仪表板、Prometheus、Grafana、ELK 堆栈)

 平台团队以一种易于学习曲线最小的开发人员使用的方式设计 IDP。IDP 可以通过自动化重复性任务、减少维护开销和消除无休止的脚本编写需求来帮助减少开发人员的认知负担并改进 DX。IDP 通过提供自助服务平台,使开发团队能够独立管理资源、基础架构需求、部署和回滚。这增加了开发人员的自主权和责任感,减少了依赖性,并简化了开发周期。

为什么平台工程很重要?

平台工程可以帮助组织获得一些内部(开发人员)和外部(最终用户)的好处:

  • 改进的开发人员体验 (DX):过多的云原生工具增加了开发人员的认知负担,因为需要花费大量时间来决定针对他们的特定用例使用哪个工具并掌握它。平台工程通过提供适合开发人员独特工作流程的简化、标准化的工具和服务集来解决这个问题并改进 DX。
  • 提高生产力: IDP 提供开发人员以自助服务方式测试和部署代码所需的一切。这减少了 SDLC 不同阶段的延迟,例如等待某人提供要部署的基础设施。平台工程通过帮助他们主要关注核心开发工作来确保开发人员的生产力。
  • 设计标准化: IT 团队在典型的软件组织中使用各种工具,因团队而异。在这种情况下,维护和跟踪事物变得复杂。平台工程通过标准化工具和服务来解决这个问题,他们更容易解决任何瓶颈,因为每个开发人员的平台都是相同的。
  • 更快的发布:平台团队通过提供易于使用、可重用和可配置的工具链,确保开发人员致力于交付业务逻辑。因此,开发人员的工作效率非常高,并且可以可靠、安全地加快功能和创新的上市时间。

在组织中实施成功的平台团队并利用上述优势需要遵循一些共同原则。将平台视为产品就是其中之一。

平台即产品

平台工程的核心原则之一是将平台产品化。平台团队需要采用产品管理思维来设计和维护一个不仅对用户友好而且满足客户(应用程序开发人员)的期望和需求的平台。它首先围绕开发人员遇到的问题收集数据点,并确定要促进的领域。这可以提高部署频率、降低变更失败率、提高可靠性和安全性、改进 DX 等。
重要的是要注意,构建平台就是构建核心产品,解决大多数团队面临的共同挑战。它不是解决单个团队的问题,而是跨多个团队提供产品来解决同一组问题. 例如,如果多个团队需要相同的基础设施,平台团队就可以在该共享部分上工作并分发它。这种重用平台和可重复性的想法至关重要,因为它允许在应用程序交付中实现标准化、一致性和可扩展性。
与产品管理一样,平台团队拥有产品,选择某些指标,并继续收集客户反馈以改善用户体验。该平台的产品路线图根据反馈不断发展,并适应客户不断变化的需求和期望。

平台工程师的角色和职责

平台工程师的主要职责是设计和维护自助服务平台(IDP),并为开发者提供平台服务。首先是与开发人员接触并了解他们的痛点:

 听客户说:

采访开发人员和不同的 IT 团队,了解他们的工程环境和挑战,并了解他们正在优化的内容。他们可能正在尝试构建有效的 CI/CD 管道或实施更好的访问控制,以及围绕软件交付的许多其他挑战。

优先:

确定大多数团队面临的共同挑战,并优先解决这些挑战,而不是个别团队面临的问题。例如,如果大多数团队发现很难安全地存储和检索秘密,那么最好为每个人确定优先级并解决它们。

平台设计:

使用可为用户解决这些问题所需的工具设计 IDP,并提供文档使开发人员能够自助服务资源和基础设施。采用秘密管理工具将解决上述案例中围绕安全管理秘密的挑战。平台设计的一部分还包括编写脚本来自动化日常开发任务,例如启动新环境和配置基础设施以减少开发流程中的错误和摩擦点。

指标:

选择围绕目标的具体指标来衡量平台的有效性。例如,如果目标是改进 DX,指标包括参与度分数、团队反馈等。同样,如果目标是降低变更失败率或增加部署频率,指标也会发生变化。

收集反馈并维护平台:

继续倾听客户的意见并观察指标。收集用户反馈以向平台添加新工具并优化以获得更好的用户体验。这还包括及时了解 DevOps 和云基础设施领域的新兴工具和技术,并在必要时采用它们。

很容易将 DevOps 工程师或 SRE 的角色与平台工程师的角色混淆,因为他们都管理底层基础设施并支持软件开发团队。尽管所有这些角色之间存在一定的重叠职责,但每个角色都有其独特的侧重点。

平台工程与 DevOps

DevOps 是一种将文化转变为 SDLC 以提高软件交付速度和质量的理念。DevOps 促进了开发和运营团队之间的协作和沟通,并加速了自动化以简化部署。平台工程——一种实践而非哲学——可以被视为 DevOps 的下一个迭代,因为它共享 DevOps 的一些核心原则:协作(与 Ops)、持续改进和自动化。

平台团队和 DevOps 的日常任务在某些方面彼此不同。DevOps 使用某些工具和自动化来简化将代码投入生产、管理代码以及使用日志记录和监视工具对其进行观察的过程。他们主要致力于构建有效的 CI/CD 管道。平台工程师采用 DevOps 使用的所有工具,并将它们集成到一个共享平台中,不同的 IT 团队可以在企业级别使用该平台。这消除了团队自行配置和管理基础架构和工具的需要,并节省了大量时间、精力和资源。平台工程师还创建文档并优化平台,以便开发人员可以在其工作流程中自助服务工具和基础设施。

只有拥有许多使用复杂工具和基础设施的不同 IT 团队的成熟公司才需要平台团队。在这样的工程环境中,自然需要一个专门的平台团队来管理复杂性。平台团队构建和管理基础设施,帮助 DevOps 加速持续交付。但是,DevOps 团队在初创公司执行平台工程任务(例如配置 Terraform)是很常见的。

平台工程与 SRE

站点可靠性工程师 (SRE) 专注于确保应用程序可靠、安全且始终可用。他们与开发人员和运营团队合作,创建支持交付高度可靠的应用程序的系统或基础设施。SRE 还执行容量规划和基础架构扩展以及管理和响应事件,以便平台满足所需的服务级别目标 (SLO)。另一方面,平台工程管理复杂的基础设施,并为开发人员构建高效的平台以优化 SDLC。虽然两者都在平台上工作,而且他们的角色听起来很相似,但他们的目标不同。

平台工程和 SRE 之间的主要区别在于他们面向谁并为他们提供服务。SRE 面向最终用户并确保应用程序对他们来说是可靠的和可用的。平台工程师面对内部开发者,专注于提升他们的开发者体验。两个团队的日常任务在这些目标方面有所不同。平台工程为应用程序的快速交付提供底层基础设施,而 SRE 也为交付高可靠和可用的应用程序做同样的事情。SRE 更多地致力于故障排除和事件响应,而平台工程师专注于复杂的基础架构和支持开发人员自助服务。

为了实现各自的目标,SRE 和平台团队在他们的工作流程中使用不同的工具。SRE 主要使用 Prometheus 或 Grafana 等监控和日志记录工具来实时检测异常并设置自动警报。平台团队使用跨越软件交付过程各个阶段的不同工具集,例如容器编排工具、CI/CD 管道工具和 IaC 工具。总而言之,SRE 和平台团队致力于构建可靠且可扩展的基础设施,目标不同,但他们使用的工具之间存在一些重叠。

如何在组织中实施平台工程?

拥有少数工程师的初创公司不会立即需要平台团队。一旦组织发展到多个 IT 团队并开始处理复杂的工具和基础架构,理想的做法是让平台工程师来管理复杂性。

创建角色(工程主管/副总裁)

当开发人员花费更多时间配置工具和基础设施而不是交付业务逻辑时,像副总裁或工程主管这样的顶级工程师通常会担任平台工程师的角色。他们会发现大多数 IT 团队都在解决相同的问题,例如启动一个滞后于交付过程的新环境。因此,工程主管将定义平台工程的范围,确定责任范围,并创建平台工程师/团队的角色。

创建一个内部开发者平台(平台工程师/团队)

平台工程师首先构建组织中已使用的基础设施和工具的日志。然后他们会采访开发人员并了解他们面临的挑战,并使用能够解决企业级问题的工具和服务来构建内部开发人员平台。他们将以灵活的方式构建平台,并促进不同的架构和部署方式。平台工程师还创建文档并举办培训课程,以帮助开发人员自助服务平台。平台工程师最好有开发人员背景,这样他们就知道成为开发人员是什么感觉,并更好地理解挑战。

板载用户(应用程序开发人员)

一旦平台准备就绪,平台工程师就会加入应用程序开发人员。这将需要内部营销并让团队了解该平台及其可以解决的问题。吸引用户的最佳方式是将他们拉到平台上,而不是将平台扔给他们。这可以通过从一个小团队开始并帮助他们克服挑战来完成。例如,帮助一个小团队优化 CI/CD 流水线,并在此过程中提供尽可能好的体验。早期采用者的口口相传将在整个组织中产生积极的连锁反应,这将有助于让更多用户加入该平台。
平台工程并不止于让用户入职。这是一个持续的过程,平台适应新兴的工具和技术以及用户不断变化的需求和要求。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/502584.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Type-C PD充电器诱骗PD+QC+AFC+FCP全协议快充取电5V9V12V15V20V

Type-C充电器采用的是PD快充协议,支持的电压高,电流大,一般有5V3A、9V3A、12V3A、15V3A、20V5A等等。 因为充电器内部有协议芯片,当外部设备连接时,设备会和充电器进行协议匹配,匹配成功之后,充…

ASEMI代理ADI亚德诺LT8609AJDDM#WTRPBF车规级芯片

编辑-Z LT8609AJDDM#WTRPBF特点&#xff1a; 宽输入电压范围&#xff1a;3.0V 至 42V 超低静态电流突发模式操作&#xff1a; 将 12VIN 调节到 3.3VOUT 时 IQ 为 2.5A 输出纹波 < 10mVP-P 高效 2MHz 同步操作&#xff1a; 1A 时效率为 93%, 12VIN 可获得 5VOUT 最大…

3.1 一个稍微完善的Vue.js响应式系统

前文提要&#xff1a;3.0 响应式系统的设计与实现 1、设置一个合理的effect副作用函数 如上文所说&#xff0c;如果我们直接将简单的effect函数作为副作用函数&#xff0c;如果一个副作用函数不叫effect岂不是找不到了。解决方案也很简单&#xff0c;我们设定一个全局变量用于…

在CRA中配置别名路径并添加别名路径提示

写在前面&#xff1a; 使用React官方脚手架create-react-app[简称CRA]创建react项目&#xff1a;npx create-react-app 项目名称 一、配置别名路径 1.1 写在前面 目的&#xff1a;简化项目中的路径处理&#xff0c;和Vue项目中的类似。 参考文档&#xff1a;自定义CRA的默认…

MySQL基础(十二)数据类型精讲

1. MySQL中的数据类型 类型类型举例整数类型TINYINT、SMALLINT、MEDIUMINT、INT(或INTEGER)、BIGINT浮点类型FLOAT、DOUBLE定点数类型DECIMAL位类型BIT日期时间类型YEAR、TIME、DATE、DATETIME、TIMESTAMP文本字符串类型CHAR、VARCHAR、TINYTEXT、TEXT、MEDIUMTEXT、LONGTEXT枚…

一个日期类深度认识operator符号重载

一&#xff1a;概念 在以前的C语言的学习中,如果我们需要比较两个整数并返回它的结果可以直接用与之相关的符号。例如我们可以直接写成A>B或者A<B一类的&#xff0c;但是它的局限性很大&#xff0c;只能比较内置类型&#xff0c;因为计算可以直接转换成对应的汇编代码进…

如何通过国外主机租用服务提高网站SEO排名?

当今的互联网已经成为了商业和社交活动的主要场所之一。在这个快速变化的数字时代&#xff0c;网站的搜索引擎优化(SEO)排名对于任何企业的成功都至关重要。一个好的SEO排名能够帮助企业吸引更多的访客和潜在客户&#xff0c;增加业务的转化率。而国外主机租用服务可以帮助您优…

【C++学习】函数模板

模板的概念 模板就是建立通用的模具&#xff0c;大大提高复用性。 模板的特点&#xff1a; 模板不可以直接使用&#xff0c;它只是一个模型 模板的通用不是万能的 基本语法 C中提供两种模板机制&#xff1a;函数模板和类模板 函数模板作用&#xff1a; 建立一个通用函数&…

C++学习day--05 C++数据类型

1、项目需求&#xff1a;实现黑客攻击系统菜单打印 实现&#xff1a; #include <iostream> #include <Windows.h> int main( void ) { std::cout << "1. 网站 404 攻击 " << std::endl; std::cout << "2. 网站篡改攻击 …

实验四 基于PPTP的远程VPN实现【网络安全】

实验四 基于PPTP的远程VPN实现【网络安全】 前言推荐实验四 基于PPTP的远程VPN实现使用&#xff1a;配置CentOS PPTP服务端配置CentOS PPTP客户端常见问题浏览器无法打开网页 最后 前言 2023-5-7 23:10:12 以下内容源自《【网络安全】》 仅供学习交流使用 推荐 第27节 远程…

TCP三次握手/四次挥手

TCP三次握手/四次挥手 TCP的三次握手和四次挥手实质就是TCP通信的连接和断开。 三次握手 任何基于TCP的应用&#xff0c;在发送数据之前&#xff0c;都需要由TCP进行三次握手进行连接 握手流程&#xff1a; 三次握手原理 第1次握手&#xff1a;客户端发送一个带有SYN&#…

【蓝桥杯国赛真题26】Scratch队列练习 少儿编程scratch图形化编程 蓝桥杯省赛真题讲解

目录 scratch队列练习 一、题目要求 编程实现 二、案例分析 1、角色分析

2018年下半年软件设计师下午试题

试题四&#xff08;15分&#xff09; 给定一个字符序列Bb1b2….bn&#xff0c;其中bi∈{A,C,G,U}。B上的二级结构是一组字符对集合S{(bi,bj)},其中i,j∈{1,2,….,n}&#xff0c;并满足以下四个条件&#xff1a; &#xff08;1&#xff09;S中的每对字符是(A,U),(U,A),(C,G)和…

【网络】-- IP协议

应用层&#xff08;http、https&#xff09;&#xff1a; 数据的使用。传输层&#xff08;UDP、TCP&#xff09;&#xff1a;网络通讯的细节&#xff0c;将数据可靠的从A主机跨网络送到B主机。网络层&#xff08;IP&#xff09;&#xff1a;提供一种能力&#xff0c;将数据从A主…

如何让任何小程序都支持在windows系统中打开?

随着小程序的发展&#xff0c;出现了越来越多小程序在PC端打开的需求。很多程序员同行都想了解&#xff1a;小程序支持在windows系统、mac、统信UOS等桌面操作系统中打开吗&#xff1f; 答案当然是&#xff1a;可以&#xff01; 本文就基于作者自身的经验&#xff0c;给大家介…

IPWorks SSH 2022.0.8505 C++ Edition Crack

IPWorks SSH 2022.0.8505 C Edition 轻松将安全外壳 &#xff08;SSH&#xff09; 安全性集成到您的互联网应用程序中。IPWorks SSH 库包括支持 SSH 的客户端、服务器和代理组件&#xff0c;支持强 SSH 2.0 加密和高级加密。 SSH库 SSH 文件传输和通信 借助 IPWorks SSH&#x…

【嵌入式环境下linux内核及驱动学习笔记-(10-内核内存管理)】

目录 1、linux内核管理内存1.1 页1.2 区1.2.1 了解x86系统的内核地址映射区&#xff1a;1.2.2 了解32位ARM系统的内核地址映射区&#xff1a; 2、内存存取2.1 kmalloc2.1.1 kfree2.1.2 kzalloc 2.2 __get_free_page函数族2.2.1 free_page2.2.2 __get_free_pages()2.2.3 free_pa…

20230502 - 二叉树1 | 二叉树理论基础、二叉树的递归遍历

1、二叉树理论基础篇 二叉树可以链式存储&#xff0c;也可以顺序存储。 用数组来存储二叉树如何遍历的呢&#xff1f; 如果父节点的数组下标是 i&#xff0c;那么它的左孩子就是 i * 2 1&#xff0c;右孩子就是 i * 2 2。 深度优先遍历 前序遍历&#xff08;递归法&…

Android 页面滑动悬浮资源位动画+滑动监听解决方案

一、介绍 在日常业务开发过程中&#xff0c;我们有好多资源位悬浮在页面上&#xff0c;特别是电商以及促销页面&#xff0c;有些公司恨不得把整个页面像叠汉堡一样&#xff0c;一层一层加内容&#xff0c;目的是想让更多的人通过他们的资源来完成更便捷的操作。 但是资源是会覆…

HarmonyOS版的“抖音”长啥样?有图有真相

“鸿蒙系统实战短视频App 从0到1掌握HarmonyOS”系列课程是面向HarmonyOS实战的视频教程&#xff0c;该课程会通过构建一个真实的短视频App来向读者展示HarmonyOS的全过程。 本节将演示基于HarmonyOS短视频App的核心功能。通过了解该App的功能&#xff0c;也能初步对本课程的内…