平台工程是 DevOps 的未来

news2025/1/10 12:02:50

Gartner 预测到 2026 年时,将有 80% 的软件工程组织会建立平台团队

DevOps 与平台工程

DevOps 是一种文化和理念。平台工程,是我们实现**“谁构建、谁运行”**的唯一方式。这是 DevOps 的核心初衷,也是后来企业级规模和云原生时代的实现基础。平台工程关注的不一定是教你怎么用工具,而是构建起一套能够实现这种自我服务能力的平台。有了平台工程,核心软件工程部门才有机会获得自我服务能力。这种观念上的转变,决定我们要把平台视为一种产品进行建设。

DevOps 最初的想法非常简单,基本目标就是消除开发人员和运营人员间的障碍,促进双方协作。达成目标的方法基本就是做左移,实现“谁构建、谁运行”。当所有这些云原生趋势融合在一起之后,就有了云原生、Kubernets、容器化、基础设施即代码和 GitOps 等等,情况已经完全不同了。

为什么需要平台工程

面对复杂的工具链,开发者没必要成为全面的专家,相反,应该把底层基础设施的复杂性从开发者那里抽象出来,为他们提供一条最佳路径,由开发者自己决定最适合的上下文层级。

在企业中,平台工程的推动会遇到困难,特别是认知负荷相关的问题。首先,开发者不知所措从而不断向运营团队求助,最终运营团队成为业务瓶颈;亦或高级工程师会悄悄用自己的办法接管了运营任务,成为“影子运营”,并没有把全部的精力投入到编码当中。这两种方式会陷入恶性循环最终成为技术债务。因此,我们建议树立平台工程团队的角色、考虑建设和使用工程平台。

什么样的团队需要工程平台

如果团队中只有大约20 名工程师,而且不是每个人都熟悉 helm、IaC、Terraform 或者 Kubernetes,PaaS 是不错的选择 。 DevOps 的基本诉求“谁构建、谁运行”可以实现。但 PaaS 只能提供一条路径,只能通过简单设置支持相对不那么复杂的用例。

当企业从几十名开发者转变为成百上千开发者时,平台有助于解决的痛点才开始真正出现。痛点出现了,摩擦出现了,如果还没有任何平台,那需要行动起来了。如果已经拥有 PaaS 解决方案,不妨考虑逐渐过渡到自建的内部开发者平台,或者使用价值观相同的、较为成熟的外部产品。

如何建设平台工程

设立平台工程团队,平台工程团队的使命和愿景是构建、成就或引入一款产品,这款产品的客户就是开发者。

其次,平台工程团队要重视沟通能力。在跟开发人员交谈时,要强调的是如何缩短等待时间、改善开发体验。而在跟运营团队交流时,要告诉他们如何减轻压力并快速处理工单。而在跟管理层沟通时,最重要的一点就是告知如何缩短产品上市时间,并且能够降低运营成本。这个指标类似于给平台设定投资回报率。

开发者平台的目标是为工程师们提供类似于 PaaS 的使用体验和开发体验。但它基于更复杂的标签和工具堆栈,搞清楚工具箱里到底有着怎样的技术组合。把整个栈接管过来,完成最后一英里的优化,通过微调为开发者构建起适宜的最佳上下文路径。

平台工程不能成为开发团队的束缚。一方面,需要通过标准化普及降低认知和使用门槛,实现自服务。同时,还得确保开发者使用基础设施资源的方式跟平台标准要求相一致。这里要么采用始终如一输出相同的配置文件,进行动态配置管理,实质在于每次部署时都能动态生成配置文件,包括谁部署了什么、在哪里部署、输出了什么。动态配置管理还能在每次 Git 推送时执行策略和标准,在部署等环节之间建立约束。如果没有明确思路且基础较薄、或不想投入非主营业务成本,可以评估选择一款外部产品,其具备完整的交互控制台、践行一套认同的方法论、最重要的是愿意与客户保持沟通、持续迭代,客户可以和产品一同走向平台工程终态。

平台工程产品化趋势

