2019年/第四篇 《DevOps原理、方法与实践》

2019年/第四篇 《DevOps原理、方法与实践》_第1张图片

一 什么是 DevOps


DevOps(Development和Operations)是一组过程、方法与系统的统称,用于促进开发(应用程序/软件工程)、技术运营和质量保障(QA)部门之间的沟通、协作与整合,从而达到快速交付有价值的产品的目的。

二 为什么是 DevOps


为什么是 DevOps?或者说为什么 DevOps 近几年才开始火起来呢?

其实 DevOps 是敏捷开发的延续,它将敏捷的精神延续到运维阶段。敏捷开发是为了响应变化,快速交付价值。随着互联网的不断发展,市场的变化也越来越快,敏捷开发的方式也开始被各大企业开始推广使用。但随之而来的遇到一个问题,在一个团队中,开发团队和运维团队是分开工作的,他们有不同的思维方式,并且彼此之间也都是坚守自身的利益。虽然采用了敏捷开发,开发团队可以采用很多敏捷方法,快速的做到持续集成,但后续的运维交付的步伐则非常慢,因为运维人员需要准备环境,各种数据,并手动的去做部署,整个流程将花费很多的时间,而且会面临部署失败的风险。所以对于运维人员来说会尽量低频率的做部署。这就好像是百米赛跑,前90米都是快速冲刺,而最后十米选择慢走,这对于整个价值交付并不能达到很好的效果。

三 DevOps 金字塔

2019年/第四篇 《DevOps原理、方法与实践》_第2张图片
DevOps

前面我们说到 DevOps 其实是将 敏捷延续到了运维。所以对与 DevOps 来说,其 价值观、原则、方法、实践基本都和敏捷一样,最大的不同是运维自动化工具的使用。
其价值观和敏捷价值观一样引导具体的实践,避免生搬硬套,为了使用而使
用。DevOps原则相对于敏捷原则多了一条“基础设施是代码,应该同样进行开发和管理”。DevOps 工具则包含了 版本控制工具、CI、配置管理工具、虚拟基础架构、自动化工具等。

四 DevOps 现状

目前对 DevOps 的研究主要在以下几个方面

微服务

DevOps 和微服务架构两者逐渐呈现相互依存的态势。
在宏观层面:微服务架构为DevOps思想提供了理论支撑和工程策略。在一个微服务系统中,每一个独立的微服务的每一次独立交付都会对整个系统做一次迭代交付和价值实现;
在微观层面:DevOps 为可以作为独立软件的微服务提供了持续交付的指导思想和方法论。

持续集成、持续部署、持续交付

持续交付是持续集成的下一步,力图通过自动化、可靠、可重复的方式将产品交付到产品环境上,从而减少部署风险,降低成本。

那持续部署和持续交付是什么关系呢?
有两种解释:

  1. 持续交付只是将集成好的代自动化的部署到类生产环境上,而持续部署则是会完全部署到生产环境上。
  2. 持续部署是将通过自动化测试的变动自动的部署到生产环境上。而持续交付需要通过手动方式部署到生产环境上。(这种解释更为普遍)
自动化工具

主要是 CI工具、CD(Deploy)工具

五 微服务软件架构

软件架构发展史

1. 单体架构
2. 分层架构

分层架构也叫 N 层架构,一般会根据自身情况进行分层。一般分为四层:

  • 展示层(presentation layer):用户界面,负责视觉及用户互动
  • 业务层(business layer):实现业务逻辑
  • 持久层(persistence layer):提供数据,SQL语句一般写在这
  • 数据库层(database layer):保存数据

分层架构很好的一点就是做到了 关注点分离,使得整个结构简单,易于开发,测试。但缺点还是和单体架构一样,部署比较麻烦,拓展性差。

3. SOA架构
面向服务的体系架构(SOA)是构造分布式计算的应用程序的方法。将应用程序作为服务发送给用户或其它服务。SOA架构会使用企业消息总线(ESB)和服务编排,将不同协议的接口编排起来,最后满足特定的需求。

4. 分布式架构
分布式系统由于建立在网络之上的软件系统,所以具有了高度的内聚性和透明性。其核心理念是让多台服务器协同工作,完成单台服务器无法处理的任务,这样就可以做到 廉价高效,弹性拓展。

5. 微服务架构

微服务架构是将单体程序系统划分为众多小而自治的服务进行开发的方式,其中每个服务都有自己的进程并利用轻量化机制进行通信,服务以业务边界进行分解,可凭借自动化部署机制实现独立部署,不同服务可基于不同技术使用不同编程语言实现并使用不同的数据存储技术。

你可能感兴趣的:(2019年/第四篇 《DevOps原理、方法与实践》)