敏捷的出现缩小了上图所示的第一个隔阂,也就是商业需求和开发之间的隔阂,有效的加快了产品开发的周期和效率。那么这无疑为运营团队增加了很多压力。云星数据www.cloud-star.com.cn
于是上图中第二个隔阂,也就是开发和运维之间的隔阂需要解决,于是DevOps的理念应运而生。
如何解决开发和运维的隔阂呢?
首先要明白隔阂产生的原因。开发人员和运维人员认识的方法,以及各自所处的角色,都存在根本性的差别。
开发团队要求的不断满足新的客户需求,并快速实现新的功能。而运营最关心的是“稳定压倒一切”,任何差错都有可能对生产环境中的用户造成直接影响。有些服务提供商都和客户签署Service Level Agreement。服务中断意味着直接的财政损失。衡量指标不同,自然工作的重点不同。
那么我们首先要从文化上着手。
根本上要从文化上着手。文化的改变是第一位。了解自己的工作队全局的影响。
运维团队必须明确的认识到,如果不能快速把开发成果推倒生产环境,企业就很可能被其他竞争对手超越。长久以来就很有可能被市场淘汰。覆巢之下,焉有完卵?那么运维团队也就没有存在的意义了。但不是说稳定不重要,我们需要实施一系列手段来实现即快又稳。
开发团队必须明确认识到开发代码或者更改设置时,可能会对整个系统稳定性和性能的影响。
其次要从组织结构上着手,考虑开发团队和运维团队的直接领导是同一个人,尽量避免部门直接互相指责和扯皮。
第三要实施一些工具及方法。
如何具体实施?
正如很多企业采用敏捷开发一样,这需要一个准备,尝试和逐步实施的过程。其实DevOps仅仅是一个理念,而且这个理念在不断变化和发展中。无论公司大小,IT环境面临的有很多挑战是共通的。大公司组织结构相对发杂,人员理念和文化的形成非一夕一朝之功。在实施DevOps反面,反而小公司有很多的优势。
除了IT企业外,DevOps对于传统的行业(金融,电信等等)也同样有借鉴意义。因为在不久的将来,每一个公司都是数字化的公司。没必要强调你的企业是不是采用DevOps,应该开始深入了解你的环境中需要解决的问题是什么,再看DevOps中的一些方法是不是会帮到你,然后再具体实施一些措施和借用一些工具来帮助你。比如我所关注的虚拟化平台的运维,就可以借鉴DevOps的很多思想。
标准化和自动化:
尽量采用模板和指定好的流程来更新Master Image,采用Puppet,Chef等工具来实现系统管理自动化,尽量减少人为干预。同时也避免了不必要的人为失误。
像管理代码一样管理系统配置:
很多应用的配置,因为需求变化而更改。但文档往往没有同步更新。需要有工具来记录系统的配置参数。
也就是说借鉴软件开发中管理Code的方式,来对系统环境的设置进行版本控制和同一的管理。从而保证环境的一致性和稳定性。
这样可以捕捉到和规定配置不一致的情况,也可以快速的找到问题所在,提高排错的效率并缩短时间。
要有独立Dev/Test环境
新的配置必须在独立的Dev环境中充分测试后,才能在生产环境中实施。
测试自动化
采用一些工具和方法,自动测试系统改动后的各项功能和指标。大大减少测试需要的人力和时间。
开发人员能自己创建开发环境
vCloud Director 可以很好的满足这个需求。系统管理员可以把运算、网络和存储的资源专门分配给开发团队,并授予适当权限。开发人员自己可以瞬间创建模板以及新的环境。