在海外,开源社区非常火爆,存在不少开源工具如 Argo CD、Backstage,特别是围绕 Backstage 的插件体系非常丰富,已经出现了上百种插件;也有平台编辑类产品 Humanitec, 服务于企业平台层中内部开发者平台的核心引擎,是平台工程、团队和组织中的解决方案之一。相比之下,国内的工具链相对复杂,为了**提升端到端的体验,通常需要一个整合层或平台层来更好地组合这些工具。**而且在国内平台工程主要以代码和自我品牌为中心,比如腾讯云的 CODING Orbit 等产品。

以开发者视角为出发点,围绕着代码管理、项目管理、需求设计、缺陷管理、测试管理和制品管理、持续集成、持续交付、应用管理/观测等核心特性构建。在这些平台中,代码和制品形式的流转更多地发生在不同的产品模块之间。每个产品内部都有非常丰富的功能机制,这种商业软件的玩法是开源平台无法做到的。国内外工具与平台最终是否按照平台工程的需求场景演进趋同?让我们拭目以待。

欢迎扫码添加 CODING 官方小助手

获取 2023 平台工程报告

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

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

相关文章

游泳健身馆预约小程序开发 助力门店拓客引流

暑假快要到了,很多游泳健身馆都想方设法来招揽顾客,其实无论是派发传单还是媒体投放,都不如开发一款游泳健身类预约小程序来的好。因为有了健身游泳小程序系统不仅能够起到很好的推广宣传效果,对于日后的经营发展也有诸多好处。 …

javaEE在2023年5月21知识复盘(一)

今天讲述了doget()、doPost()方法,介绍了里面参数req,resp的一些实用方法 getParameter()获取请求参数 getParameterValues() 返回参数数组 【post方式】 设置编码格式 req-> setCharacterEncoding() resp->SetContent-Type(“text/html;charsetutf-8”) 获取…

SpringBoot + minio实现文件切片极速上传技术(敢说全网整合完整度前三)

一. 概述 提示:请不要多个博客来回跳着看,此文章之详细绝无仅有,融合多家之长,如果遇见报错,请仔细捋一遍文章,不要忽略!我在写的时候因为许多文章不全面,来回跳遇见许多坑&#xf…

Java 集合,你肯定也会被问到这些

作为一位小菜 ”一面面试官“,面试过程中,我肯定会问 Java 集合的内容,同时作为求职者,也肯定会被问到集合,所以整理下 Java 集合面试题 说说常见的集合有哪些吧? HashMap说一下,其中的Key需要重…

傻子都能学会的LNMP部署

LNMP 一、安装 Nginx 服务1、安装依赖包2、创建运行用户3、编译安装4、优化路径5、添加 Nginx 系统服务 二、安装 MySQL 服务】1、安装Mysql环境依赖包2、创建运行用户3、编译安装4、修改mysql 配置文件5、更改mysql安装目录和配置文件的属主属组6、设置路径环境变量7、初始化数…

接口测试测什么?一个简单问题把我难住了

