ThoughtWorks高级咨询顾问顾宇-无服务器化的微服务持续交付

damagedduplicate

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

本话题经由一个真实的微服务拆分案例介绍了如何使用 AWS Lambda 和 AWS API Gateway 实现微服务。并介绍了如何构建基于 AWS 无服务器风格的持续交付流水线。以及使用 AWS Lambda 和 AWS APIGateway 实现微服务的注意事项。

文字内容
2. 无服务器化的微服务持续交付 顾宇 ThoughtWorks高级咨询师 DevOpsDays 2017·上海站
3. ThoughtWorks 高级咨询师。在 ThoughtWorks分别以 微服务架构师、微服务咨询师、 DevOps 咨询师 、DevOps 工程师以及软件开发工程师的角色参与了国内外共计 7 个产品和项目的微服务咨询和实施。 现在主要参与 ThoughtWorks 国内外交付项目解决方案的架构设计与实施,以及国内DevOps以及微服 务相关咨询。并长期专注于DevOps、微服务相关最佳实践以及全功能产品团队发展。 在加入 ThoughtWorks 之前,曾经参与中国移动 10086 呼叫中心以及中国联通省级 BOSS 系统的研发 、实施和割接。曾任项目经理,维护经理,开发工程师等职务,拥有丰富的大型系统生产环境实战经验 。 于2015年和ThoughtWorks其它同事翻译并出版《七周七Web框架》,并在等多个平台和媒体发表 DevOps 和微服务领域相关文章。 DevOpsDays 2017·上海站
4. 目录 1 什么是无服务器架构? 2 基于 AWS Lambda 的无服务器架构 3 打造无服务器化的微服务持续交付流水线 4 无服务器化的挑战 5 云计算竞争的下一个阶段 DevOpsDays 2017·上海站
5. 什么是无服务器架构? DevOpsDays 2017·上海站
6. 什么是无服务器架构? http://readwrite.com/2012/10/15/why-the-future-of-software-and-apps-is-serverless/ DevOpsDays 2017·上海站
7. 应用要上线了,当 Ops 提出一堆问题 权限? 防火墙? 吞吐量? 数据库锁? 资源开销? 组策略? 性能? SDK 版本? 安全补丁? DevOpsDays 2017·上海站
8. 程序员眼里的生产环境 “资源是无限的” —— CPU,内存,磁盘等资源都是无限的 “老子就是 root,怎么着吧”—— 完全没有安全意识 “在我机子上运行好着呢呀”—— 用自己的PC 当做生产环境 DevOpsDays 2017·上海站
9. 无服务器 —— 老子就想安安静静写代码 DevOpsDays 2017·上海站
10. 无服务器架构 —— 定义1:BaaS 后端应用即服务 —— 移动互联网的兴起 DevOpsDays 2017·上海站
11. 无服务器架构 —— 定义2:FaaS 函数即服务 —— 云平台的极致 DevOpsDays 2017·上海站
12. 可以使用 Serverless 的云厂商 DevOpsDays 2017·上海站
13. 如果你想自己整一套 https://github.com/apache/incubator-openwhisk DevOpsDays 2017·上海站
14. 目录 1 什么是无服务器架构? 2 基于 AWS Lambda 的无服务器架构 3 打造无服务器化的微服务持续交付流水线 4 无服务器化的挑战 5 云计算竞争的下一个阶段 DevOpsDays 2017·上海站
15. 背景 —— 订单跟踪系统 DevOpsDays 2017·上海站
16. 架构痛点 —— 经典单体架构痛点 交付周期长 —— 一个功能上线需要经过 45 分钟 测试周期长 —— 无关的部分仍然需要测试,20~27 分钟 部署周期长 —— 多层 EC2 实例部署,部署需要15分钟 依赖功能多 —— 一个功能的改动阻塞其它部门开发和测试 DevOpsDays 2017·上海站
17. 架构师守则 No1:不要和康威定理对着干 DevOpsDays 2017·上海站
18. 单体架构就是一个灰犀牛问题 DevOpsDays 2017·上海站
19. 单体架构就是一个灰犀牛问题 罗马不是一天建成的,泥球也不是一天滚出来的 管理层和开发人员对架构风险和技术债的漠视 可靠性设计 并不是 过度设计 DevOpsDays 2017·上海站
20. 组织痛点 —— Ops 成本极大 AWS 需要专业的知识和培训 Ops 用的工具远多于编程语言 Ops 拥有着阻碍 DevOps 的权限 DevOps Team 在一定情况下会变成 DevOps反模式 DevOpsDays 2017·上海站
21. 什么时候拆微服务? 系统边际功能的交付成本 >= 系统的总维护成本 DevOpsDays 2017·上海站
22. 组织痛点 DevOpsDays 2017·上海站
23. 架构痛点 部署周期太长 DevOpsDays 2017·上海站
24. 订单跟踪系统 DevOpsDays 2017·上海站
25. 常见架构:用户界面驱动的应用程序 DevOpsDays 2017·上海站
26. 常见架构:消息驱动的应用程序 DevOpsDays 2017·上海站
27. AWS Lambda 的编程模型 Request Context Object ENV var Handler Lambda Function Logging Response Exceptions container(execution environment) DevOpsDays 2017·上海站 5 mins max CloudWatch
28. AWS Lambda 简介 —— 优势 ▫︎ 无需初始化和管理服务器。 ▫︎ 按请求收费,不用考虑负载均衡。 ▫︎ 根据代码运行时间付费。 ▫︎ 自动处理内存,CPU,网络和其它资源 。 ▫︎ 包括了初始化,监控,自动打安全补丁,日志。 DevOpsDays 2017·上海站
29. 基于 AWS Lambda 的无服务器架构 DevOpsDays 2017·上海站
30. 目录 1 什么是无服务器架构? 2 基于 AWS Lambda 的无服务器架构 3 打造无服务器化的微服务持续交付流水线 4 无服务器化的挑战 5 云计算竞争的下一个阶段 DevOpsDays 2017·上海站
31. 基于的无服务器架构流水线总览 前端预发布 前端预发布测试 前端正式发布 后端预发布 后端预发布测试 DevOpsDays 2017·上海站 后端正式发布
32. 基于 AWS Lambda 的无服务器架构 —— 前端 TDD 提交 构建 部署 发布 Pull Request 上传至 S3 CDN 更新 DevOpsDays 2017·上海站
33. 基于 AWS Lambda 的无服务器架构 —— 后端 提交 测试 部署 验证 发布 Pull Request S3 DevOpsDays 2017·上海站
34. 构造无服务器架构的流水线 Endpoint /getOrder Stage UAT Alias $LATEST UAT PreProd Prod /submitOrder /orderTrack PreProd Prod $LATEST UAT PreProd Prod $LATEST UAT PreProd Prod DevOpsDays 2017·上海站 Version ver 4 ver 3 ver 2 ver 1 ver 6 ver 5 ver 4 ver 3 ver 4 ver 3 ver 2 ver 1
35. 构造无服务器架构的流水线 Coding + Test Frontend API Spec Backend Deploy AWS S3 API GateWay Lambda Verify E2E Test Release CDN update API Gate update DevOpsDays 2017·上海站
36. 整个过程只有一台服务器:CI DevOpsDays 2017·上海站
37. LambCI - 无服务器持续集成 DevOpsDays 2017·上海站
38. LambCI - 无服务器持续集成 DevOpsDays 2017·上海站
39. 效率的提升 理论开发效率提升了至少 8 倍 = 16 人月(8人8周) to 2 人月(4人2周) 基础设施即代码配置减少了 82% = 4732 行 to 822 行 从提交到部署的时间缩短了 84.4% = 45min to 7 min 基础设施导致的故障率降低了 % ? DevOpsDays 2017·上海站
40. Ops 的工作剩下了三件事 架构 DevOpsDays 2017·上海站 流水线 监控
41. 目录 1 什么是无服务器架构? 2 基于 AWS Lambda 的无服务器架构 3 打造无服务器化的微服务持续交付流水线 4 无服务器化的挑战 5 云计算竞争的下一个阶段 DevOpsDays 2017·上海站
42. 函数的开发 函数的开发测试部署非常快,几乎不需要等待。 用更多的时间沟通,用更少的时间编程。需求分析完,功能就开发完了。 更简单和面向资源的抽象方式。(What - How - Where) 对复杂问题的拆解更简单。 DevOpsDays 2017·上海站
43. Serverless DevOpsDays 2017·上海站
44. Claudia.js DevOpsDays 2017·上海站
45. Apex DevOpsDays 2017·上海站
46. 测试 BDD/ATDD 更加重要。 单个函数虽然很好测试,但函数的集成不一定好测试。 所有的资源都在线上,你不需要 Mock 了。 从测试金字塔到测试冰激凌。 DevOpsDays 2017·上海站
47. 测试 —— 测试金字塔到测试甜筒 UI Integration Service Unit DevOpsDays 2017·上海站
48. 测试 —— 测试金字塔到测试甜筒 BDD/ATDD 更加重要,因为会带来更多的价值。 单个函数虽然很好测试,但函数的集成不一定好测试。 在线直接 测试 不要尝试去 Mock 更多的精力在于和 AWS 的集成测试 DevOpsDays 2017·上海站
49. 配置管理 Serverless 的架构即函数 + 资源配置 微服务作为封装一组函数和资源的单元 由于粒度更小,对基础设施依赖更大,配置管理的难度更大。 DevOpsDays 2017·上海站
50. 云厂商的重度依赖 DevOpsDays 2017·上海站
51. 目录 1 什么是无服务器架构? 2 基于 AWS Lambda 的无服务器架构 3 打造无服务器化的微服务持续交付流水线 4 无服务器化的挑战 5 云计算竞争的下一个阶段 DevOpsDays 2017·上海站
52. Serverless 架构的核心 服务即状态机 ( Service as a state machine) 状态即版本化配置 (Status as versioning configs) 状态转换即事件消费 (Status transition as events consuming) DevOpsDays 2017·上海站
53. 服务即状态机 ( Service as a state machine) DevOpsDays 2017·上海站
54. 状态即版本化配置 (Status as versioning configs ) DevOpsDays 2017·上海站
55. 状态转换即事件消费 (Status transition as events consuming ) DevOpsDays 2017·上海站
56. 云计算的未来是 配置 + 资源 代码本身就是一种配置 未来的应用是配置和资源的组合 高度自动化和抽象化的关键在于制定 CloudNative 的 DSL DevOpsDays 2017·上海站
57. 平台即编程模型 现在的编程模型由编程语言平台决定,语言平台又和操作系统以及硬件相关联。 未来的编程模型由云平台决定,对于资源和资源的使用方式的管理会更加方便。 DevOpsDays 2017·上海站
58. 平台即编程模型举例:AWS IoT DevOpsDays 2017·上海站
59. 会议 培训 咨询 • 8月18日 DevOpsDays 上海 • 全年 DevOps China 巡回沙龙 • 11月17日 DevOps金融上海 DevOpsDays 2017·上海站 • EXIN DevOps Master 认证培训 • DevOps 企业内训 • DevOps 公开课 • 互联网运维培训 • 企业DevOps 实践咨询 • 企业运维咨询 商务经理:刘静女士 电话 / 微信:13021082989 邮箱:liujing@greatops.com
60. DevOpsDays 2017·上海站 Thanks 荣誉出品 高效运维社区 国际最佳实践管理联盟
61. 想第一时间看到 高效运维社区公众号 的好文章吗? 请打开高效运维社区公众号,点击右上角小人,如右侧所示设置就好 DevOpsDays 2017·上海站