平台工程指南:从架构构建到职责分工
平台工程只是 DevOps 专业化的另一个术语,还是另有所指?事实可能介于两者之间。DevOps 及其相关的 DevXOps 有着浓厚的文化色彩,以各个团队为中心。不幸的是,在许多地方,DevOps 引发了新的问题,如工具激增和整个企业缺乏协调。可以说,为了应对过去非常严格的孤岛式管理和强烈的集中化,DevOps 逐渐倾向于联合——也就是团队层面的次优化,这对组织也造成了损害。规模更大、更复杂的企业对此感受最深,因为它们必须处理不同的技术堆栈,而且整个组织的成熟度也不尽相同。
平台工程正是为了应对这一全企业范围的挑战而发展起来的。它并非 DevOps 的替代品。相反,平台工程与 DevOps 相辅相成,共同应对整个企业面临的挑战,并提供一个工具平台,让各个团队更容易完成工作,而不是在试图保持整个组织一致性的同时破坏事情。
在过去几年中,由于更多的应用程序正在以更快的速度运行,IT 交付的复杂性也随之增加。这意味着组织不能依靠个人来控制复杂性;他们需要有适当工具支持的系统解决方案。这就是平台工程要解决的问题。因此,平台工程师对企业来说至关重要,因为他们的角色是实现安全和工程标准的关键。
01 平台工程师的定义
平台工程师的职责包括三个不同的部分。
最明显的是技术架构师的角色,因为他们必须建立一个连接所有工具和实现流程的工程平台。第二个方面是社区推动者,这与技术工具公司的开发人员关系角色类似。第三部分是产品经理;开发人员社区的利益和需求与平台的技术需求(如安全加固和过时组件的修补)之间的竞争需要优先考虑。
作为技术架构师的平台工程师
在技术堆栈复杂度中等或较高的企业中,构建、发布和维护软件所需的工具至少有十几种,有时甚至更多。整合这些工具并对有意义的指标进行衡量,就像整合业务应用程序一样棘手。毕竟,面临的挑战非常相似:不同的流程需要校准,数据模型需要转换以使其可用,集成点需要连接以实现端到端流程。
运行软件方面业务的系统也同样具有挑战性。平台工程师在这方面的职责是负责软件运行工具的架构,目标是让工具 “消失”,使软件的构建和发布显得简单易行。
作为社区推动者的平台工程师
软件工程师往往认为自己的解决方案比别人的更好。因此,采用工程平台是一项需要克服的挑战。告诉工程师使用特定工具往往会遇到阻力。平台工程师必须成为社区的推动者,与工程师一起推广平台,让他们相信平台的好处。在这部分职责中,沟通是双向的,因为平台工程师还必须倾听平台的问题和挑战,并找出需求量大的新功能。这就引出了角色的第三部分。
作为产品经理的平台工程师
企业的工程师和其他利益相关者对平台的需求相互竞争。以高效的方式确认这些需求的优先级是一项艰巨的任务,因为您必须在所有相互竞争的利益之间找到平衡,尤其是平台的资金本身往往就是一项挑战,因此快速实现价值对于平台的持续支持至关重要。平台工程师需要良好的谈判技巧来应对这些挑战。
02 平台工程架构概述
我们谈到了平台工程师的角色,但平台工程师要构建和维护的平台包含哪些内容呢?最简单的方法是考虑三个层次和一个目标环境:
-
最上层是开发人员体验。这些是开发人员直接使用的工具——推动整体工作流程的工具,如敏捷生命周期管理工具、服务管理工具和开发人员集成开发环境,都属于这一层。
-
底层包括基础设施组件,这些组件必须结合起来才能构建应用环境。这些组件可以来自公共云或私有云,也包括传统的数据中心技术。
-
中间层是最复杂的地方——软件工程平台。在这里,创建和交付软件所需的所有流程都要进行协调:CI/CD、安全扫描、环境配置和发布管理。
03 如何在整个 DevOps 团队中采用平台工程
一种成功的采用模式侧重于确定开发人员的旅程,以定义最小可行平台。那么,需要哪些功能才能使开发人员的旅程实现结果呢?想一想置备环境、将新 API 部署到生产环境或运行性能测试套件这样的任务。每项任务都是一个有效的开发人员旅程,其中有多个接触点,可能需要众多工具。一旦您为第一套应用或技术创建了最低可行平台,应用就会从三个维度展开:更多的应用、更多的功能和更高的成熟度,从而提高自动化和/或性能水平。
除了担心以合理的方式构建平台外,还应尽早解决其他三个方面的问题:
-
社区参与
-
提供资金
-
衡量平台成果
制定社区参与战略非常有帮助。该战略应包括如何与开发者社区共享信息、如何提出功能请求以及如何宣传平台的优势。定义论坛、交流及其各自的频率也很有帮助。
资金很快也会成为瓶颈,因此应在平台工程师采用平台的早期就商定资金策略。这可以是多种策略之一,如专项资金、为所提供的服务提供资金或对所有软件开发征收服务税。每种策略都有其自身的优势和挑战,但最重要的是要有一个不依赖于利益相关者善意的可持续长期资助战略。
最后一点,平台工程师需要能够展示成果,这意味着我们需要衡量有意义的指标,以展示为什么有了该平台,公司会变得更好。这一点往往被遗忘或事后才想到。了解组织的优先事项并使衡量框架与之保持一致,有助于获得持续的支持。不幸的是,这通常需要对多个工具的数据进行调整,而且在前期考虑时最容易实现——单个工具的数据模型保持孤立的时间越长,难度就越大。
04 结论
平台工程仍然是一个相当新的领域,但已经有很多关于它的内容,这说明它很快就引起了企业的兴趣。甚至还有一个专门的会议,始于 2022 年,有数千人参加。虽然还为时尚早,但目前的迹象表明,平台工程已迅速获得市场认可,并形成了一个充满激情的社区。与此同时,平台工程师角色的重要性也将稳步提升,这一点也已在薪酬中有所体现。
希望平台工程能继续帮助企业为开发人员降低软件开发的复杂性,同时实现 DevOps 的承诺:更快、更安全地提供更好的解决方案。
相关文章:

