从2017年开始,互联网大会上关于容器的主题越来越多,Swarm、Mesos、Kubernetes等百花齐放;2018年,比较热门的主题有容器化、容器云、服务网格、DevOps;2019年的大会,关于容器编排的主题分享越来越多,如大规模业务Kubernetes集群托管、云原生的开源分布式文件系统、云原生数据库,等等。在外部大环境的影响下,自如技术团队也有了尝试云原生技术的想法。
曾鸣博士在《智能商业20讲》一书中提到,自2000年以来,中国互联网行业创造出了前所未有的奇迹,尤其是最近的10年,互联网行业在应用层面为用户、为行业带来了翻天覆地的变化。从历史的角度来说,互联网叫“联互网”更贴切,基本上经历了连接、互动、结网3个阶段。在这3个阶段中,诞生了许多伟大的公司和产品,如三大门户网站、百度、QQ、微信、微博、淘宝、京东、头条、美团等。从连接、互动到结网的过程,是一个应用更加丰富、人与人的交互不断扩大、效率不断提升的过程,而支持这些变化的核心力量是技术的创新。云原生技术也是在技术浪潮中不断迭代而来的产物。
自2010年以来,云计算从被质疑到被肯定再到蓬勃发展,经历了举步维艰的10余年。到今天,云计算凭借高可用、易维护、弹性、低成本的特性成为众多互联网公司首选的技术基础设施。尤其对于创业公司来说,快速的业务迭代是当前阶段的首要战略,不会花太多的精力去自研基础设施。因此,新业务快速上云逐步成为许多企业的首选,云厂商的IaaS、PaaS、SaaS基本可以满足绝大多数业务场景的需求。在此环境下,企业的技术架构只有更适合在云环境下构建,才能更好、更灵活地支持业务。
同时,如第2章所述,一线互联网公司的技术架构也在从微服务架构不断走向云原生架构。所谓云原生,即“云”+“原生”。“云”是指应用程序运行在云中,而非传统的数据中心;“原生”表示应用程序从设计之初即考虑到云的环境,天生为云而设计,在云上以最佳方式运行,充分利用和发挥云平台的弹性、分布式等优势。因此,企业的技术架构也将朝着如下几个趋势发展。
云环境大大降低了企业自建基础设施的成本,甚至无须组建整个运维团队,上云已是大势所趋。部分企业出于数据安全的考虑,会采用混合云架构。云环境能帮助企业更快地解决跨区域、升降级、安全合规、成本优化等痛点,云平台已经成为企业数字化转型的创新平台。同时,成熟的云厂商越来越多,企业的可选择性也更多,多云会逐步成为企业的主流选择。
云厂商经过十年的发展,已经把每个层次的基础设施都逐步封装成了服务,从最基础的虚拟机、网络、存储到消息队列、缓存、搜索引擎等中间件,再到监控报警、服务治理等工具平台,所有企业共性、通用的基础设施都可以在云环境中找到。研发人员不再需要花大量的精力去重复建设自己的基础设施,拿来即用。
云原生使得开发工程师更聚焦业务代码的开发,不用关注底层Dockerfile如何编写、Deployment如何配置、CRD如何定义,关于容器相关的操作、配置都交给更加专业的运维工程师来处理。甚至,Kubernetes已经成为云时代的操作系统,与Linux一样,Kubernetes也定义了开放的标准接口,向下封装了计算、存储、网络、权限等通用系统资源,同时向上支撑业务应用。通用的技术栈可以加速运维体系的标准化,大大降低人力成本。
2015年12月7日,阿里巴巴推出“大中台、小前台”战略,新设立中台事业群,我第一次听到技术被提升到企业的战略高度。
2017年7月5日,百度掌门人李彦宏用“把无人车开上五环”的营销事件,撕下了百度“搜索公司”的标签,告诉外界百度已经不再是一家互联网公司,“All in AI”是百度的全新技术战略。
2019年3月7日,小米集团组织部宣布成立AIoT战略委员会,负责促进AIoT相关业务和技术部门的协同,推动战略落地执行。
国家层面有5年战略规划,企业也有每年的商业战略计划,技术战略是依托于企业战略的,是对企业战略的技术支持和补充。随着互联网的高速发展,“互联网+”“互联网×”成为很多企业正在摸索的方向。互联网对传统企业的推动力有多大,能否产生十倍、百倍的增效,很大程度上取决于新技术的应用程度,如边缘计算、分布式存储、容器化、5G等。
新技术、新架构一定会跨越鸿沟逐步从早期使用者普及成熟大众,早点拥抱新技术,就可以快速支持突发的业务增长。如果没有快速的弹性能力,业务上就很难应对热点事件带来的瞬时流量;如果没有高效稳定的CI/CD体系,就很难进行每日成百上千次的服务发布;如果没有依托于服务网格的统一服务治理,就很难对成千上万个微服务进行统一的限流降级操作。
在业务上,自如每年的请求量都会翻番,服务器数量也以每年60%的速度在增长,应用数量以每年200个的速度在增加。在技术战略上我们应该做什么呢?我们做了如图3-1的思考。
第一步,搞清楚公司今年大的基调是什么。前面提到,阿里要做中台,百度要做“All in AI”,小米要做AIoT。自如当时全年的口号是做“心服务”,聚焦于服务质量的提升,大幅提升用户净推荐值。
第二步,进一步分解,对应战略方向,公司层面大的目标是什么。即我们的OKR(Objectives and Key Results,目标与关键成果)中的“O”是什么,公司2019年的3个“O”分别是“主营业务规模到150万间”“继续发力服务、旅居等稳定业务线”“创新业务加大投入”。
第三步,分析可能采用的举措会有哪些。比如,是否会开发新的城市?是否会拓展新的业务?是否会挖掘新的渠道?是否会扩大组织规模。这一层要找到关键的5个方向。
上面3个步骤都是对业务的自我理解,接下来就是根据业务方向来分析技术战略了——针对公司业务目标,在技术层面需要具备哪些能力?以图3-1为例,需要技术从稳定性、效率提升、智能化、平台化、用户体验、安全6个方面发力。
下一步要对技术方向做技术能力的详细拆解,比如稳定性维度需要报警体系、业务隔离、异地多活等多种能力的支撑,效率提升维度需要服务治理、容器化、故障平台等能力的支撑。
最后,进一步拆解需要的人力、服务器资源。
经过上述步骤的拆解,我们发现持续发布、持续部署、容器化是当下最需要聚焦的技术要点。同时,从外部技术趋势来看,容器化、Kubernetes逐步成为一种技术的新方向。于是,整个基础架构部门把Kubernetes体系作为部门的核心OKR。
图3-1 技术战略图