@Lenciel

推行微服务架构的最大收益

作为行业里面最火热的名词之一,「微服务架构」在AmazonNetflix等大厂取得的成功,大家算是耳熟能详了。

但是作为 CTO、技术 VP 或者架构师,要把你服务的公司或者项目加入到「实践微服务并取得成功」的列表上,难度其实是很大的。仅仅是把自己的系统打散成多个服务,就有很大的成本。所以 Martin Flower 也提醒过要当心入坑。

所以看到各种会议,博客,社交媒体上实施微服务架构的经验分享时,要明白这里面真正的成功并不在于对各种技术的应用,或者说,在成功利用 Docker、Kubernets 或者 SpringBoot 等等性感的技术之外,微服务架构带来的最大的收益并不简简单单是技术的落地。

最大的收益

微服务架构真正的收益在于形成小而美,能胜任各种职能的扁平化,自组织,自管理的团队,完成在传统组织架构下无法完成的拓展性和创新性工作。

两个披萨的团队

Amazon 的「团队规模应该控制在点两个披萨就可以吃饱」的规则很有名,Jeff Bezos自己说

Managers: We need more communication on and between our teams Bezos: No. Communication is terrible」

要构建自组织的,创新的团队,需要的不是「更多」的沟通而是 更有效的沟通。这点说起来容易也很好听懂,但要做到其实非常难,只要看看你自己手机上那 50 多个工作原因拉的微信群就知道。

但我们可以在团队规模较小的时候开始尝试。所有人一起办公,培养起友谊和信任,产生化学反应互相激发:这样发生group think或者social loafing的几率就会变小很多。

J Richard Hackman在研究了团队和组织之后指出,团队里面的人之间的沟通和人数的关系是:

(n*n-1)/2

如果人数 n 不断增加,顺畅沟通的难度就会变大,团队的效率就会降低。

Hackman 建议的人数是 10 人以内,Amazon 一般是 6-8 个人,海军陆战队是 4 人一个编组:也就是说,人数不需要那么死板的规定,只是应该比较少。

其实要感受这个不需要那么多理论,回忆一下参加一个婚礼时在餐桌上沟通的质量,和跟两三个朋友喝个茶沟通的质量对比一下,就明白小团队的优势。但我还是推荐好好读读 Hackman 关于团队的文章

多功能团队

为什么我们需要一个团队有各种功能,而不是负责开发、测试、产品、运维的某个单一方面?

Bad behavior arises when you abstract people away from the consequences of their actions

创建团队在功能上的清晰分界,就跟告诉住宾馆的人弄脏了房间是服务员来打扫一样,是在鼓励「坏行为」的发生。一个优秀的程序员应该在编写质量上乘的代码的同时,关注可测试性、易维护性、安全性、性能、可扩展性和易用性等多个方面的问题。如果你划分了 DBA、OPS、QA 等职能团队,开发自然而然的就会认为自己把功能实现出来,工作就完毕了,下面的话就会出来:

  • 「我哪有时间测试,那是测试做的」
  • 「数据库的变更找 DBA」
  • 「我只负责这个功能的实现,基础设施和运维负责它的高可用」

要防止这些对话发生在你的团队,就需要引导和宣扬「一专多能」的文化。在很多成功的公司里面(Amazon,Netflix,Facebook,Google)都很强调这点,比如 Amazon 著名的「谁编写,谁负责」。现在行业里面很流行另外一个热词 DevOps,实际上 DevOps 的本质是 Dev 在前的,甚至不应该有专职的DevOps部门

康威定律

软件开发里面,技术问题远没有人的问题难解决。所以康威说:

organizations which design systems … are constrained to produce designs which are copies of the communication structures of these organizations

要如何打破内部各个团队之间的壁垒呢?除开自顶向下的进行组织架构的变更,还可以尝试内部开源。

内部开源

一旦你打破职能壁垒,构建起小的,多职能的团队,就能够看到这些人为了构造一个高质量的软件系统,一起努力。他们的工作形态其实挺像开源组织的:大家都可以发表意见,都可以贡献代码,对最终的发布负责。

这样的团队形成之后,在他们的输出基本稳定成形后,就可以开始尝试内部开源。

总结

微服务架构的各种成功案例和大家拥抱它的热切姿态,很容易让我们觉得它解决了很大的问题。

其实微服务架构里面很多基本指导原则,SOA 里面都有。但后者最终的失败就在于,虽然技术上有一整套 WS-*的规范,但是却没有在组织结构上做相应的适配,所以陷入了康威定律指出的死路。

技术和流程当然很重要,但是它们的推动,永远是靠人的,因此,组织结构先行,全员参与,共同为建设能够输出高质量系统,快速响应需求变更的团队努力, 这才是实践微服务架构或者 DevOps 对一个公司最大的收益。

诗人与歌手

大家好,我想死你们了。

看朋友圈,大家春节都过得挺轰轰烈烈。

比如我们的群主 tomohirof,迷上了塔吉克斯坦青年男歌手迪玛希。

他应不应该排名在谭晶和赵雷之后,据说引起了很大争议。

我好奇地打开电视,里面播放着大大回访 40 年前插队的西北农村那些感人肺腑的画面。

这不禁让我想起另一个同样是家族在西北发迹的皇帝,唐玄宗李隆基。

皇帝这差事,从小前额叶被训练得比较发达,以免三宫六院之外,还要搞酒池肉林。