平台工程指南:从架构构建到职责分工
平台工程只是 DevOps 专业化的另一个术语,还是另有所指?事实可能介于两者之间。DevOps 及其相关的 DevXOps 有着浓厚的文化色彩,以各个团队为中心。不幸的是,在许多地方,DevOps 引发了新的问题,如工具激增和…...

Docker系列之docker与docker-compose离线安装
docker离线安装 一、离线安装包二、安装命令三、配置四、docker-compose 一、离线安装包 上传离线安装包至/root/目录下,docker离线安装包下载链接。 二、安装命令 cd /root mkdir k8sOfflineSetup tar -xzvf k8sOfflineSetup-2020-02-20.tar.gz -C k8sOfflineSe…...

css flex 布局换行
默认使用display: flex;是不换行的,只需要加上flex-wrap: wrap;就行了,效果图 .app-center {display: flex;flex-wrap: wrap;justify-content:flex-start; } 通过上面我们发现虽然时间换行了,但是每行的边距不一样 加上这个就行了ÿ…...

使用腾讯云快速搭建WordPress网站流程详解
专栏系列文章: WordPress建站主题美化系列教程https://blog.csdn.net/seeker1994/category_12184577.html 一文搞懂WordPress是什么?为什么用它建站?怎么安装与部署? 初次安装WordPress后如何进行网站设置(主题安装、…...
JavaScript发展历史与JavaScript的版本发展
JavaScript是一种具有函数优先的轻量级,解释型或即时编译型的编程语言。它最初由Netscape公司的Brendan Eich设计,并于1995年在网景导航者浏览器上首次实现。由于Netscape与Sun合作,并希望其外观与Java相似,因此被命名为JavaScrip…...
零基础如何系统自学Python
零基础系统自学Python 学习前的准备 明确学习目标 Python 一共有两大版本,即 Python2 以及 Python3,Python2 已停止维护,强烈建议直接上手 Python3。Python 可以说是无所不能,主要有以下几大方向,建议选择自己感兴趣…...

