云原生落地:企业级DevOps实践
上QQ阅读APP看书,第一时间看更新

前言

为什么要写这本书

数年前读吴军老师的《浪潮之巅》,书中写到100多年来,总有一些公司很幸运地、有意识或无意识地站在技术革命的浪尖之上。在这十几年间,它们代表着科技的浪潮,直到下一波浪潮的来临。随着时代的发展,用户的需求在不断改变,技术也在不断地推陈出新。

10年前,云计算的概念被炒得火热,犹记得当时偶遇多年不见的高中同学,问及近期的工作,他说在读研,搞云计算方向,当时我感觉他一定是被导师“忽悠”了——“云计算”太虚无缥缈了,一如今天的“元宇宙”。

质疑阻挡不了技术前进的脚步,新技术对于一些企业来说,往往从最开始的“看不见”,到后来“看不起”,再到“看不懂”,最后终于“跟不上”了。经过10年的演进,无论国外还是国内,云计算的概念已经耳熟能详,上云已经成为许多中小互联网公司的首选。

在“云”这种基础设施平台“摸爬滚打”的10年中,技术架构也在进行着不断的突破。最开始接触Spring Cloud是在2015年,看Spring官网推出了一套组件,网关、负载均衡、熔断器、定时任务,一套框架全部搞定。这大概就是《增长黑客》中提到“啊哈时刻”。后来公司开始提供多种通用的组件包,Spring Cloud在公司内部逐渐流行。

后来机缘巧合下做一个印度项目,阿里系的技术栈一时间都打了水漂,全都没法用,阿里云在印度也没有节点。为了支持业务,只能闭门造轮子,从开源的ELK取代EagleEye开始入手,重新搭建了一套监控报警体系。为了便于ELK集群的反复快捷构建,不得不去熟悉Dockerfile、Compose等新技术。

对于云、以Spring Cloud为代表的微服务、Docker来说,有的工程师可能接触得较晚,而CI/CD对于每一个工程师来说都是一入行便形影不离的体系。犹记得2011年京东的早期发布流程,10个步骤可能有5个步骤都是线下进行的,每次发布都会排队到凌晨,我们今天说的“敏捷”“持续”,在当时看来简直就是神话。直至后来体验了阿里的Aone,我才感受到原来应用发布还可以如此“丝滑”。

对于云原生的实践,完全是来自架构师对新技术的尝试,如同网游中出了新的角色,总想去充值抽卡一样。2018年的自如技术故障连连,发布的问题、环境的问题尤为凸显,因此保障中心最先动手的就是容器化和CI/CD。云当然是第一选择,我们发现当时很多云厂商的云原生配套基本也是在试点阶段,同时Kubernetes已经是众星捧月般的存在了,因此当时的形势造就了自研云原生的落地。

后来的几年间,各大互联网技术会议都少不了云原生相关话题的讨论。自如作为同类型的中型互联网企业,在落地云原生的过程中,有很多共性的问题,于是,我也想把落地过程中的思考、选择、实施路径、走的弯路等一一呈现给大家,期待能够为更多热爱云原生、拥抱新技术的团队提供一些值得借鉴的经验。

读者对象

技术无边界,本书对于广大工程师群体皆适用,尤其适合以下读者阅读。

·架构师群体

·SRE(Site Reliability Engineer,站点可靠性工程师)或应用运维工程师

·想了解容器化转型的运维工程师

·想进行开发提效的基础架构工程师

·想进行服务网格实践的工程师

·DevOps团队

·技术负责人、运维负责人、CTO

本书特色

与其他讲解云原生的图书不同,本书会缩减关于云原生理论部分的篇幅,侧重讲解实践。比如:运维侧后台系统如何选择,容器化迁移如何分阶段实施,Kubernetes中的网络模型、存储模型、日志模型如何建设,基于client-go如何做业务功能开发,等等。同时,在开发侧,会给大家呈现建设CI/CD的元数据如何定义,分支模型、环境模型如何统一标准,如何降低研发人员的使用门槛,配套的工具有哪些等内容。

如何阅读本书

本书分为4个部分。

第一部分“云原生基础”(第1~4章) 第1~3章简单介绍了云原生的发展历史、自如技术的发展历程和选择云原生落地的背景。第4章对Docker的核心概念做了简要回顾,没有接触过容器的读者可以阅读此部分,对容器的核心概念做一个宏观了解。

第二部分“云原生落地”(第5~9章) 第5章对Kubernetes的核心概念做了介绍,第6、7章讲解了Kubernetes管理后台以及核心组件如何选择。第8、9章面向企业级的定制开发,对必备的client-go核心组件做了深入剖析。

第三部分“云原生发布平台”(第10~14章) 第10、11章重点对环境、分支等概念做了统一,为后续的CI/CD落地奠定基础。第12、13章分别从持续集成和持续部署两个方面具体介绍云原生架构下的具体实现,比如镜像如何管理、集成工具如何选择、流水线怎么构建、资源如何管理、发布策略如何定义等。第14章介绍一些常用的工具,为整个CI/CD工具锦上添花。

第四部分“云原生迭代”(第15~17章) 第15章侧重讲解平台的推广与运营,第16章对服务网格的落地做了重点展现,比如接入Istio的方法、数据面的配置、限流熔断的实现等内容。第17章是对整本书的总结,重点介绍了在云原生实践过程中的得与失,并提供一些鲜活的案例供读者参考。

勘误和支持

由于作者的水平有限,加之编写时间仓促,书中难免会出现错误或者表述不准确的地方,恳请读者批评指正。

致谢

感谢所有致力于云原生实践的同行,本书的很多实践案例和思路都源于他们的杰出成果。

感谢机械工业出版社华章分社的编辑老师杨福川和韩蕊,他们在这一年多的时间里始终支持我们的写作,鼓励、帮助和引导我们顺利完成书稿写作。

最后感谢在背后支持我们的家人,感谢他们的无声支持!

应阔浩

2022年7月