飞书合并微服务以及由此关联的岗位优化话题已经在程序员圈子和更广泛的职场圈子发酵了两周左右的时间,大家都在讨论在程序员和初创企业员工中口碑甚佳的协作平台为何也会出现合并微服务进而导致岗位优化的深层原因,当然更多的人也在借此机会抱怨单位或者前单位在协作和办公软件上种种奇葩行为。
不过本文不会在职场上展开太多,笔者希望将飞书最核心的技术路线——云计算和微服务——用尽可能通俗的语言和措辞解释出来,并尝试总结此次飞书合并微服务相对而言较为普遍的理由,为更多打工人了解飞书这一举动提供另一个维度的视角和参考。
当然,本文出于科普角度,笔者不会深究云计算、容器和微服务中的关键技术如何工作,而主要通过象征性的类比让更多普通打工人对这些技术有一些初步的概念和认识,若想要深度了解和学习云计算中的关键技术,请移步开发者社区与专业人士进行沟通探讨。
首先我们从让飞书乃至整个地球在互联网和人工智能时代最关键的基础设施架构——云计算开始。
云计算——整合计算资源的超级市场
想要了解飞书的技术路线,就必须要搞清楚云计算究竟是什么。
在云计算普及以前,想要调用庞大的服务器资源就像是一个普通打工人要去距离主城区数十公里外的食材批发市场采购一样,虽然可以购买适量的商品以供自己使用,但付出的时间和精力成本都是巨大的。也就是说,只有那些最大的连锁餐厅才能抵消这样的采购成本。
随着云服务的概念逐渐建立,越来越多的基础设施供应商开始意识到,想要扩大客户群体就要提供更好的采购方式和服务,加之无线互联网时代的到来,开发联网软件的需求和初创企业也开始呈几何级数上升,这些需求和软件对服务器在存储、响应速度等的额外需求也开始逐步上升。因此,这些基础设施供应商开始对已有的计算资源进行扩展,并通过软件优化周边问题和服务质量,以迎合整个时代的发展。也就是说,云服务就是在交通便利的核心城区为满足更多独特需求而打造的大型商超,让普通消费者可以不出远门就能买到各种各样的食材和配料。
并且和真正的超市一样,在云计算这个大商超中,我们既可以看到不同品牌的产品,也能看到云服务供应商自有品牌的产品(比如家乐福沃尔玛这类大型超市都有自营品牌产品),如微软和亚马逊的云计算产品不仅出售硬件产品,也会出售自家的云端程序,尤其是在深度学习在2018年迎来大爆发之后,这些云计算厂商也会在自己的云计算产品上提供AI服务,以加强自身云服务产品的竞争力。
但和真正的超市不一样的是,云计算这个大商超的规模几乎可以扩展到无限大,这就意味着这个大超市会留下非常多的空位置,这些空位置就完全依赖客户需求和开发者的创造力来填满。飞书就是在云计算这一大超市中上架的新产品,是和Slack这类协作软件一样提供了全面且好用的沟通、文件在线管理和办公平台,因其轻量化和快速迭代的优势深受小微企业和初创企业打工人的青睐。
容器和微服务——超便利的专项收纳工具
之所以飞书能够实现快速迭代以迎合用户需求,除了开发团队愿意与客户积极互动之外,主要的技术原因就是采用了微服务技术。除了云计算,欢迎关注本微信公众号:bardliublog,还有电子游戏相关内容即将刊登,若感兴趣,敬请期待。
现在,让我们把目光缩小到一间厨房中。
在打造自己满意厨房的过程中,难免会需要各种各样的收纳工具,这些收纳工具可能是方的或者圆的,可能是大的或者小的,如果要做到最大化利用厨房空间,就需要好好研究需要什么形状的收纳器具。“容器”的出现改变了这一局面,开发者可以自定义容器的形状以符合厨房的样式,而无需反复购买不同形状和大小的收纳工具。当然,和真正的厨房收纳不同的是,云计算本就拥有可伸缩性和弹性,也就是说厨房本身就是可以主动或被动扩大或缩小,所以容器算是利用云计算的特性而建立的工具。
容器的强大之处在于不仅能够做成囤放大量米面或饮用水这类生活必需品的大盒子,也可以做成存放油盐酱醋的袖珍小物。这就让容器能够在各种地方部署和运行。如果需求足够小,这些容器甚至可以直接部署在自用的笔记本电脑中。而这些超小型的,利用容器构建的工具就可以被称作微服务。
有了这些微服务,许多特定的业务需求就可以被开发者以较快的速度开发出来。在飞书这个构建在云计算这个大超市的小厨房中,如果有客人提出了额外的要求,比如想要一份炒饭但需要多加贡菜这种炒饭里不常见的食材,那么利用微服务就可以很快地解决需要适量贡菜的问题。
因此,在用户需求处于增长状态,并且这些要求会在短时间内高频出现时,采用微服务会在很大程度上提升开发效率。开发者无需关心新的工具或功能怎么集成到原来的厨房中,只要搞定新的工具本身,后续的部分兼容和上线问题就可以交由运维来解决,若是自己解决也能够快速定位问题所在,以提升服务的快速修复能力和可靠性。
合并微服务——需求放缓之后的权宜之计
但是,这里总有一个巨大的“但是”。
微服务的优势建立在大环境的基础之上,也就是业务需求快速膨胀,传统开发节奏无法及时响应客户的时候,微服务才能体现其应有的价值。
但如果业务需求开始萎缩,客户没有更多额外需求了呢?
这时候就必须要合并微服务了。
比如做炸鸡的时候,往往同时需要黑胡椒和盐。许多餐厅都会把盐和黑胡椒调配在一起,某种程度上就是一种合并微服务的做法。也就是说,虽然合并微服务很大程度上意味着岗位优化,但并不意味着需求的改变——但也不得不说,如果一部分需求和工具过于小众,合并之后这些微服务也是会被砍掉的。
因此,在这种大背景下,飞书合并微服务带来的就是实打实的成本优化。
微服务在超过一定规模后,最难以解决的就是运维和经济成本。笔者相信很多人有点囤积癖,比如囤很多杯子、记事本或者实体版游戏。但事实上很多时候我们其实并不需要囤那么多东西,用也用不完,但是又要存放它们,还要保证它们不会放在容易被盗或者容易被摔碎的空间,如果要整理房间的话这些东西偶尔也会很碍事,收拾起来也会很劳人。到了一定限度后,这些东西往往会成为累赘,就必须扔掉、送人或者挂到二手平台卖掉。微服务也会面对这样的问题,解决方案就是对它们进行合并。
微服务有一些其他比较难以解决的问题,异步性就是其中之一。比如到了饭点,厨房需要开始备菜并提前准备一些菜品,但是由于微服务需要单独通信,所以一旦微服务的数量超过一定的通信范围就会出现延迟,这就会导致成菜出现时间差异,进而引起一连串的延迟。
随着人工智能的出现,对微服务的设计、开发、合并与拆分都正在朝着高效化和智能化的方向发展,所以其实在不远的将来,无论是飞书还是其他云端应用,无论微服务是要分拆还是合并,都会不可避免地出现岗位优化的问题。当然,有心的程序员和工程师一定已经开始学习如何利用AI协助构建云端工具,但这就不是本文要探讨的内容了。
延伸阅读:
微服务架构设计原理与实战:理解微服务的服务拆分与合并 https://juejin.cn/post/7317209427067928626
关于微服务和容器 https://zhuanlan.zhihu.com/p/43357441