于是天底下什么都是自己的,却很难狂欢:偶尔狂欢了,自己都觉得尴尬。

但这帮李姓皇帝是胡人,没之前的皇帝那么多励精图治的理性偶像包袱。

所以唐朝没迭代出什么哲学思想的新版本,专注于狂欢。

康熙年间编的《全唐诗》收了大概五万首诗,孤篇压全唐的《春江花月夜》的作者张若虚,却只有两首被录入:因为唐朝还没有发明活字印刷术,大多数唐诗都失传了。

但总数仍能有五万这么多,全靠举国狂欢,K 歌房生意兴隆,老百姓口口相传。

这么说起来,《全唐诗》完全是几朝大众评审和专业评委筛选出来的传世榜单啊。

那对比一下排名靠前的选手,就很有趣了。

古代的乐器和乐谱都简单,歌手也没有产业支撑,多以伎或者妓的身份卑微地活着。

而且声音无法保留,一曲终了,哪怕你是大珠小珠落玉盘,也只能消散在风中了。

所以词是意境的主要载体,诗人扬名立万。

后来科技进步了,声音和影像能够被录制和重播,作词的人渐渐势微。

最近,歌手的声音被软件修补得越来越好,脸也慢慢整成了一张,内容又变得越来越重要了:只不过现在叫做 IP 了。

这大概也算各领风骚数百年。

不过不同之处就这么多,更多是相同之处。

玄宗点赞最多的李白,出生在碎叶,算起来就是现在的吉尔吉斯斯坦。

他的诗飘逸潇洒,瑰丽奇骏,跟他是个洋人,血液里还被允许保留着主司本能和放纵的酒神,很有关系。

玄宗为什么对他点赞最多?我觉得后天经受过严格训练才获得了一些地位和成就,但前额叶却变得过分发达的人,欣赏和仰慕天赋异禀但前额叶却不那么发达保持着天真烂漫的人,很好理解。

当然这烂漫不能漫出了堤,比如要说起来,李贺的意境应该比李白还要璀璨奇幻,但一个成了「诗鬼」,一个却是「诗仙」。

所以我们身边的高级知识分子和专业乐评人们,喜欢真天赋加好性情的外卡选手迪玛希,很好理解,这就是天外飞仙流嘛。

相比之下,「诗圣」杜工部这种七世祖开始就是高级公务员的科班汉风代言人,就挺像我们的中共党员,国家一级演员,前中央军委政治工作部歌舞团独唱演员谭晶老师。

技巧高超,招式规整,谭老师那从小硬桥硬马习得的童子功自不必说。

真正厉害的地方还在于人家洋溢着仁民爱物的情怀和浓烈爱国主义色彩,能够抛却实际的生活经验,用自己智慧的双眼去观察,丰富的内心去体会人民群众生活中的苦与乐,有那么强烈的社会意识和写实精神。

大众评审看到这样一位靠自己卓越的专业技能成为亿万富翁和行业领袖的艺术家,为自己一声声召唤出高粱地里那野性刚劲的《九儿》,当然不能不为这份德艺双馨所感动,票刷刷刷地就涌过去了。

而赵雷呢,就有些像「诗王」白居易了。

怎么当 K 歌之王?要能流行。

宋朝的《冷斋夜话》里面说:「白乐天每作诗,问曰解否?妪曰解,则录之;不解,则易之。」

大妈听不懂的都改掉,这很民谣。

难怪把作品交给著名乐评人顾况的时候,顾老师说:「长安米贵,居大不易」。

这翻译过来就是:「北京生活成本这么高,唱民谣的比当民工的还多,很不好混啊。」

世上无难事,只要肯攀登。

无比关心民间疾苦的白居易成功后,不但在首都买了房,自己学会了酿酒,并且「蓄妓玩乐」,写了很多 demo 送给心爱的姑娘呢。

唐代孟棨的《本事诗·事感》里就记载:「白尚书姬人樊素善歌,妓人小蛮善舞,尝为诗曰:樱桃樊素口,杨柳小蛮腰」。

你以为现在夸美女的「樱桃素口小蛮腰」是怎么来的?

都是人家白诗王女朋友的名字。

当然,这也是不少人容易对民谣歌手产生的质疑:他们音乐硬实力有限,比较容易走向平庸和俗气。

比如许巍就只有那么几个和弦嘛。

比如宋冬野就在号子里面嘛。

我觉得如果你因为对坚韧而质朴这种品德的肯定,或者对诗和远方这种追求的向往而追逐民谣,那你可能选错了方向。

说起来,温润如玉的光良要诗和远方一些。

说起来,偏要给套马的中国观众奉献灵歌唱腔的袁娅维要坚韧一些。

民谣歌手的光采在于他们尝试去思考、理解和描绘的,是普通人的生活,因此有独特的创造力和生命力。

因为政治环境的因素,中国当然很难有 Bob Dylan 那一卦的民谣歌手。

但也许我们能拥有自己的 Leonard Cohen。

赵雷跟他们比文学性还有差距。

他的《成都》也不够成都,让很多知道成都有玉林西路玉林东路但没有玉林路的成都人焦急万分。

但和白诗王不同,人家是生下来就有北京户口北京房产的人啊。朋友们,这样家庭背景的民谣选手多起来了,我们的 Leonard Cohen 总还有些盼头。