推荐序
十年前,我在一个大型的复杂项目中担任项目经理。彼时,敏捷软件开发方法并没有像今天这样广为人知。整个软件项目的开发周期分为六个大的交付里程碑,我和团队一起遵循需求分析、软件设计、本地开发、构建、测试、发布、部署、运维的全流程。然而与许多大型研发项目类似,每次上线前都会面临“煎熬”:部署代码需要更多时间;一旦出现生产问题,开发人员无法访问基础设施,且基础设施问题可能需要很长时间才能解决,依赖多团队、跨组织合作。
这就是“最后一公里”的问题,即如何让软件从“完成开发”迅速实现“上线发布”,以及如何让软件工程师拥有一种通用语言,通过软件交付自动化和架构、流程的变更,使软件的构建、测试和发布更加快捷、频繁和可靠。
要想在数字时代真正繁荣发展,我们都需要像“软件人”一样思考。软件人是那些透过软件视角看世界的人。我们无限乐观,因为我们相信,任何业务问题一旦进入软件领域,都可以得到解决。把越来越多的问题带入软件领域,正是我们这些软件从业者在过去数十年里一直在做的事情。在这个过程中,我们改造CI/CD流水线并采用GitOps流程,于是有了像Kubernetes和Docker这样的标准,所有工程师就可以在基础设施和部署方面使用一种通用语言。
本书为我们打开了一扇门。全书第一部分系统讲述了GitOps的演进过程,以及Kubernetes与GitOps的关系。第二部分深入浅出地讲解了环境管理、流水线、部署策略、访问控制等,这些模式与流程对于我们并不陌生。作为读者,我们常常会问:软件为什么、以及如何解决这些问题,该部分给出了答案。第三部分从工具层面展开,引入工具并实现自动化,它们是持续部署落地的关键环节。
我与本书的译者张扬老师相知多年,我非常敬重他在中国推进DevOps落地的责任与担当。DevOps的理念最早在十多年前出现,它代表着一种尝试,通过让开发人员处理所有的步骤来提高开发效率。我们希望将DevOps的三大原则“流动、反馈和持续学习”拓展到整个业务领域,这并不容易。但正如《人月神话》中提到的:软件工作充满乐趣,这是因为我们能够创造出于他人有益的东西,享受随之而来的快乐情绪;我们能够制造类似“九连环”和拼图这样环环相扣的复杂装置,并且观看它们精巧地运转。
数字化转型有一个非常重要的目的,即让客户和最终的生产者距离更近,从而降低客户和企业内部的交易成本,最终降低全社会的交易成本。数字化转型的关键在于拉通客户端的需求和企业内部生产运营,这就需要企业内部各个部门的快速协作与灵活变通,这些工作是最难的。作为数字化转型顾问和大型研发团队的领导者,我很庆幸看到本书的问世,书中的很多实践和工具能帮助我们推进数字化转型。
建议大家静下心来,阅读这样一本好书,理解书中讲述的模式、流程、工具以及软件设计的艺术。开卷有益,祝阅读愉快!
万学凡,凯捷咨询全球副总裁,中国区数字化团队负责人