华为OD机试 - 字符串统计(Java 2024 C卷 100分)
目录 专栏导读一、题目描述二、输入描述三、输出描述1、输入2、输出3、说明 四、解题思路五、Java算法源码六、效果展示1、输入2、输出3、说明 华为OD机试 2024C卷题库疯狂收录中,刷题点这里 专栏导读 本专栏收录于《华为OD机试(JAVA)真题&a…...

LeetCode-数组-前缀和-中等难度
前缀和 前缀和是一种利用预处理的方式来减少整体实现复杂度的方法。 基本定理 假设原数列A为:[1,2,3,4,5],与之对应的前缀和数列P则为:[1,3,6,10,15] 前缀和数列的第一项等于原数列的第一项,从第二项开始前缀和数列每一项计算…...
【程序人生】探索2024年AI辅助研发趋势
目录标题 探索2024年AI辅助研发趋势一、AI在编码中的应用智能代码生成助力开发错误检测与修复的即时反馈性能优化的智能建议 二、AI驱动的自动化工具三、AI与团队协作四、未来展望结语 探索2024年AI辅助研发趋势 随着人工智能技术的迅速发展,AI在各个领域的应用正日…...

集合框架(一)Collection
学习过了ArrayList,知道集合是一种容器,用来装数据的,类似于数组,但集合的大小可变,开发中也非常常用。 为了满足不同的业务场景需求Java还提供了很多不同特点的集合给我们选择。 集合体系结构 Collection是一个接口&a…...

Android 性能优化--APK加固(2)加密
文章目录 字符串加密图片加密如何避免应用被重新签名分发APK 加壳的方案简析DEX加密原理及实现 本文首发地址:https://h89.cn/archives/212.html 最新更新地址:https://gitee.com/chenjim/chenjimblog 通过 前文 介绍,我们知晓了如何使用代码…...

Linux环境下使用interrupt方式操作UART
目录 概述 1 Linux环境下UART设备 2 轮询方式操作UART功能实现 2.1 打开串口函数:usr_serial_open 2.2 关闭串口函数: usr_serial_close 2.3 发送数据函数: usr_serial_sendbytes 2.4 接收数据函数: usr_serial_readinterr…...

修改Android打包apk的名字和目录
app打包生成apk后通常需要进行备份,但是要区分好哪个apk是什么版本的、什么时候打包的,以方便以后区分使用。 最开始的想法是把版本号、创建时间这些加在apk文件名上即可,但是公司要求apk使用一个固定的名称,那我怎么保存版本号信…...

管理 PostgreSQL 中配置参数的各种方法
管理 PostgreSQL 中配置参数的各种方法 1. 概述 PostgreSQL提供了一个配置文件 postgresql.conf 让用户自定义参数。您可能需要更改一些参数来调整性能或在工作环境中部署 PostgreSQL 服务器。在这篇博文中,我们将探索管理这些参数的不同方法。 2. 以不同方式管理…...
Linux命令-continue命令(结束本次循环,继续执行下一个for,while或until循环。)
概要 continue [n]主要用途 结束本次循环,继续执行下一个for,while或until循环;可指定从第几层循环继续执行。 参数 n(可选):大于等于1的整数,用于指定从第几层循环继续执行。 返回值 返回…...

智能部署之巅:Amazon SageMaker 引领机器学习革新
本篇文章授权活动官方亚马逊云科技文章转发、改写权,包括不限于在 亚马逊云科技开发者社区, 知乎,自媒体平台,第三方开发者媒体等亚马逊云科技官方渠道。 (全球 TMT 2023年12月6日讯)亚马逊云科技在 2023 re:Invent 全…...

国内哪个工具可以平替chatgpt?国内有哪些比较好用的大模型gpt?
我自己试用了很多的平台,发现三个比较好的大模型平台,对普通用户也比较的友好的,而且返回内容相对来说,正确率更高的,并且相关场景插件比较丰富的国内厂商。 本文说的,是我自己觉得的,比较有主观…...
python如何打包py文件为exe
要将Python程序打包为可执行文件(.exe),您可以使用一些第三方工具。以下是两个常用的工具:PyInstaller和cx_Freeze。 使用PyInstaller PyInstaller是一个流行的Python打包工具,可以将Python程序及其所有依赖项打包为…...

