华为中央软件院资深专家王磊-CloudNative实践之路

素三诗

2017/11/14 发布于 技术 分类

王磊,华为中央软件院首席软件工程技术专家,前ThoughtWorks首席咨询师,国内首批DevOps Master认证讲师,《DevOps Handbook》中文译者。较早倡导和实践微服务的先行者,多次受邀在大型技术会议主题分享“微服务架构”相关主题,并著有国内首本微服务架构相关书籍《微服务架构与实践》一书。超过10年以上的软件行业经验,从企业应用、互联网应用、服务化平台的架构设计、开发到自动化构建、持续 集成、持续交付以及DevOps的转型实施等有较丰富的实践经验。 西安DevOpsMeetup联合发起人,西安GDCR组织者,敏捷西安组织者,并译有《Ruby Gems开发实战》一书。

文字内容
2. Cloud Native(云原⽣生)应⽤用实践 王磊磊 D e v O p s D a y s 2 0 1 7 · 上 海海 站
3. 华为/中软/软件⼯工程技术专家 ThoughtWorks⾸首席咨询师 Sybase Tech Leader • 《微服务架构与实践》作者 • 《DevOps Handbook》中⽂文译者之⼀一 • 国内较早倡导和实践微服务的先⾏行行者 • 对⾃自动化测试/持续集成/持续交付有丰富的实战经验 • ⻄西安DevOps Meetup 联合发起⼈人 3
4. ⽬目录 1 什什么是Cloud Native 2 Cloud Native的核⼼心特征 3 Cloud Native应⽤用实践 D e v O p s D a y s 2 0 1 7 · 上 海海 站
5. ⽬目录 1 什什么是Cloud Native 2 Cloud Native的核⼼心特征 3 Cloud Native应⽤用实践 D e v O p s D a y s 2 0 1 7 · 上 海海 站
6. Cloud Native起源 2010.5 Cloud Native@Blog Paul Fremantle CTO Of WSO2 • 分布式 • 多租户/按需收费 • 弹性/可伸缩 http://wso2.com/library/articles/2010/05/blog-post-cloud-native/ D e v O p s D a y s 2 0 1 7 · 上 海海 站
7. Cloud Native定义 2013.12 Cloud Native Architecture @Yow Conference Adrain Cockroft VP Cloud Strategy of AWS ex-Netflix Cloud Architect • 基于公有云 • 微服务/伸缩性/可⽤用性/⾃自愈性 • 持续部署、DevOps • 敏敏捷、效率、⾼高度信任的组织 7
8. Cloud Native定义 2015.2 Migrating to Cloud Native Application Architectures Matt Stine Pivotal,Architect • 微服务 • DevOps • 持续交付 • 敏敏捷基础设施 • 基于API协作 • ⼗十⼆二因⼦子 8
9. Cloud Native定义 2015.7 • 容器器化(Containerized) • 动态编排(Dynamically orchestrated) • ⾯面向微服务(Microservices oriented) 9
10. Cloud Native LandScape 10
11. ⽬目录 1 什什么是Cloud Native 2 Cloud Native的核⼼心特征 3 Cloud Native应⽤用实践 D e v O p s D a y s 2 0 1 7 · 上 海海 站
12. Cloud Native的核⼼心特征 基于云的基础设施,运⾏行行/管理理系统的实践范式 架构 分布式/微服务化 弹性伸缩/⾃自服务 持续集成/交付 DevOps ⾃自动化/⼯工具链 ⼯工程 Speed Scale Safety 组织 全功能团队 全栈⼯工程师 D e v O p s D a y s 2 0 1 7 · 上 海海 站
13. Cloud Native的核⼼心特征 - 架构 应⽤用架构 • 快速响应 • 弹性伸缩 • 可⽤用性 • 可重⽤用 基础设施架构 • 云化基础设施 • ⾃自服务接⼝口 • 多租户/可靠性 • 可⽤用性 伸缩性、快速响应 稳定性,可靠性 D e v O p s D a y s 2 0 1 7 · 上 海海 站
14. Cloud Native的核⼼心特征 - ⼯工程 持续交付 • 低⻛风险/⾼高质量量/⾃自动化 • 将发布作为业务决策 https://www.slideshare.net/beamrider9/continuous-deployment-at-etsy 14
15. Cloud Native的核⼼心特征 - ⼯工程 DevOps 与 CALMS • Culture(⽂文化)- 合作&沟通的信任⽂文化 • Automation(⾃自动化)- ⾃自动化“⼀一切” • Lean(精益)- 消除浪费,⼩小批量量交付 • Measurement(度量量)- 收集反馈,持续改进 • Sharing (分享)- 分享经验 & 知识 15
16. Cloud Native的核⼼心特征 - ⼯工程 DevOps 与 3 Ways https://www.icore-ltd.com/devops-three-core-principles/ 16
17. Cloud Native的核⼼心特征 - 组织 全功能团队 17
18. Cloud Native的核⼼心特征 - 组织 全栈⼯工程师 18
19. ⽬目录 1 什什么是Cloud Native 2 Cloud Native的核⼼心特征 3 Cloud Native应⽤用实践 D e v O p s D a y s 2 0 1 7 · 上 海海 站
20. ⼀一个真实的演进案例例 D e v O p s D a y s 2 0 1 7 · 上 海海 站
21. Spring MVC JSP Oracle MyBatis 以营促销的业务系统 40W+ 20+Member 开发与运维分离 3 Month 20 Minute ⼿手动测试为主 多⼈人共享⼀一套环境 D e v O p s D a y s 2 0 1 7 · 上 海海 站
22. 期望 现实 • 2/3周完成特性上线 • 资源按需⽔水平伸缩 • 系统具备⾼高可⽤用性 • 独⽴立的全功能团队 • 版本发布周期3个⽉月 • 单体应⽤用/伸缩成本⾼高 • 停机发布窗⼝口/宕机 • 团队协作成本⾼高 22
23. 最初的数个⽉月⾥里里….. 对应用层架构做了解耦 D e v O p s D a y s 2 0 1 7 · 上 海海 站
24. 收益 • 代码(库)解耦 • 基于业务的边界 • 技术栈的多样性 • 开发责任⽥田清晰 挑战 • 交付周期⽆无明显变化 • ⽆无法独⽴立运⾏行行部署 • 团队组织⽆无变化 • 数据依然耦合 D e v O p s D a y s 2 0 1 7 · 上 海海 站
25. 如何应对? • 优化服务的拆分原则 • 增加服务实现的数量量 • 引⼊入更更多的⽀支撑组件 • …… D e v O p s D a y s 2 0 1 7 · 上 海海 站
26. 接下来的3个月里, 引入一系列CloudNative实践…. D e v O p s D a y s 2 0 1 7 · 上 海海 站
27. 获得的收益 交付周期 -66 3周 3个⽉月 0.7次/⽉月 2.3次/⽉月 500Loc/次 87Loc/次 10m 3m 30% 80% 部署频率 LOC/提交 +3times -63 构建时间 ⾃自动化测试覆盖率 -70 +2.7times
28. 主要的实践 1. 梳理理价值流映射图 2. 构建全功能交付团队 3. 构建可视化交付流程 4. 打通端到端的流⽔水线 5. 确定清晰的度量量机制 6. 持续演进的架构拆分
29. 实践1. 梳理理价值流映射图 D e v O p s D a y s 2 0 1 7 · 上 海海 站
30. 实践1. 梳理理价值流映射图 需求 分析 开发 测试 部署 VAT 5d 10d 8d 2d NVAT 5d 4d 6d VAT(Value Add Time) = 25 d NVAT(Non Value Add Time) = 15 d Cycle Time(VAT + NVAT) = 40 d Efficiency(VAT/Cycle Time) = 62.5% D e v O p s D a y s 2 0 1 7 · 上 海海 站
31. 实践1. 梳理理价值流映射图 How: 1). 确定交付过程相关⻆角⾊色(分析/架构/开发/测试/运维) 2). 讨论并绘出交付过程中的活动 3). 识别价值流中的VAT/NVAT/Cycle Time D e v O p s D a y s 2 0 1 7 · 上 海海 站
32. 实践1. 梳理理价值流映射图 D e v O p s D a y s 2 0 1 7 · 上 海海 站
33. 实践2. 构建全功能团队 D e v O p s D a y s 2 0 1 7 · 上 海海 站
34. 实践2. 构建全功能团队 • SDM • BA/SE • DEV • QA • Ops 识别⻆角⾊色与成员的关系 D e v O p s D a y s 2 0 1 7 · 上 海海 站
35. 实践3. 使⽤用看板可视化流程 D e v O p s D a y s 2 0 1 7 · 上 海海 站
36. 实践3. 使⽤用看板可视化流程 • 任务可视化 • 优化流动率 • 度量量与反馈 D e v O p s D a y s 2 0 1 7 · 上 海海 站
37. 实践3. 使⽤用看板可视化流程 Avg.Lead Time Avg.WIP Avg.Lead Time 基于数据,反馈并改进 D e v O p s D a y s 2 0 1 7 · 上 海海 站
38. 实践4. 打通端到端交付流⽔水线 D e v O p s D a y s 2 0 1 7 · 上 海海 站
39. 实践4. 打通端到端交付流⽔水线 D e v O p s D a y s 2 0 1 7 · 上 海海 站
40. 实践4. 打通端到端交付流⽔水线 • 基于代码创建环境(Alpha/Beta/Gamma) D e v O p s D a y s 2 0 1 7 · 上 海海 站
41. 实践5. 清晰的度量量机制 D e v O p s D a y s 2 0 1 7 · 上 海海 站
42. 实践5. 清晰的度量量机制 端到端的交付效率 代码提交频率 构建失败率 代码提交⾏行行数 服务启动时间 CI构建时间 单元测试占⽐比 过程中的局部效率 D e v O p s D a y s 2 0 1 7 · 上 海海 站
43. 实践6. 持续演进的服务架构 D e v O p s D a y s 2 0 1 7 · 上 海海 站
44. 实践6. 持续演进的服务架构 不不断迭代,循序渐进 1 定义服务 • 业务逻辑梳理理 • 服务的拆分 2 构建服务 • 技术栈选择 • 数据的解耦 3 双模IT运⾏行行 • 注册/发现机制 • 监控&告警信息 D e v O p s D a y s 2 0 1 7 · 上 海海 站
45. 实践6. 持续演进的服务架构 领域驱动设计(DDD) - 领域语⾔言(Ubiquitous Language) - 领域模型(Domain Model) - 特定语境(Bundle Context) - 领域事件(Domain Event) - 聚合根(AggregaVon Root) 45
46. 实践6. 持续演进的服务架构 1. 梳理理业务流程 2. 识别领域事件 3. 识别外部命令 4. 识别聚合根 5. 拆分服务 D e v O p s D a y s 2 0 1 7 · 上 海海 站
47. 获得的收益 交付周期 -66 4周 3个⽉月 0.7次/⽉月 2.3次/⽉月 500Loc/次 87Loc/次 10m 3m 30% 80% 部署频率 LOC/提交 +3times -63 构建时间 ⾃自动化测试覆盖率 -70 +2.7times
48. 下⼀一步...... • 增加服务实现的数量量 • 引⼊入更更多的⽀支撑组件 • 基于容器器/云化基础设施
49. 推荐阅读
50. 谢谢~
51. Thanks 荣誉出品 ⾼高效运维社区 国际最佳实践管理理联盟 D e v O p s D a y s 2 0 1 7 · 上 海海 站
52. 想第⼀一时间看到 ⾼高效运维社区公众号 的好⽂文章吗? 请打开⾼高效运维社区公众号,点击右上⻆角⼩小⼈人,如右侧所示设置就好 D e v O p s D a y s 2 0 1 7 · 上 海海 站