本文共 2218 字,大约阅读时间需要 7 分钟。
本篇文章是整个系列中概念最多的一篇,后续文章大部分会以具体的场景为主,但在面对不同的场景前,希望大家记住DevOps不是银弹,一定要根据自己的需求与场景甚至公司的软件开发人员的能力与公司规模来选择具体的方案。
首先我们看下wiki百科的定义:DevOps(英文Development和Operations的组合)代表一种文化、运动或实践。旨在促进软件交付和基础设施变更软件开发人员(Dev)和IT运维技术人员(Ops)之间的合作和沟通。它的目的是构建一种文化和环境使构建,测试,发布软件更加快捷,频繁和可靠。
刚接触DevOps的时候,问10个人会有10个不同的答案。在刚开始的一段时间,我一直在思考为什么每一个DevOps的专家都会有自己的回答,在了解了他们的工作环境与业务后,我逐渐明白了这其中的原因。每个IT环境的不同,开发的工具不同,部署的环境不同,人员的能力不同,要达成的目标不同都会造成Devops的方式不同,那么对于我而言什么是DevOps,严格的来讲DevOps更多的是一种文化,一种从整个产品的生命周期的角度,通过自动化的方式减少因为从前由于流程或者认为干预而造成的开发周期冗长、人员效率低下、软件质量无法保证的一种方式与思想。
DevOps没有规定什么样的流程是一个标准的流程,因为DevOps的方案是随着你的业务场景、人员的能力、软件开发的复杂度、公司的规模等等变化而变化的,只有对于自己的业务与场景而言的合适与不合适,在本系列的后续文章中将会和大家一起讨论一些常见的DevOps的实践与方案,供大家参考。
在大学的计算机课程上面,软件工程的老师一定会向大家讲述的是敏捷开发与瀑布开发。毕业后进入很多大型的公司后。大家面对的基本是瀑布开发模式或者敏捷开发模式,瀑布开发模式大致的结构如下:
全局观的理解:要从软件交付的全局出发,加强各角色之前的合作。具体的来讲就是,参与项目的软件开发人员、运维人员、测试人员需要了解整个交付过程的步骤和流程。用一个比较实际的例子解释:在开发一个服务器端程序的时候,开发人员需要知道如何编写测试case、最后部署的环境、回滚的方案等等。测试的同学需要知道当前软件的架构使用什么样的测试手段与case可以更好的测试软件并做到快速阻尼的自动化测试,而运维人员需要能够提供更好的运维工具与运维系统便于开发人迭代、部署、监控整个项目的生命周期。
自动化的理解:人是创造力最强的生物,但却又是大部分问题出现的根源,尽可能的利用自动化脚本或者例如puppet、chef、ansible等自动化的工具来替代原本需要人工或者半人工的操作。
为了方便大家更好的理解DevOps,下面一些资料可以供大家进行参考,一些比较场景的DevOps的实践。
当大家了解了什么是DevOps的理念了之后,我们要加入一个新的元素,那就是Docker。当容器遇上了DevOps是否会有什么更多的挑战呢?
转载地址:http://sqvol.baihongyu.com/