微服务,只有年收入 20 亿美元的公司才需要。
这是个肯定句,是经过多层的数据研究,公司到达此规模,才有充分的理由采用微服务架构。
之前是什么状态?
单体式架构演化为基于服务的模块化单体式架构,然后才演化为宏服务、迷你服务与微服务。
这是为什么?
付出最少努力的解决方案,是提供适应和发展业务能力的首选解决方案。
小而集中
执行非常细微的功能
只操作需要的数据
服务层上进行协作
通常按反应方执行
数据按比例解耦
如果微服务做得好,它们将拥有完全自动化的配置流程,这是纯正的云原生,在各个层都会有很好的解耦。
但它们存在一些问题,需要做以下权衡:
业务流程更难以映射
服务协作很困难
数据状态难以协调
集成要复杂得多
自动化成本更高
复杂性更难控制
可观察性是一个挑战
减少这些权衡需要一种渐进的方法,来让事情变得更小,同时处理分发的额外复杂性。对于我们大多数人来说,当公司的年收入不到 20 亿美元时,并不需要微服务特性。
独立于技术架构,企业希望在速度兼具质量的范例中实现增长:
为用户传递价值
快速测试新的想法
可在短时间内适应
保持可控性
支持增加流量
有利可图
从该列表中,下一阶段是确定技术如何成为业务限制的因素,以明确区分问题与可能的解决方案。
所有解决方案通常都需要关键功能的高可用性、更多的模块化,以更好地适应更多的变化以及在小范围内测试想法的能力。
不同的是限制因素,这取决于上下文:
哪个范围必须改变很多?
是否有关键区域不稳定或存在风险?
哪些部分累积了更多的复杂性?
哪里达到协作限制?
哪些资源可以更改?
这些问题是定义从初始架构所需的最小架构演变的起点,可能并不用改变那么多。
软件行业发展到社会技术生态系统的概念,认识到人、流程、组织、文化和技术之间的联系。
这种相互依赖性需要每个领域保持一致,使其朝着正确的方向发展,以最小的努力发展业务。
基于该模型,应避免的问题实例是:
只有3 名软件工程师的微服务架构;
拥有 500 名开发人员的模块 ,但缺少共享支持
每个软件团队在没有共享支持的情况下完成 50% 的运行任务
该列表还在继续。
我们对 50 多家公司的研究揭示了以下的宏观模型:
单体:收入为 0-200 万美元,10 个 FTE (全职员工)
单体模块化:2-2000 万美元的收入,最多 50 个 FTE
基于服务:20-2 亿美元的收入,最多 500 个 FTE
从宏服务到迷你服务:2 亿美元至 20 亿美元的收入,最高 5000 FTE
迷你服务到微服务:超过 5000 个 FTE ,收入 > $20亿美元。
请看如下图片:
分析还显示,声称要实施微服务的公司实际上是在实施基于服务或宏服务的架构。
例如,数字电子商务上下文中的“购物车”服务是宏服务而不是微服务,因为它是模块化的,具有与其它应用程序的显式接口,但仍在相同的功能和技术范围内执行多种业务功能。
关键的技术差异在于服务的粒度更高,服务之间共享数据而不是外部解耦。
作者:大雄
本文为 @ 场长 创作并授权 21CTO 发布,未经许可,请勿转载。
内容授权事宜请您联系 webmaster@21cto.com或关注 21CTO 公众号。
该文观点仅代表作者本人,21CTO 平台仅提供信息存储空间服务。