yolov9网络结构图
文章目录 配置文件主干分支backbone预测头headyolov9网络结构图 系列文章目录 论文链接:👿 YOLOv9: Learning What You Want to Learn Using Programmable Gradient Information代码链接:👿 https://github.com/WongKinYiu/yolov9…...

Spark 核心API
核心 API spark core API 指的是 spark 预定义好的算子。无论是 spark streaming 或者 Spark SQL 都是基于这些最基础的 API 构建起来的。理解这些核心 API 也是写出高效 Spark 代码的基础。 Transformation 转化类的算子是最多的,学会使用这些算子就应付多数的数…...

AI-调查研究-01-正念冥想有用吗?对健康的影响及科学指南
点一下关注吧!!!非常感谢!!持续更新!!! 🚀 AI篇持续更新中!(长期更新) 目前2025年06月05日更新到: AI炼丹日志-28 - Aud…...

【力扣数据库知识手册笔记】索引
索引 索引的优缺点 优点1. 通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性。2. 可以加快数据的检索速度(创建索引的主要原因)。3. 可以加速表和表之间的连接,实现数据的参考完整性。4. 可以在查询过程中,…...
解锁数据库简洁之道:FastAPI与SQLModel实战指南
在构建现代Web应用程序时,与数据库的交互无疑是核心环节。虽然传统的数据库操作方式(如直接编写SQL语句与psycopg2交互)赋予了我们精细的控制权,但在面对日益复杂的业务逻辑和快速迭代的需求时,这种方式的开发效率和可…...

Vue2 第一节_Vue2上手_插值表达式{{}}_访问数据和修改数据_Vue开发者工具
文章目录 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染2. 插值表达式{{}}3. 访问数据和修改数据4. vue响应式5. Vue开发者工具--方便调试 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染 准备容器引包创建Vue实例 new Vue()指定配置项 ->渲染数据 准备一个容器,例如: …...
vue3 定时器-定义全局方法 vue+ts
1.创建ts文件 路径:src/utils/timer.ts 完整代码: import { onUnmounted } from vuetype TimerCallback (...args: any[]) > voidexport function useGlobalTimer() {const timers: Map<number, NodeJS.Timeout> new Map()// 创建定时器con…...

微服务商城-商品微服务
数据表 CREATE TABLE product (id bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 商品id,cateid smallint(6) UNSIGNED NOT NULL DEFAULT 0 COMMENT 类别Id,name varchar(100) NOT NULL DEFAULT COMMENT 商品名称,subtitle varchar(200) NOT NULL DEFAULT COMMENT 商…...

第 86 场周赛:矩阵中的幻方、钥匙和房间、将数组拆分成斐波那契序列、猜猜这个单词
Q1、[中等] 矩阵中的幻方 1、题目描述 3 x 3 的幻方是一个填充有 从 1 到 9 的不同数字的 3 x 3 矩阵,其中每行,每列以及两条对角线上的各数之和都相等。 给定一个由整数组成的row x col 的 grid,其中有多少个 3 3 的 “幻方” 子矩阵&am…...

dify打造数据可视化图表
一、概述 在日常工作和学习中,我们经常需要和数据打交道。无论是分析报告、项目展示,还是简单的数据洞察,一个清晰直观的图表,往往能胜过千言万语。 一款能让数据可视化变得超级简单的 MCP Server,由蚂蚁集团 AntV 团队…...
在Ubuntu24上采用Wine打开SourceInsight
1. 安装wine sudo apt install wine 2. 安装32位库支持,SourceInsight是32位程序 sudo dpkg --add-architecture i386 sudo apt update sudo apt install wine32:i386 3. 验证安装 wine --version 4. 安装必要的字体和库(解决显示问题) sudo apt install fonts-wqy…...

排序算法总结(C++)
目录 一、稳定性二、排序算法选择、冒泡、插入排序归并排序随机快速排序堆排序基数排序计数排序 三、总结 一、稳定性 排序算法的稳定性是指:同样大小的样本 **(同样大小的数据)**在排序之后不会改变原始的相对次序。 稳定性对基础类型对象…...