从 DevOps 到平台工程:构建现代化内部平台
如果无法正常显示,请先停止浏览器的去广告插件。
1. 主题
正文部分
从DevOps到平台工程 - 构建现代化内部平台
数澈软件 / 江鹏
2.
3. 什么是平台工程?
4. DevOps已死,平台工程永存?
研发舒适区
BareMetal
屏蔽复杂度,
降低研发学习使用成本
(Compute, Storage, Network)
IaaS
(Aliyun, AWS, Azure,
Tencent Cloud, Huawei Cloud)
Control/
Customizability
Managed K8s
Self-hosted K8s
(EKS, AKS, ACK, GKE)
PaaS
FaaS
(Heroku,
Cloud Foundry)
(Lambda,
Cloud Functions)
DevOps Efforts
5. 平台工程兴起的原因?
CI流水线跑失败
了,得上去看看
怎么回事?
S
S
外部
依赖
S
PR/
MR
…
文档
S
S
…
S
Service
S
Service
CI
流水线 S Auth S Service S …
S Service S Service S …
文档
S
修复
分支
S
Issue
这个依赖的功能
实现的咋样了?
去Jira看看状态
…
Issue
S
发布
分支
这个服务的部署
yaml应该怎么配
置?问问别人吧
S
特性
分支
修复
分支
S
要一个新的测试环境,找
DevOps那边申请创建个新的
namespace
要开发一个新的服务,应该用
哪些组件版本?有没有现成的
脚手架可以用?
S
外部
依赖
S
特性
分支
CI
流水线
S
S
PR/
MR
S
…
Service
文档
要调用另外一个服务接口,
这个接口谁负责的?文档在
哪里? 是不是又要拉个会
碎片化、复杂化的开发生态系统
要一个新的MySQL测试数据
库,得去XX云/云管那边申请
创建一个
S
Service
测试环境部署下
去了,好像有点
问题,去K8s那边
看看情况
复杂多变的应用架构和基础设施
6. 复杂度瓶颈导致开发人员效率和满意度降低
从而影响产品交付质量、速度和其他指标
开发人员效率
期望状态
复杂度限制
实际状态
复杂度提升
初期
复杂度瓶颈
DORA关键指标 变更速度 DORA关键指标
产品质量 软件、工具及团队复杂度 产品质量
安全及合规 开发人员认知负担 安全及合规
开发人员满意度 开发人员满意度 开发人员满意度
参考:The Atlassian DevOps maturity journey
时间
7. 什么是平台(Platform)?
“A digital platform is a foundation of self-service APIs, tools, services,
knowledge and support which are arranged as a compelling internal product.
Autonomous delivery teams can make use of the platform to deliver product
features at a higher pace, with reduced coordination.”
-
By Martin Follower and Evan Bottcher, 2018
https://martinfowler.com/articles/talk-about-platforms.html
8. 什么是平台工程(Platform Engineering)?
来源: https://www.gartner.com/en/articles/what-is-platform-engineering
平台工程是一套用来构建和运营支持软件交付和生命周期管理的自助式内部开发者平台的机制和架
构。平台工程的目标是优化开发者体验并加快产品团队为客户创造价值的速度。
Gartner
9. 平台工程的价值?
10. 内部平台及其构成
11. 内部开发者平台?
Platform Engineering: Scale Delivery
Conceptual outline of an example platform and its principal components
Development Team
Consumption
Engineering Platform
Reusable
Components
Developer
Tools
Self-Service
Developer Portal
Platform
Engineering
Team
Automation
Complex Infrastructure
Source: Gartner
来源: https://www.gartner.com/en/information-technology/insights/top-technology-trends
来源: https://appdelivery.cncf.io/whitepapers/platforms/
12. 典型内部平台的逻辑架构
产品团队
产品团队
平台
接口
层 UI (Web Portal) + API + CLI
平台
能力
提供
层 开发工具、模
板及文档等
持续集成&流
水线
应用及基础设施编排
基础
设施
层
应用配置管理 (Application
Configuration Management)
部署管理 (Deployment
Management) 成本管理 (Cost
Management)
基础设施编排 (Infrastructure
Orchestration) 环境管理 (Environment
Management)
Dev
Environment
Test
Environment
产品团队
操作及改进
(Operate and Improve)
集成及部署
(Integration and Deploy)
发现及创建
(Discover and Create)
代码仓库/版本
控制系统
…
产品团队
产品团队
Staging
Environment
Production
Environment
安全及合规自动化
可观测性
13. 内部平台建设的典型技术栈
14. 目前平台建设的主要演进技术方向
面向开发人员的 以应用为核心的
一站式自服务开发者门户 应用及基础设施统一编排
15. 开发者门户
• Backstage https://backstage.io/
• Atlassian Compass https://www.atlassian.com/software/compass
• Cortex https://www.cortex.io/
• OpsLevel https://www.opslevel.com/
• Port https://www.getport.io/
• Roadie (Backstage as a Service) https://roadie.io/
• Cycloid https://www.cycloid.io/
• Configure8 https://www.configure8.io/
• ......
16. Backstage
CNCF Incubation Project
framework
来源:https://ossinsight.io/analyze/backstage/backstage#overview
17. Backstage Architecture
18. Backstage Plugin 生态
插件类型:
• Standalone
• Service backed
• Third-party backed
19. 研发管理平台
开发者门户
vs
一站式DevOps平台
XXX平台
20. Service Catalog
21. 基于Catalog构建的对象视图
22. 基于Catalog构建的对象视图(续)
23. Software Template
24. Search Plugin
25. 基于Backstage的开发者门户的核心价值?
Search
全局搜索 – 信息共享与可发现
Software Catalog Software Template
资源及信息共享 - 透明化 最佳实践共享及合规 – 标准化
Plugin Ecosystem
一站式汇总及操作 – 自服务能力
26. 应用及基础设施编排
• OAM https://oam.dev/
• Score https://score.dev/
• Kubevela https://kubevela.io/
• Crossplane https://www.crossplane.io/
• Seal https://seal.io
• Waypoint https://www.waypointproject.io/
• Humanitec https://humanitec.com/
• Qovery https://www.qovery.com/
• Acorn https://acorn.io
• ......
27. 应用及基础设施编排的关键着力点
将复杂的基础设施能力以“可复用服务方式”移入产品团队的“舒适区”
平台及运行时无关 关注点分离 动态配置管理
多应用运行时支持,包括云原生及传统
应用部署与管理。底层平台无关,支持
Kubernetes集群、公有云或者私有云基
础设施,实现多云、混合云统一部署与
管理。 应用研发和运维工程师通过应用模块组
装并管理应用,平台及基础架构运维工
程师提供基础设施能力和应用模块支
持,屏蔽并降低基础设施复杂度,实现
关注点分离。 基于组件模块提供上层应用定义组装能
力,结合应用部署的不同环境支持动态
的配置覆盖及管理能力,降低应用部署
与管理负担。
28. Workload/Application Specification
原生Kubernetes yaml定义仍占据绝对主导地位
OAM
Seal
Score
29. 关注点分离
定义应用模块/组件,应用最佳实践,提供可配置参数
Core Engine
……
阿里云主机
with Tomcat
web服务
平台团队
MySQL Chart
阿里云RDS
Application
K8s Connector K8s Connector AKS K8s Connector
vSphere Connector Aliyun Connector Aliyun Connector
Dev&Test Env Staging Env Prod Env
定义环境并连接基础设施
Application
Application
Dev&Test Env
产品团队
web服务
Staging Env
MySQL Chart
基于模块/组件定义组装
应用并设置配置参数
选择部署环境
设置环境/实例相关参数
基础设施
30. 基础设施编排
Crossplane
Terraform
31. 平台工程建设原则
32. 平台工程的建设原则
最小可用平台
基于实际使用情况构建简单易用的平台,降低
开发者认知负担
用户自服务
最大化用户自服务能力,提升自动化程度,提
高开发者效率,最大化价值交付
需求驱动
Thinnest
Viable
Platform
Self-Service
Consumption
Demand-
Driven
平台工程
原则
Platform as
a Product
Paved
Roads
铺平路径
通过平台为开发人员提供铺平路径,提供一致
性、可预测、透明的应用迭代交付体验
来源:Gartner-3 Steps to Kickstart Platform Engineering in Your Organization
从解决开发人员面临的实际问题和痛点出发,
设计平台的功能
平台即产品
平台团队以产品开发的理念建设平台,确保平
台跟随企业数字化深入不断迭代演进
33. 蹭个热点:* + ChatGPT
34. 平台工程领域ChatGPT可以做什么?
开发者门户
• 集成AI辅助的IDE
• 基于内部数据的辅助分析应答
• ……
应用及基础设施编排
• 辅助组件/模块模板开发
• 应用部署辅助
• 部署运行错误分析
• ……
优化产品团队体验、提高产品团队效率的终极目标?
35. 加入ChatGPT辅助尝试 – 生成应用模块
输入自然语言
描述
获得AI生成的
代码模块
AI辅助纠错代
码模块
提交代码模块
到Git仓库
生成相关PR
使用该部署jar
包的模块
36. 进一步工作 – 微调与专用模型
通用大模型
(GPT-4)
预训练 微调数据准备
通用文本
大数据集 领域特定
数据集
专用模型
微调
验证和
测试
验证测试
数据集
部署和
使用
37. 基于专用模型的应用部署与管理
38. Seal在平台工程领域的尝试
产品团队
企业
内部
开发
者平
台
产品团队
Dev
Portal
发现及创建
(Discover and Create)
产品团队
操作及改进
(Operate and Improve)
集成及部署
(Integration and Deploy)
Pluggable Framework
开发工具、模
板及文档等
代码仓库/版本
控制系统
持续集成&流
水线
部署管理 (Deployment
Management) 成本管理 (Cost
Management)
基础设施编排 (Infrastructure
Orchestration) 环境管理 (Environment
Management)
Test
Environment
安全及合规自动化
应用配置管理 (Application
Configuration Management)
Staging
Environment
App
Manager
Dev
Environment
基础
设施
平台
…
产品团队
产品团队
Production
Environment
可观测性
39. 欢迎进一步交流探讨
Seal官方公众号
平台工程社区公众号
40.