最近在纽约举行的FutureStack 2017[1]大会上,Airbnb的软件工程师Melanie Cebula谈到了她们公司的微服务之旅以及从中得出的十条经验。
Airbnb在191个国家的65000个城市开展共享住房服务,今年夏天他们迎来了第400万个房源。仅今年夏天,就有4500万客人会使用Airbnb的房源,自2008年以来共有2亿客人入住。
为了实现这一目标,Airbnb需要每周部署3500个微服务,每年总共部署75000个生产环境,他们目前已经拥有900名工程师,并且还在持续招聘。
“从根本上来说我们需要百分之百的可用性,同时我们也希望百分之百的生产率,”Cebula说。“百分之百的可用性意味着我们的网站对于我们的客户、房东和员工是完全可用的,百分之百的生产率意味着生产环境中的每个员工都可以很容易地创建、修改和发布功能。”

1、单体架构优先
不要直接从微服务开始,Airbnb在代码基线中仍然维护了一个Ruby on Rails单体应用,这个应用已经工作了很长时间并且允许聚焦于基础设施。Cebula说从微服务开始是预先优化的,但不是必需的。
但是当公司发展壮大后,创建一个开始调研微服务的计划就非常重要了。对于Airbnb,这个转折点是在50万行代码时,这时代码增加很快,他们意识到代码的每年倍增是不可伸缩的。
如果把新消费与新零售这两股潮流结合到一块儿聊下怎么样?做一个规模不大的封闭沙龙,定向邀请一些业内玩家在一起聊个半天?
“同时DevOps文化的创立也是非常伟大的”,Cebula说到,“你希望每一个工程师都准备好了支持他们的服务,因为我们现在是按照一个微服务配备三个工程师的比例,微服务还会持续增加。”对于Airbnb来说,DevOps文化的兴起来自于他们的系统运维团队。
在发生一些事故时,系统运维团队有三个主要职责,他们第一需要对问题进行分类,第二协调反馈,第三需要将反馈与合适的内部服务团队、产品团队、基础设施专家和第三方服务部门沟通。
随着时间的推移,Cebula说到,系统运维团队“出人意料地成为了在一家历史上以产品驱动为主导的公司内部建设DevOps文化的巨大杠杆,以后当公司试图扩展大型服务时,这会变得非常重要。”
系统运维培训对所有工程师开放,并且可以随叫随到。 根据Cebula的说法,他们开放的这些培训广受欢迎,据了解,现在有超过33%的工程师参加培训。 他们学习基础设施、当前的架构以及演进过程,如果他们有兴趣的话,还可以学习如何设置即时响应、如何做成一个有效的即时响应。 他们还有一个动手项目,每个人都被分组参加。 据她介绍,工程师认为这是一个亮点。
Cebula说,开发人员不擅长试图追踪所有这些工具。 但是开发人员可以理解代码。
她说,每项服务都应该使用像New Relic这样的标准化工具。 这将允许开发人员以相同的方式监控和告警这些跨应用的服务。
同样重要的是让工程师能够在功能代码之外编写度量指标,使开发人员能够轻松编写自己的业务度量指标。 Cebula说,这些告警被配置为代码。 他们有自己的领域特定语言(DSL)来根据这些度量指标编写告警。 创建一个新的告警就像打开一个新的pull request一样简单。
手工操作步骤是非常困难的,还容易出错。 所以所有一切都尽可能自动化。
当拆解这些服务时,Cebula建议,“需要确保考虑它们的共同点,这些服务应该具备什么特性可以来构建我们的配置实现特定的效果。”
微服务技术演进是一个漫长而艰苦的过程,Cebula指出Netflix花了十年的时间才完全从单体应用转向微服务。 她说,可能你的第一个服务是不好使的。 微服务技术演进是非常有挑战性的,你必须提醒自己,一切都会好起来的。
一旦已经创建了微服务,稍后就会看到程序在速度和自动化程度方面的提升。 Cebula说:“这太棒了。” 这时你会意识到仍然有数百万行代码停留在单体应用里。 为了移植代码,您将不得不与基础设计架构团队合作,他们一直在构建微服务,同时还要引入产品团队,开始分拆单体应用。 引入产品工程师是关键。 她说:“你可以向他们展示这些非常棒的图表,说明是如何可以并且真正快速部署任何他们想要的服务,这将是非常棒的。” 但是你必须获得真正用于微服务转型的支持。
理想的情况是,您只需要定义与您的服务相关的内容。
相关链接:
1. https://www.thenewstack.io/tag/FutureStack-2017
原文链接:https://thenewstack.io/airbnbs-10-takeaways-moving-microservices/
基于Kubernetes的DevOps实践培训
本次培训内容包含:Kubernetes架构、安装、深入了解Kubernetes、Kubernetes高阶——设计与实现、Kubernetes落地实践、微服务、Cloud Native等,点击识别下方二维码加微信好友了解具体培训内容。