云原生架构下的大规模团队DevOps实践
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Cloud Native是指在云环境下构建、运行、管理软件的新的系统实践范式,充分利用云基础设施与平台服务,适应云环境,具备(微)服务 化、弹性伸缩、分布式、高可用、多租户、自动化等关键特征的架构实践;建立全功能团队、发展全栈工程师并高度协作的组织,采用 DevOps研发模式、自动化工具,实现微服务持续交付,是支撑Cloud Native架构的最佳组织和工程实践。
发现
获取
管理
服服务务
使用
计量
7
架构:架构解耦,最小可行产品是敏捷的保障
1. 架构与系统解耦,做到组件化,乃至微服务化:
实现松耦合,可并行开发、构建、测试、部署、运行的最小可运行产品/特性。
2. 需求分解的原则:
需求分解遵循小步快跑,同一个特性可以由多个迭代Story逐步演进,从简单可用、到功能完善
云原生架构下的大规模团队DevOps实践
背景:坚持不断的持续改进
DevCloud
业界先进理念
Scrum/看板,DevOps,大规模敏捷
华为研发实践
30+持续研发变革,持续实践积累
+
端到端工具链
覆盖研发全生命周期,管理面+工程面
云计算 微服务 容器化 流水线
• 代码上云,作业上云 • 1亿行代码编译从75分钟缩短到20分钟 • 版本级编译从平均94分钟缩短到31分钟 • 版本构建成功率从平均40%到95%以上 • 系统回归测试从2天缩短到8小时 • 研发作业时间:平均缩短50% • 资源复用率:提升2.5倍
8
组织:面向云原生和微服务的架构,拥抱敏捷和DevOps
面向云服务/微服务的架构,向敏捷/DevOps全功能团队转型:
对特性/部件/服务,完整的实施规划/需求/设计/开发/测试并独立部署、交付、运维(DevOps场景)的项目型团队。
转型前
团队
流程
业务部门 (Business)
商业 计划
市场运营/需求 管理/项目管理
3
云原生:起源,传统应用和互联网应用的需求不同带来的技术要求
传统应用特征
需求比较固定 是个项目,完成后就是运维 用户访问量可以预测,较为固定 用户访问的并发量在千级、万级 非在线业务,允许一定时间的业 务停顿(比如夜间停机),包括系统 维护等
互联网应用特征
需求是持续发展的 是一个产品,持续发展 用户访问量难以预测,而且一般是持 续增长 用户访问的并发量是十万、百万
构架演进
单机版(按月发布)
物理机
前台
业务1 业务3
业务2 业务…
后台
控制中心
…
数据中心
缓存
阶段一:传统架构及瀑布式研发模式,发布 上线耗时1个月
2015~ 2016
服务化(双周发布)
虚拟机
服务1
前台服务
服务3
服务2 服务…
HUB总线
数据服务
缓存服务
其它…
阶段二:服务化改造及使用云化产品交付模 式,交付周期缩短为1-2周
客 户 支 持
市 场 及 销 售
商 业 开 发
商业计 划
需求
计划
开发
集成
测试
部署
供应
监控
9
组织:逐渐转型为自主经营的全功能团队
洞察竞分
规划设计
创新研发
运维监控
构架演进
运营维护
客户反馈
集中决策
启发式决策
组织:服务/微服务全功能团队,产品经理负责制 流程:全流程整合,高度自动化,一键发布
Agile Dev 转型
DevOps 转型
服务1
服务2
服务3 … 服务N
产品经理 产品经理 产品经理 产品经理
技术经理 技术经理 技术经理 技术经理
开发工程师 产品运营 开发工程师 产品运营 开发工程师 产品运营 开发工程师 产品运营
构; 优先抽象通用服务; 优先抽象比较容易识别的,边界比较明
显的服务; 优先抽象核心服务; 采用绞杀者模式。
WEB UI
API GATEWAY
WEB UI 负载均衡 后端服务
DB
WEB UI 负载均衡
MQ 缓存
后端服务
单点登录
WEB UI 负载均衡
后端服务
单点登录wk.baidu.com
table1 MQ 缓存
table2
/...
研发部门 (Dev)
经理/研发工程师 /测试工程师….
设计
需求 开发
用例 重构
特性
单元 测试
计划
Go-tomarket
Bug 修复
部署
运营部门 (Ops)
平台运维/基础 架构运维
供应 配置 编排 部署 报告 监控
转型
在敏捷转型基础上,进一步横向整 合从业务-研发-运营的团队和全流 程。
转型后
DB
DB
WEB UI API GATEWAY
详情页
下单
老系统 DB
订单 DB
库存 DB
购物车 DB
老系统 DB
订单 DB
库存 DB
价格 DB
MQ 缓存
MQ CACHE
6
架构: DevOps单元应实现自服务
服务可被其他应用或开发者自助发现,自助按需获取,自助使用并计量,自助服务管理
自服务的前提是高度自治 从易用性的角度,暴露友好的交互方式(Web界面、命令行、SDK…) 使能应用或开发者简单、高效的使用其提供的
在线业务,业务不能停顿,互联 网应用24小时服务,任何时候中 断服务都是事故
VUCA时代应用特征
需求是模糊的 是一个服务,持续运营 要求业务敏捷性 持续发布 支持海量并发 业务不停顿,灰度发布,发布回 滚,系统在线升级
微服务框架 云原生应用
云原生应用架构
4
云原生:保障Cloud Native成功的一个中心,三个基本点
2015年,第一次上线耗时数周, 开发、测试、运维各自运作
2016年,部署自动化,测试自动 化,系统解耦,上线周期2周,上 线耗费3-6小时
2017年,引进流水线,服务独立发 布,每天5次发布,上线耗费30分钟 -1小时
2018年,微服务独立发布,每天10-20 次发布,上线耗费<30分钟
3
Huawei Confidential
2017~ 2018
Cloud Native微服务化(天级发布)
全云化
服务1
服务2
服务3
微服务框架
服务…
数据服务
缓存服务
其它…
阶段三:微服务版本独立发布模式,配合端到 端的独立交付流水线,实现天级N次上线能力
由横向分层的大系统 ->纵向解耦的小系统演进 / 各个微服务/特性,可由独立团队并行开发交付
架构
弹性伸缩 多租户
分布式 自动化运维 微服务架构 云基础设施与平台服务
高可用 自服务
工程
精益敏捷 持续交付 自动化能力
价值交付
快速 规模 可靠 灵活 高效
组织
全功能团队 全栈工程师
小而自治
5
架构:系统拆分为颗粒度合适的可DevOps的单元,是架构支持DevOps的基础
尽量垂直划分服务; 比较独立的新业务优先采用微服务架