公司在近一年来一直推广World Class Development这个概念.核心就是自动化的CI,CD流程.公司五年前从waterfall转agile,搞CI也是摸石头过河,第一代CI框架臃肿低效,远不及它在powerpoint slides里看起来美好.试想一下,你提交代码,代码自动经过unit,acceptance,integration测试之后你得到代码质量的反馈.如果这个过程要4小时,你一天只能做两次代码提交.其实我们之前的情况更糟糕,有时候因为测试环境管理不善的缘故代码提交后甚至需要2天才得到反馈.

后来,我们把很多测试环境入云了,200多套,最小的一套也有近100个CPU和300GB内存.怎么才能有效的管理这么多测试环境? DevOps!!!

DevOps(Development和Operations的组合词)是一种重视“软件开发人员(Dev)”和“IT运维技术人员(Ops)”之间沟通合作的文化、运动或惯例。透过自动化“软件交付”和“架构变更”的流程,来使得构建、测试、发布软件能够更加地快捷、频繁和可靠.

上面这个devops的解释引用自维基百科,虽然low了点但大概就是这个意思。具体的devops实现不细说了,简单来说就是把不同背景的工程师“友基”“有机”的放在一起一段时间解决流程自动化这个问题.然后把这样的合作文化布道回自己的部门.这样做的好处是

  1. 直接了解各方面的痛点. 不同背景的工程表述自己的痛点,比如研发说测试环境不够,运维说测试环境实际利用率不高.
  2. 解决方案设计考虑周全. 买更多的硬件加入自己的私有云还是租用公有云?要考虑各方面的问题例如性能表现,价格,安全性,软件兼容行等等.
  3. 解决问题高效. 大家都坐在一起,解决问题时往往在座位上开个短会就搞定.
  4. “有机”. 各个工程师坐在一起,100%的时间在同一个临时组task force里工作,天然的紧密合作,真.agile.

我的实际体会是这样 - 目前这个临时组已经走了一个云工程师和一个硬件工程师,但是由于和他们朝夕相处日久生情了解了不少他们的工作内容和职责范围,成了朋友,也认识了不少他们部门的人,跨部门合作顺畅多了.读了不少DevOps的东西结合自己体会,我觉得下面几点将会是DevOps 2017年的发展趋势.至少是我司DevOps的发展趋势…

  1. 测试,开发,部署环境的云和容器化

    我司已经尝到甜头.200套测试环境完全自动化管理.对于用户来说,他们永远有up-to-date的健康的环境可用.不会发生两人同用一个测试环境,不会发生用户得到损坏的开发环境的情况.用puppet,ansible或者chef来自动化配置硬件环境绝无可能像云和容器那么快速. 当然Docker作为当红容器技术,用来测试再合适不过,但是目前还缺乏一些大型软件的部署在实际生产环境里的例子.openstack也很红,开源,社区活跃,还多功能.目前,openstack没有自己的hypervisor component,都是使用其他公司的产品.问了一个mirantis的培训师,他说市面已经有很多优秀hypervisor,直接用就好了….我司延用了vmware的exsi.

  2. 容器编排(container orchestration)更流行

    Kubernetes, docker swarm, Mesos, Azure等等.集群的维护和管理变得简单和极其快速,从而缩短测试时间.

  3. 微服务(micro service)

    更多的不同aaS的需求导致功能模块的更小化和service化,提高跨平台的服务可复用性.

  4. DevOps ver.1.0

    更加完善的工具集,更加活跃的社区,更多公司引入DevOps.DevOps的1.0会来临.

最后附上一个酷炫的DevOps工具集 - https://xebialabs.com/periodic-table-of-devops-tools/