华为 软件架构师马博文-海外大型互联网房地产广告公司 DevOps 之路

桂凡白

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

REA Group是澳洲最大的在线房地产广告公司,从2009年开始,REA Group开始进行敏捷转型,其交付方式也逐渐从瀑布式,逐渐过渡为单块架构持续集成的迭代式交付,再演进为微服务架构的持续交付,甚至于持续部署。在过去的6年中,我有幸在REA的项目上和一群极其优秀的开发、运维工程师一起促进和见证了这个转变的过程,也深刻体会到了持续交付以及DevOps给我们的带来的好处。本话题将会介绍我们在持续集成到持续部署的过程中,伴随微服务化,DevOps实施,容器化所做的技术实践,同时也会简单探讨下DevOps未来可能的发展方向。

文字内容
2. 海海外⼤大型互联⽹网房地产⼴广告公司的 DevOps之路路 ⻢马博⽂文 DevOpsDays 2017·上海海站"
3. 关于我: ⻢马博⽂文" •  ex-{ThoughtWorker,Developer},DevOps •  熟悉持续交付,微服务,AWS等 •  熟悉⼤大型⽹网站的运维 •  参与翻译有《Scala编程实战》、《DevOps实践》、 《DevOps Handbook》等书 •  斯达克学院《微服务架构与实践》课程⾼高级篇讲师 •  ⽬目前关注CloudNaAve,函数式编程,Serverless,安全等 •  简书: hCp://www.jianshu.com/u/206a6b0af1c5 DevOpsDays 2017·上海海站"
4. ⽬目录" 1! What’s DevOps" 2 REA的DevOps之路路" 3 DevOps转型的⼀一些建议" 4 What’s Next" DevOpsDays 2017·上海海站"
5. The Big Waterfall" DevOpsDays 2017·上海海站"
6. DevOpsDays 2017·上海海站"
7. 软件交付 == 价值交付" IncepAon scope 迭代 0 User Story 开发 • TDD/ BDD • ⾃自动化 测试 持续集成 • 集成 • 打包 • E2E • UAT 部署 发布 DevOpsDays 2017·上海海站"
8. " DevOpsDays 2017·上海海站"
9. " DevOps是运维和开发⼯工程师参与到 整个服务⽣生命周期-从设计到开发 过程到⽣生产环境维护的-的实践。 - Agile Admin DevOpsDays 2017·上海海站"
10. ⽬目录" 1! What’s DevOps" 2 REA的DevOps之路路" 3 DevOps转型的⼀一些建议" 4 What’s After DevOps" DevOpsDays 2017·上海海站"
11. 背景" DevOpsDays 2017·上海海站"
12. -2008: 存在的问题" 1.  瀑布式开发 •  特性上线慢,反馈周期⻓长 •  沟通成本⾼高 2.  业务逐渐增多,如何保证 •  交付的质量量 •  交付的速度 3.  运维负责部署和维护 •  ⼈人⼯工部署、维护 •  疲于奔命,时不不时会出现重⼤大事故 DevOpsDays 2017·上海海站"
13. 改进的⽅方案" 1.  在⼀一个⼩小的业务部⻔门引⼊入敏敏捷咨询 •  敏敏捷实践,站会,迭代式开发 •  TDD,BDD,持续集成(Jenkins/GoCD) 2.  使⽤用puppet对⽣生产环境做配置即代码管理理 DevOpsDays 2017·上海海站"
14. -2010 达到的⽬目标" 1.  部⻔门内达到每两周交付,⾃自动化测试,持续集 成的 2.  对⽣生产环境的管理理成本降低 3.  敏敏捷实践、持续集成开始推⼴广到其它部⻔门 4.  每两周部署⼀一次(CR),由运维执⾏行行 DevOpsDays 2017·上海海站"
15. 新的问题" 1.  业务发展快,项⽬目团队快速增⻓长,缺乏测试环 境(成本+运维⽆无⼒力力维护更更多的服务器器) 2.  2周⼀一次的部署仍然不不够快,业务需要更更加快 速的上线时间以及来⾃自市场的反馈 3.  增⻓长服务的部署成本对于运维的压⼒力力很⼤大 DevOpsDays 2017·上海海站"
16. 基础设施成本也是个问题" 业务增⻓长 基础设施成本 0 2 4 6 8 DevOpsDays 2017·上海海站"
17. Gandalf Project" We shall use AWS DevOpsDays 2017·上海海站"
18. Gandalf Project" bowen Domain.yml 1 git 2 1 project bowen topology.yml ServiceA ServiceB DatabaseA 2 role version e2e-deploy tool deploy-tool ec2-tools Chef aws-sdk Schema/prod data role DevOpsDays 2017·上海海站" DNS bowen.vpc.com AWS EC2 Service A Service B Database A
19. 全⾃自动化测试" DevOpsDays 2017·上海海站"
20. The J-Curve" DevOpsDays 2017·上海海站"
21. DeployBot: handover deployment to devs" Koji promote release rolling update deploy ssh DeployBot netscaler-tool Nagios-tool ruby Server-01 Server-01 puppet --test DevOpsDays 2017·上海海站"
22. 得到的好处" 1.  快速获得E2E测试环境 2.  通过持续集成⼯工具做⼀一键式⾃自动化部署 3.  团队可以轻松获得这些能⼒力力,⼏几乎不不依赖运维 DevOpsDays 2017·上海海站"
23. -2012" 1.  部署仍然需要⼀一定的权限,经过”批准” 2.  对于单块应⽤用,维护成本⾼高,部署上线的时间 仍然很可观 DevOpsDays 2017·上海海站"
24. " •  软件开发原则,软件可以在任何时刻发布到产 品环境。 - MarAn Fowler •  ⽬目的是减⼩小交付⽤用户需求的成本,时间。 - Jez Humble DevOpsDays 2017·上海海站"
25. 发布从技术决策变为业务决策" DevOpsDays 2017·上海海站"
26. 标准化部署⽅方式(In DC)" rpm.spec depends 1. jdk8 2. c-client scripts: 1. posAnstall Koji Server environment.sh rpm Config-Service DB: mysql PASSWORD: pwd process Nagios Newrelic Base Image Splunkforwarder DevOpsDays 2017·上海海站"
27. 标准化部署⽅方式(In DC)" install recreate-install Generic-Deploy-Tool Netscaler Vmware Ruby NetScaler AcAve-Vserver InAcAve-Vserver 2 unbind 1 bind 3 unbind 4 bind Service-Group-A v1 v1 v2 v2 Service-Group-B DevOpsDays 2017·上海海站"
28. 流⽔水线案例例" DevOpsDays 2017·上海海站"
29. 微服务" •  单⼀一应⽤用程序划分成⼀一组⼩小的服务 •  服务运⾏行行在其独⽴立的进程中 •  服务与服务间采⽤用轻量量级的通信机制互相沟通 •  独⽴立部署,⾃自治,去中⼼心化 DevOpsDays 2017·上海海站"
30. 采⽤用/移植微服务架构" 1.  单块应⽤用逐步解耦为微服务(绞杀者模式) 2.  新的服务直接采⽤用微服务架构 DevOpsDays 2017·上海海站"
31. -2013" 1.  基础设施的初始配置仍需运维帮助 2.  服务过多,基础设施增⻓长速度快,需控制成本 DevOpsDays 2017·上海海站"
32. Migrate to AWS" DevOpsDays 2017·上海海站"
33. 新的打包⽅方式" Tests CI RPM Install New AMI 2 Package 1 Start server Packer Base Image DevOpsDays 2017·上海海站"
34. 基于CloudFormaOon的不不可变部署" AMI Launch ConfigraAon CI User-data Auto Rollback Config Repo DevOpsDays 2017·上海海站"
35. ⾼高可⽤用/⾃自恢复的架构" DevOpsDays 2017·上海海站"
36. 前后端分离" Newrelic RUM DevOpsDays 2017·上海海站"
37. 持续部署" DevOpsDays 2017·上海海站"
38. -2015" 1.  可移植性 2.  Dev/Prod Parity 3.  AMI构建耗时/耗钱 DevOpsDays 2017·上海海站"
39. Docker! Docker! Docker!" DevOpsDays 2017·上海海站"
40. 12factor apps" •  Codebase •  Dependencies •  Config •  Backing services •  Build, release, run •  Processes •  Port binding •  Concurrency •  Disposability •  Dev/prod parity •  Logs •  Admin processes hCps://12factor.net/ DevOpsDays 2017·上海海站"
41. 容器器部署⽅方式" KMS encrypted Git hCps://speakerdeck.com/mdub/rea-shipper-at-infracoders DevOpsDays 2017·上海海站"
42. 类paas的部署⼯工具" AuthenAcate CloudFormaAon •  Immutable •  Blue/Green •  0-DownAme •  Auto Rollback Deploy DevOpsDays 2017·上海海站"
43. 容器器化后的流⽔水线" DevOpsDays 2017·上海海站"
44. 保证流⽔水线的⾼高可⽤用性" DevOpsDays 2017·上海海站"
45. OKTA DevOpsDays 2017·上海海站" VPC EC2 ASG Buildkite agent Buildkite agent Docker in Docker EC2 ASG Buildkite agent Buildkite agent VPC Docker in Docker
46. Build It, Run It – 服务/团队⾃自治" IncepAon 13 Team 2 IPR 6 Arch 4 TMI CD Develop Release DevOpsDays 2017·上海海站" OperaAon 3 AWS 4 5 alerts Slack discussion CDN Newrelic PagerDuty Splunk
47. Wrap UP" hCp://www.yunweipai.com/archives/13501.html DevOpsDays 2017·上海海站"
48. 路路漫漫其修远兮" 职能型组织 瀑布式开发 敏敏捷型组织 敏敏捷 精益 ⼈人⼯工测试 ⼈人⼯工部署 单块架构 2008 ⾃自动化测试 ⾃自动化部署 持续集成 2011 持续交付 DevOps 微服务 2013 去中⼼心化组织 看板 团队/服务⾃自治 2015 DevOpsDays 2017·上海海站"
49. ⽬目录" 1! What’s DevOps" 2 REA的DevOps之路路" 3 DevOps转型的⼀一些建议" 4 What’s Next" DevOpsDays 2017·上海海站"
50. ⾃自动化测试是前提" DevOpsDays 2017·上海海站"
51. ⾃自动化⽤用软件⼯工程的思维⾃自动化" DevOpsDays 2017·上海海站"
52. 以持续交付为⽬目标" DevOpsDays 2017·上海海站"
53. 尽⼀一切可能标准化" DevOpsDays 2017·上海海站"
54. 重视对⼈人的培养和分享的⽂文化" 1.  Embedded Ops -> CD 2.  Pairing -> Cross FuncAonal 3.  On-Call -> Responsibility hCps://www.usenix.org/conference/srecon17asia/program/presentaAon/contad DevOpsDays 2017·上海海站"
55. ⽬目录" 1! What’s DevOps" 2 REA的DevOps之路路" 3 DevOps转型的⼀一些建议" 4 What’s Next" DevOpsDays 2017·上海海站"
56. Serverless" View S3 Client 2 1 API Gateway (2,3,4) AuthenAcaAon HCp Proxy 3 4 Lambda Controller Purchase FuncAon Search FuncAon Model Dynamodb DevOpsDays 2017·上海海站"
57. SRE, e.g The Data Pipeline" hCps://medium.com/nellix-techblog/evoluAon-of-the-nellix-data-pipeline-da246ca36905 DevOpsDays 2017·上海海站"
58. DevOps other Silo, e.g FinOps" hCps://www.slideshare.net/AmazonWebServices/finops-at-rea-innovaAon-in-finance-operaAons DevOpsDays 2017·上海海站"
59. Thanks & QA DevOpsDays 2017·上海海站"
60. Great DevOpsDays 2017·上海海站" Thanks 荣誉出品" ⾼高效运维社区" 国际最佳实践管理理联盟"
61. 想第⼀一时间看到" ⾼高效运维社区公众号" 的好⽂文章吗?" 请打开⾼高效运维社区公众号,点击右上⻆角⼩小⼈人,如右侧所示设置就好" DevOpsDays 2017·上海海站"