DevOps is dirty work - What's the deal

什么是DevOps?终于又回到这个最初的问题。

第一次看到这个词的时候,还身陷于各种敏捷概念轰炸中。用“身陷”这个词其实并不准确,因为那个年代的我也是那些热情洋溢地无处不宣传敏捷的热血文艺青年中的一员。就像天生的一样,我从未接触或真正实践过瀑布模型。瀑布开发对我来说一直是书里的概念,各种流程背得滚瓜烂熟都是应付考试用的东西。打从第一脚踏入老东家N记,Scrum Master骄傲地带着我各楼层领略五颜六色的进度小纸条和大小各异的手写燃尽图的那一刻开始,我就被敏捷浸淫而无法自拔。N记也不愧为国内敏捷先锋,直到如今国内各大论坛,峰会,workshop,event,无论民间还是官方,企业还是协会,只要有点知名度的敏捷活动,都会混迹一两个N记出身的大牛身影。作为如许多大牛的前同事,可想而知,哥们儿也算科班出身,多少也练就一番底蕴。也的确受益于在N记玩Scrum Master的经验,随时拿敏捷的套路和精髓来吹个牛早已是小菜一碟,而那些敏捷教练都会的抓个话题侃侃而谈也基本不再话下,甚至当时觉得自己做个敏捷顾问绝对绰绰有余,无非就是舍不得拿白银出来去考各种段位凭证罢了。就这样飘然来到C记,在运功帮助团队艰难转型的岁月中某一天,DevOps这个词从天而降。也是从那天起的不久之后开始,对自我介绍这件事产生了巨大的茫然无措之感。

“你现在在C记做什么啊?”

“上线。。。也不完全是。。。运维吧。。。也不确切。。。发布。。。其实我们要写code的,还要测试。。。搭环境我们也管。。。pipeline。。。Jenkins。。。总之很忙。。。经常加班还on call。。。”

“哦。。。现在JDK8了,你们在用吗?”

“对了,我们还要建虚拟机。。。啊?你说Java哦。。我们。。。python,ruby,puppet,groovy,shell,java,C。。。语言太多。。。哦,Java也用的。。”

“嗯嗯,挺好的。。。”

对的,DevOps就是各色杂糅。不仅如此,DevOps的英雄们都是千面人。在Ops眼中,DevOps是troubleshooting的Dev。在Dev眼中,DevOps是排除万难的Ops。在DevOps眼中,DevOps是似幻似真的一切。

我通常喜欢把Continuous Integration(CI)作为描述DevOps工作的起点,尽管很多人都认为DevOps是个比这宏伟得多的事业,而且事到如今这已是如每天早餐一样让人习惯到不废几个工夫就能搞起的事情。然而在我看来,CI系统虽然已普遍被接受并作为各种大咖书中信手拈来的话题,却是在整个自动化部署产品中起着关键的指标性作用,而且并没有被大多数人深入理解。简单来说,没有完善的CI系统,即使Continuous Delivery(CD)能力再强,也不值半毛钱。而为了多值几毛钱,CI的搭建往往不在乎工具,而在乎内容。具体故事,还待细说。

如今DevOps的工作范畴已经无限宽广,稍微看过几本书的人就能举出好多fancy的名词。Jenkins,StackStorm,Docker,Nagios,Circonus,Logstash,Sensu,Nimbus,OpenStack,Puppet,Hiera。。。若要滔滔不绝起来,每一个名词都可以把前世今生说个天荒地老。而事实上更糟糕的是,每天都有新的名词在出现,举不胜举,防不胜防。如若第一次看到这堆名词,一个一个去google的话,相信我,你一定会疯。

尽管生态环境如此恶劣,DevOpser们却每天还在享受与拼命之间来回拉锯,时而因新学一种工具或语言而对未来无比鸡血,时而因一个脚本连不上Server而对事业悲哀到厌食。很刺激,有没有?

其实废话了那么多,还是没说清DevOps是做什么的,那么还是有必要总结一下。DevOps的工作就是,除了制作Application之外的所有工作。如果非要来些启发式的总结,那么,如果你即将踏入DevOps领域,你的决定一定没错,因为大数据时代的IT属于会做Dirty Work的全栈(Full Stack)工程师。如果你还没有这个打算,我的建议是,想清楚再打算。

对了,差点忘了最重要的一件事。在开始成为DevOps之前,请先做一名合格的Dev。DevOps is dirty work where you have to be more than a Dev.

上一篇:Python使用functools模块中的partial函数生成偏函数


下一篇:iOS开发多线程篇—GCD的常见用法