微服务(Orchestration)架构 - 开发流水线与 DevOps 工具集
课程地址:18微服务orchestration架构—开发流水线与-devops-工具集
一、DevOps(开发与运维 – Development and Operations)
一个软件从零开始到最终交付,大概包括以下几个阶段:规划、编码、构建、测试、发布、部署和维护。一般由软件开发程序员、软件测试程序员,软件运维程序员这三种程序员来负责这个过程。

瀑布模型
瀑布模型是最早期的软件交付模型,就是等一个阶段所有工作完成之后,再进入下一个阶段。软件开发流程如下:
- 软件开发工程师花费很长时间编写项目代码。
- QA(质量保障)团队对项目代码进行测试。
- 运维团队负责部署项目的最终发布版。
以上这三个阶段,即开发,测试,部署。
但是,项目不可能是单向运作的。客户也是有需求的。产品也是会有问题的,需要改进的。随着时间推移,用户对系统的需求不断增加,与此同时,给的时间周期却越来越少。在这个情况下,笨重迟缓的瀑布式开发已经不合时宜了。于是就发展出新的软件交付模型——“敏捷开发(Agile Development)”。
敏捷开发
敏捷开发能应对快速变化需求。每次开发一个部分就进行测试,然后再进行下一轮开发。通过重复交替进行开发和测试,可以帮助更快地发现问题,产品被更快地交付到用户手中,团队可以更快地得到用户的反馈,从而进行更快地响应。
而且,DevOps小步快跑的形式带来的版本变化是比较小的,风险会更小。即使出现问题,修复起来也会相对容易一些。
虽然敏捷开发大幅提升了软件开发的效率和版本更新的速度,但是它的效果仅限于开发环节。运维的部署部分还是没有参与其中。
DevOps
DevOps由Development和Operations组合而得,它强调了开发团队和运维团队的沟通合作,通过自动化流程来使得软件构建、测试、部署的整个过程更加快速、频繁和可靠。如下图所示,DevOps打破了开发团队与运维团队之间的高墙,使二者可以更高效地合作。

注意开发到运维中间其实还有测试环节,所以DevOps实际上包含了三个部分:开发、测试和运维。
快速的部署的好处是可以更快地发现软件的问题,更快地将产品交付到用户手中,更快地获得用户反馈,从而帮助团队进行更快地更新迭代。而且,DevOps小步快跑的形式使得每次版本改动较小,即使出现问题也比较容易解决。

在DevOps的流程下,运维人员会在项目开发期间就介入到开发过程中,了解开发人员使用的系统架构和技术路线,从而制定适当的运维方案。而开发人员也会在运维的初期参与到系统部署中,并提供系统部署的优化建议。
下图可见DevOps贯穿了软件全生命周期,而不仅限于开发阶段。
DevOps与虚拟化、容器、微服务
微服务就是将一个提供多种服务整体产品进行拆分,拆成各自提供不同服务的多个个体。微服务架构下,不同的工程师可以对各自负责的模块进行处理,例如开发、测试、部署、迭代。
虚拟化就是一种敏捷的云计算服务。它从硬件上,将一个系统“划分”为多个系统,系统之间相互隔离,为微服务提供便利。
容器不是划分为不同的操作系统,而是在操作系统上划分为不同的“运行环境”(Container),占用资源更少,部署速度更快。
虚拟化和容器,其实为DevOps提供了很好的前提条件。开发环境和部署环境都可以更好地隔离了,减小了相互之间的影响。
二、什么是 CI/CD 流水线?
有两个词经常会伴随着DevOps出现,那就是CI和CD。CI是Continuous Integration(持续集成),而CD对应Continuous Delivery(持续交付)或Continuous Deployment(持续部署)。三者关系如下图所示: