evops是一个很高大上的名字,其实说的简单点就是开发和运维本身就是一个团队的,要干就一起把事情干好。谁出了问题,网站都不行。作为一个架构师,必须要devops,而且要知道如何推行devops。
首先要自动化,举个阿里的例子,阿里通过aone系统来实现半自动化部署:
- 开发人员开发代码先自测通过后,提交代码到git。
- 在aone中一键部署到日常环境。部署是自动化扫描依赖冲突,系统安全等问题。
- 测试接到部署成功的通知,进行测试,如果测试通过,则审批通过,可以线上发布。
- 线上运维人员一键部署到线上,部署可以分配部署,进行A/B测试。如果出现问题可以一键回滚。
当然这里面牵扯到了很多角色,其实如果是一个公司,这个团队应该一体的,不分彼此。团队中每个角色都是程序员,每隔一段时间需要轮换岗位。
其实不只是部署需要自动化,测试、扩容、监控、分析等等都需要自动化。当然这需要根据你公司的实际情况进行实践,最先需要的其实也是部署自动化,如何实现呢:
- 使用开源产品 git,hudson,ansible或者puppet
- 制定相应的规范,自动化部署是有规范的,每个人都必须遵守,否则故障就会马上出现
- 进行定制化开发,使整个系统形成一个整体,
- 上面的开源产品并不是一个整体,需要通过自己编码使其成为一套系统。
- 涉及web系统开发,底层脚本编写,打包规范制定
- 不断发现重复劳动,使其自动化
- 要有对应的监控系统,及时发现异常
有了这一个自动化系统之后,你可以考虑一下后面的产品安装、测试、扩容、监控、分析系统的自动化。
另外持续改进也是devops的核心,要有发现改进的眼睛。只要有事情重复做3次以上,就考虑是否需要自动化。
如果你不进行devops,随着业务的增多,系统的增多,最终还是需要进行从头到尾的改造。不如一开始建设的时候就预先设计考虑好,其实这些东西如果你懂的,开始的时候就做好,并不浪费太多时间,反而能节省大量的时间,何乐而不为。