框架的发展一般是根据用户规模来的。当用户达到一定规模,旧的框架就会遇到瓶颈,要想扩大规模就必须使用新的框架才能突破瓶颈。否则,系统的质量无法得到保证,甚至出现系统瘫痪,财务损失。
新框架要想适应更大的用户规模,一个成熟而有效的方法就是“分工”。用户规模越大就越需要细化分工。这就像劳动分工一样,为了适应经济的发展,从个体劳动到家庭分工,再到企业分工,最后到社会分工,分工越来越细,范围越来越大,效率越来越高。
如果将分工理解为服务,将分工的粗细理解为服务的颗粒度,那么更大的用户规模就需要更小颗粒度的服务。服务的颗粒度变小以后,服务间的协调变得更复杂,其它方面也会出现新的问题。新框架设计的目的就是为了解决这些新问题,从而让系统能安全有效运行。
框架并没有觉得的好坏之分,他们只是适应不同的颗粒度。
SOA 适用于企业级应用,颗粒度相对较大,服务细化到子系统或者模块。这些子系统或模块之间有很多冗余的功能,会出现资源浪费,也会增加维护成本。比如图片的存储,每个子系统都有自己的一套代码,甚至存在各自的不同的服务器上。
微服务适用于社会级的应用,颗粒度更细,甚至细化到具体的功能,比如图片存储服务、短信发送服务、统一支付服务等等。