那么设计测试用例时我们主要考虑如下几个方面: 一、功能测试 接口的功能是否正确实现了 接口是否按照设计文档中来实现(比如username参数写为了user,那么这就不符合,因为接口文档在整个开发中都需要使用,所以接口实…

MEX 文件 ‘lsd.mexw64‘ 无效: 找不到指定的模块。问题解决方法

问题描述 在跑MATLAB和C混合编程的一个算法时,出现了如下错误: MEX 文件 C:\Project\final code\reference code\lsd.mexw64 无效: 找不到指定的模块。 如下图所示: 原因分析 根据资料[1]的说法,*.mexw64文件无效可能的原因是缺…

GitLab从旧服务器迁移到新服务器(空间不足,gitlab安装报错)

注意事项:迁移前首先要保证新旧服务器上的GitLab版本号一致,而且gitlab的包要符合安装的系统gitlab安装,系统与安装包不一致导致的安装错误。 1.查看当前GitLab版本 cat /opt/gitlab/embedded/service/gitlab-rails/VERSION显示为 12.5.5。…

Linux之Ubuntu 22.04实现微信双开

Linux之Ubuntu 22.04实现微信双开 基于deepin-wine仓库安装第一个微信添加仓库安装对应软件包com.qq.weixin.deepin 微信的安装存在的问题补充 Linux下使用模拟器进行微信多开(可取?)下载Linux模拟器下载完成打开: 安装第二个微信…

zookeeper机制及消息队列kafka集群部署

目录 一、zookeeper1、zookeeper简介2、zookeeper特点3、zookeeper工作模式及机制4、zookeeper应用场景及选举机制5、zookeeper集群部署 二、消息队列kafka1、为什么要有消息队列2、使用消息队列的好处3、kafka简介4、kafka特点5、kafka系统架构名词介绍6、Kafka架构及流程7、k…

技术分享 | 如何编写同时兼容 Vue2 和 Vue3 的代码?

LigaAI 的评论编辑器、附件展示以及富文本编辑器都支持在 Vue2(Web)与 Vue3(VSCode、lDEA)中使用。这样不仅可以在不同 Vue 版本的工程中间共享代码,还能为后续升级 Vue3 减少一定阻碍。 那么,同时兼容 Vue…

Shell脚本攻略:文本三剑客之grep

目录 一、理论 1.grep 2.sort 3.uniq 4.tr 5.cut 6.split 7.paste 二、实验 1. grep 2.sort 3.uniq 4.tr 5.cut 6.split 7.统计当前主机的连接状态 8.统计当前连接主机数 一、理论 1.grep (1)概念 grep是Linux中最常用的”文本处理工…

Redis-主从复制以及哨兵

前言 ​ 要避免单点故障,即保证高可用,便需要冗余(副本)方式提供集群服务。而Redis 提供了主从库模式,以保证数据副本的一致,主从库之间采用的是读写分离的方式。在 Redis 主从集群中,哨兵机制…

共享打印机出现文件无法打印|0X00000709错误的解决方案|win7 win11

现在办公室通常会使用打印机共享功能,在使用打印机共享中会出现在[文件无法打印,因为在“\ip\打印机名 在Ne02:”上发生错误] 这时,我们输入相应IP重新共聚共享端打印机,就会出现“0X00000709”的错误。 回到共享端…

Rust in Action笔记 第三章 复合数据类型

通过#[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZI50wIh1-1685693144796)(null)]),不带感叹号的#[allow]仅为下一行代码提供属性,属性有多种分类,文中出现的allow属性称为诊断属性(Diag…

僵尸网络检测数据集CTU-13介绍及使用

首先感谢爱学习的大白菜爱学习的大白菜的博客_CSDN博客-刷题,ACM之路,机器学习领域博主对CTU-13数据集的描述的翻译,这使得后面对这份数据集的理解更加容易。 参考CTU-13数据集_爱学习的大白菜的博客-CSDN博客 由于要做僵尸网络检测的工作,但是没有相关…

权限维持-HOOK-DLL加载

前言 继续来研究关于权限维持的方法,这里希望与各位一起加油。 这里的HOOK其实指的就是Hook PasswordChangeNotify 其中PasswordChangeNotify是一个函数,如果修改的密码符合要求,那么PasswordChangeNotify在系统上同步更新密码,然…

网讯1860网卡网络流控导致网络异常问题

1、背景介绍 目前使用的飞腾平台中采用国产化WX1860千兆网卡芯片,交换芯片采用盛科的CTC8096。示意图如下: 当其中一块飞腾系统异常时,发现整个平台内所有的千兆网均出现异常,任意两个飞腾千兆网均无法ping通。 2、问题排查 一…

什么是边缘计算网关以及什么是边缘计算?

边缘计算 边缘计算是一种分布式计算范例,使计算任务从数据中心或云端移向离数据源更近的地方,即网络的"边缘"。这样做的目的是降低网络延迟,提高数据处理速度,同时减少不必要的数据传输,节省带宽和存储资源。…

如何实现折起来的效果

如何实现范围裁剪和旋转效果。 日常 我还是希望自己的博客能够存在一些温度,而不是冷冰冰的技术分享,我希望留下专属于我自己的个性,就像鸿洋和郭霖的公众号一样。他们会在自己的博客顶端随便写一下最近的新闻什么的,而我不同&a…