一、前言
DevOps的概念在国内已经发展了一段时间了,目前大部分开发人员都被要求有一定的运维能力,这就是“开发运维”。
提到DevOps的话,不得不提CALMS。CAMS代表Culture, Automation, Measurement, Sharing四个单词的首字母缩写。CAMS已经成为许多DevOps从业者的价值参考模型。
下面我和你一同分析这五点,并结合我自己的工作经验体会,希望你看了之后能有自己的理解。
二、Culture(文化)
Culture(文化)- 是指拥抱变革,促进协作和沟通。
随着项目不断实践,我们的管理和流程会慢慢发生变化。比如小型企业随着业务的不断增长,需要招聘独立的DBA去管理数据库,当有新的流程引入之后,必定会导致之前的业务流程发生变化。
那么,在团队内部,我们就需要的是对变化本身采取接受的态度,并提前进行相关培训。
文化这个东西,乍一看是虚的,如果我们想要落地,就需要花时间去培养。
三、Automation(自动化)
Automation(自动化)- 是指将人为干预的环节从价值链中消除。
自动化区别去手动化,早期的服务器部署工作,需要我们手动创建服务器,并配置网络和基础环境。
DevOps通过设施即代码(Iac)的方式,用配置文件的方式管理服务器、网络、数据库,并且整个流程可以复用。
这么做的好处有
- 高度复用,不会因为某个服务器手动配置出错而出现问题
- 反应迅速,扩容及时,减少操作时间
为了达到目的我们需要维护全程的自动化,包括 基础设施、持续集成、构建、测试、持续交付、部署后测试。
四、Lean(精益)
Lean(精益)- 是指通过使用精益原则促使高频率循环周期。
我最早听到精益这个词,是精益创业,其实这个词来源于制造业,精益的本质是消除浪费,到了以工程师作为生产力的软件行业,则是提高软件迭代的循环周期,这其实也可以理解为消除了浪费,只不过从实体行业的原材料变成了软件行业的沟通和流程。
上面一条自动化,消除了大量人工操作带来的不确定性和时间成本,也就达到了精益的目的。
我觉得,精益还有一层含义,就是对整体效率的提升,整个团队成员因为DevOps流程的变化,加上相互学习提高水平,最终共同提高了整个团队的效率。
五、Metrics(指标)
Metrics(指标)- 是指衡量每一个环节,并通过数据来改进循环周期。
我们能看到的指标就是云平台(亚马逊、阿里云、腾讯云)的控制面板,以及各种日志推送。
上家公司的老大一直在重复的一句话就是,判断问题不能瞎猜,要有证据。
不能说我们发现了一个地方出了bug,就很自然地认为是哪里的问题,然后马上去修复。一定要有证据,比如数据的异常、日志、浏览器调试等等。
不通过指标盲目去做事,本身就不精益了。
此外,指标不但能够告诉我们哪里做错了,还能告诉我们性能上是不是有提升,改进的策略是否有效。
直觉会骗人,但是数据不会。
六、Sharing(分享)
Sharing(分享)- 是指与他人开放分享成功与失败的经验,并在错误中不断学习改进。
积极分享的目的是实现共同进步,改善整个行业或者团队。所以我从能带团队开始,一直鼓励团队的内部分享,和团队外部的博客分享。
我们能从复述自己的错误中不断改进,别人也能从学习别人的错误中找到解决方案。
七、总结
CALMS模型从DevOps中来,也会一直伴随我们进入云原生。CALMS模型是一种团队的思想,每个关键词都有基本的含义,和结合自己实际经验学到的含义。