兄弟肉夹馍的开发运维一体化
上回说到学校后门的黑暗料理,立马开始收到各路私信推荐,且精确提供,如「第四根电线杆」这样的地理位置信息,「面相憨厚的胖大娘」的人脸识别技术,和「排队最长的那家」此类的强社交属性信息。今天的主角,兄弟肉夹馍的故事,就是这么来的。
开发运维,齐力断金。
肉夹馍,属于走三层混合架构的典型代表,同类型的还有驴肉火烧,煎饼果子,大饼卷肉。这个架构因其独特的分层设计原则,带来了极大的开发便利性。这一架构在全球各地都有变种,如汉堡包、三明治、帕尼尼、Spring MVC、Ruby on Rails 等。但共性都是一样的,核心风味的食材作为模型,外部通过包裹预制的面粉类框架控制形态,最后封装一层包装交付给用户享用。这一架构被广泛使用好处是食物组件框架化,方便批量生产。缺点就是一旦规模化制造,势必和定制化矛盾,最后就是风味同质化,难登大雅之堂。
所以按图索骥摸到复旦大学北区宿舍的夜市时,除了排队的长龙,并看不透各中神奇之处。直到将近到了队伍前头,得以细看老板的手艺方才一探究竟。这个摊子不大,一人见长,半人见宽。兄弟二人分列两头,左为案板,右为炉火。摊前一溜摆着各色辅菜。于众不同之处在于,食客入队需自报数量,口味和忌口。排在我前面是个金发碧眼的洋妞,一入队便切口一般冲着老板报出「两个薄脆少肥微辣无香菜」。兄弟二人耳闻指令,几不抬头。掌炉火之人合上炉灶掷一块新鲜面团按需揉捏后置入炉火烘烤,掌案板之人勺出相宜之熟肉手起刀落。待得洋妞走到跟前,自助添加辅菜到案板,而案板之人毫无停歇持续加工。恰在此时,掌炉火之人于火中探物,抄起热肉馍飞至案板。案上之人飞刀之处,置馅料与馍中,交于洋妞。一气呵成,叹为观止。待得我走到面前,两兄弟突然移形换位,互换角色。看得我目瞪口呆,忍不住问这是炫技吗?兄弟一人冲我甩甩手说「手切累了,轮换」。恍然大悟,这便是兄弟制造肉夹馍的秘密。
在传统的业务开发体系里,我们已经习惯了按照既有的框架来将业务转化为业务实现。框架带来的便利同时也间接导致了开发的流程被人为的割裂,这一割裂造成的最普遍现象就是快速变化的业务需求,与不堪重负的运维压力之间的矛盾。于是乎在产品经理、开发团队、和运维团队之间慢慢铸起了高墙,仇恨在这些高墙的间隙见弥漫生长。产品半夜催运维,运维半夜骂研发这样的故事无数遍的重复上演。这个局,怎么破,今天的兄弟二人给了我们很好的启示,也就是传说中的开发运维一体化。
所谓开发运维一体化,即 DevOps。追根溯源,来自于 Google 的内部实践。在 Google,一个工程师除了需要开发产品功能,还要向两头延展自己的角色范围,一方面要懂的利用数据来量化自己产品的用户反馈,另一方面每一个人需要能够管理和部署自己的产品。这是一项前期投入大,但是见效长久的工程。借助于 Google 自身强大的技术实力和卓越的工程师文化,这一理念最终落地生根,成就了未来发展的基石。
工程师文化,是工匠精神在人类文明的新表现形式。对一个工匠来说,其内心最大的满足感在于自己的作品「跑起来,有人用」。这一前一后两个环节,是激发其创造性和能动性的原力。但是因为历史发展的局限性,我们提供的开发工具和管理方法,将开发人员装进了两扇高墙之间,丧失了持续获取原力的渠道。所以好的厨子会偷偷冒充侍者给客人点菜,躲在墙角偷偷看客人的表情,谦虚的询问有什么意见建议。这就是 DevOps 的精髓。肉夹馍的兄弟二人,谁为开发谁为运维已很难界定,既是掌勺的开发,也是切菜的运维;且互通技能,融为一体。结果就是高速流转的业务,和持续改进的客户体验,并对定制化需求的快速响应。
我们做互联网业务的,遇到的情况肯定比兄弟二人错综复杂。还有很多历史遗留问题也或多或少局限了我们迈开步子的决心。好在是类似容器技术这样的东西适时的出现,大大的降低了开发人员向运维技术栈延展的门槛。当年 Google 天时地利人和才能做成的事情,现在几乎唾手可得。
原来干运维的听到这急眼了,这是要抢饭碗么?有道是:「开发运维化,运维工具化,工具云端化」。运维这工作实际上迎来了更广阔的发展机遇,既然从机械简单劳动解放出来,世界那么大,那还不想去看看?
至此,开发阶段的三道料理尝的也差不多了。但 CTO 的美食之旅还要继续,正如此季开篇所述,每一个吃货心里都住着个厨子,各位看官难免有些技痒。那下一季我就带大家做做我们 DaoCloud 厨房的三道招牌 Docker 料理,也欢迎 @DaoCloud,推荐您的独门料理菜谱。
待续