推荐序二
软件开发的本质关乎价值。为了快速交付业务价值,我们引入了能实现快速反馈的软件开发机制——敏捷软件开发。增量式的开发技术及持续交付软件价值,改变了技术和业务的协作方式。
持续集成是敏捷软件开发中的一个重要实践,用于频繁地集成代码并提供代码集成的反馈结果。在持续集成的基础上,我们进一步引入了持续交付的理念。持续交付要求我们实现代码变更,构建软件产品,并能在非生产环境中进行自动化部署。持续交付大大加快了开发团队的内部协作进程,并进一步提升了反馈的速度。然而,这个软件产品还没有真正地被交付到用户的手中,因此我们还需要最后一步——将其自动化部署到生产环境中,即实施持续部署。
2015年,我在一个项目中体验了持续部署的软件开发模式。在商业级软件产品中,只要运行一次代码,该产品就能被部署到生产环境。当时,我对于这种大胆的模式感到非常惊讶,尽管我在业余的开源项目中也采用过这种模式,但还未曾见过采用这种模式的商业级软件!我想,是因为通过自动化测试能使测试覆盖率接近100%,再加之可结合代码检视、结对编程等方式,所以企业对持续部署有充分的信心。同时,持续部署还依赖于大量的自动化脚本,以及不可变基础设施的构建。
随后,人们大量采用容器化技术来解耦应用对于基础设施的依赖,相应地,行业定义了云原生技术。在云原生技术日渐成熟的今天,大量企业通过Kubernetes构建了自己的云平台,将大量的应用迁移到了云端,并通过设计DevOps成熟度模型不断优化企业内部的研发效能。由于企业的安全限制及避免云提供商锁定等问题,企业会在持续部署中遇到极大的挑战。
本书介绍的Spinnaker是云原生持续部署平台的代表,它提供了一种多云部署机制,支持主流的云提供商。Spinnaker能帮助企业提升部署云原生应用的速度,更好地解决将应用迁移至云原生与混合云的问题。同时,Spinnaker还内置了业内在持续部署领域的最佳实践,如蓝绿部署、金丝雀发布等,能更好地利用云原生的优势。
王炜和王振威在本书中分享了丰富的云原生开发和架构经验,不仅介绍了大量有关Spinnaker的知识,还介绍了混沌工程等前沿技术,更提供了结合Spinnaker进行持续部署的最佳实践。无论是入门学习,还是深入探索持续部署,这本书都能帮助你更好地理解云原生技术。
Thoughtworks高级咨询师
黄峰达
2021年8月