第二章 DevOps思想


2-1 DevOps概述

传统开发模式的问题?

我们来看传统开发模式的问题:传统开发模式中,开发者和运维人员虽然都是企业中不可或缺的IT部门,但他们有着截然不同的目的和不同的KPI指标,简单来说,开发的目的是最大程度的去实现新的功能,或者改变现有功能,使产品往更优质更完善的方向发展。运维的目的是最大程度的保障系统的稳定性,安全性等方面。而这两者在目的上有部分是矛盾的,开发人员的每一次改变都意味着风险,而这些风险都会是运维的不稳定因素,这是与运维目的背对而驰的。这两种不同的目的形成了不同的态度,从而造成了文化冲突。


团队成员都遇到了什么?

我们来具体看看团队成员都遇到了什么问题?

对于研发人员来说,遇到的问题主要来自三个方面: 1、工作效率低下,对于传统的开发人员来说,大量的时间其实不是用在代码的开发上,而是花费在应用的构建,测试,部署等,整体工作效率低下。

2、开发和生产环境不统一,大多数的开发人员都使用的是windows或者mac系统进行开发,但是99%的生产环境都是linux的,这就导致了开发和生产环境不一致的问题。即便是开发环境换成linux也很难统一,因为linux有各个发行版,比如centos和Ubuntu,同一个发行版的版本之间,比如centos6和centos7又有着一些细微的差别,所以很难做到一致。

3、开发运维沟通成本高,因为在产品上线之前,运维人员是没接触到产品的,在产品上线之后,又完全由运维人员来进行管理,这中间存在的巨大的鸿沟,开发和运维沟通成本极高。

- 对于测试人员来说,遇到的问题主要是: 1、测试周期长,测试人员作为整体质量的把关,产品的每次迭代都需要进行完整测试,手工测试时间长,效率低,工作量大,严重影响产品迭代速度,大大延迟了产品面向用户的时间。

2、测试覆盖弱,在一个快速迭代的研发项目组里,要求每次迭代测试都要完成覆盖到产品的每一个功能点,而传统的测试方法要做到全覆盖,需要耗费大量的人力物力。

3、产品质量无法保障,没有完整的规范的测试标准,体系,每次都是通过人工进行,整体业务满意度低,且无法保证产品质量。 - 对于运维人员来说,遇到的问题主要是: 1、开发运维脱节,开发和运维完全属于不同的部门,产品在研发完成后才交到运维人员手中进行运维,造成整体的开发运维脱节。正如业内经常出现的那句话,研发人员对着运维人员说:“我本地是正常的,至于生产环境为什么不正常那就是你的问题了”

2、升级过程复杂,传统的升级过程复杂,每次升级都需要将业务停止,逐个节点手工进行升级,而且升级过程中是无法向用户提供服务的。这对快速迭代的产品研发团队来说是很严重的问题。

3、运维手段落后,随着微服务等技术的盛行,相比传统的单体应用来说,整体架构复杂很多,传统的运维手段落后,根本无法支撑新技术的运维工作。


我们的诉求是什么

我们来总结写我们的诉求和目标是什么? 我整理了4个点: 1、降低风险,稳定节奏的交付,增强可预测性 2、保证质量,效率提升的同时,保证质量的稳定。 3、快速交付,从需求研发到产品交付周期缩短 4、组织优化,人员需求降低,提高工作效率

为了这四个诉求,我们努力的寻找各种解决方案。 而现在在行业内部的实践中,DevOps是一个可行的解决方案。

devops是什么

那就得来说说devops是什么了

DevOps是一种融合了一系列基本原则和实践的方法论,而所用的工具只是为了对这样的实践提供支持,是企业内开发、技术运营和质量保障这三方面工作的融合,用于促进开发、技术运营和质量保证部门之间的沟通、协作与整合,大大提升产品的开发效率及产品质量。

devops覆盖了企业软件生命周期中的7个过程,我们详细来看看这些过程包含的内容。

编码:代码开发和审阅,版本控制、代码合并等 构建:持续集成、构建状态统计 测试:通过测试和结果确定产品质量和绩效 打包:成品仓库、应用程序部署前暂存 发布:变更管理、发布审批、发布自动化 配置:基础架构配置和部署,基础架构即代码工具 监控:应用程序性能监视、最终用户体验

- 我们从这个图可以看到,DevOps将传统开发运维的工作整合在了一起,从编码,构建,测试,打包,发布,配置,监控形成一个完整统一的DevOps闭环

devops两大关键词汇:协作和沟通 DevOps 是提倡开发和IT 运维之间的高度协同,从而在完成高频率部 署的同时,提高生产环境的可靠性、稳定性、弹性和安全性。理想情况下,DevOps可以为开发者提供更可控的生产环境,帮助他们更好地理解生产基础架构。

devops提倡的是由谁开发的,就由谁去运维。这样就把开发和运维交织在了一起,不再像以前一样的严格区分开的。

DevOps另外的两个词:集成和自动化,就跟工具有关,其实我们前面也说到了,DevOps只是一个方法论,而所用的工具只是为了对这样的实践提供支持。现有的工具也都是围绕生命周期的7个过程的,在如此多的工具,每个企业都有不一样的选择,无所谓对错,适合自己就好。所以我们也在众多工具中选择了适合我们自己的。

devops实施要素

我们来看一下,实施devops需要从哪些方面入手? 在我们实施devops的过程中,我总结了三个大方面: 1、自动化工具集 2、组织文化,团队建设 3、流程/标准


开源软件

我们先从第一点来看看 在实施的过程中,我们大量的使用了开源软件


组织文化、团队建设

流程、标准

当然,DevOps是一个很大的概念,包括战略方针,组织架构,技术实现等多方面。我们这套课程主要是偏向于技术部分,当然即便是技术部分,我们做的也只是冰山一角,目的是实现一个包括基本功能的DevOps实践案例,并通过这个案例去了解devops实施的一些思想和内容。


DevOps实施效果对比

前面我们说了一堆devops实施的要素,大家可能会有疑问,我们实施了devops之后,到底对我们的开发流程有什么影响。接下来我们就来看一下,我们企业实施devops的效果对比。

实施前

results matching ""

    No results matching ""