微服务其实是与业务敏捷、敏捷方法、云计算、DevOps、SOA之间存在因与果的规律的。微服务的出现并不是凭空的,而互联网、电商等业务与技术两个轮子相互推进的过程中出现的。
首先,随着互联网与电商应用的发展,超大并发、高可用的需求催生了单体应用必须向模块化独立部署、分布式架构、集群与FailOver、双活、数据分片的方向发展,否则超大并发、高可用的需求无法满足;另外互联网与电商、大型企业为应用对竞争对手的挑战,都提出了业务敏捷的需求,而业务敏捷、随需而变的需求,催生了SOA架构、敏捷方法。
在近7、8的时间里,SOA服务治理,成了各大企业与平台,应用对业务敏捷需求的重要手段,服务集成、服务编排、ESB逐渐大面积被大型企业采用,SOA的7大特性:业务自包含与模块化、粗粒度、松散藕合、互操作、可寻址、面向流程可分解、位置透明,成了解决大型企业、复杂系统间的面向集成、随需而变的重要手段。
而互联网与电商应用,特别是2C的,由于其不可预测的超大并发访问需求、服务等(SLA)要求,往往引领了高性能、高可用IT技术发展的先导。
云计算、DevOps于是应运而生。
云计算是为了解决超大规模应用的可性能、可维护性、高可用而生的,IaaS是为了解决底层计算、存储、网络的高效管理与调度,PaaS是为了解决应用的持续集成与交付,SaaS则是一种多租户互联网业务模式。而容器技术,包括docker容器的出现和飞速发展,则为DevOps的实现,奠定了坚实的基础。
同时,云计算、CaaS等云平台,为微服务的广泛应用,提供了坚实的平台基础。
本来微服务对于单体应用的细粒度拆分,会带来大量的负面成本:分布式事务的致性保证(C),消息集成,应用独立部署、环境成几倍甚至几十倍的增长,运维成本线性增长。
有了云平台、CaaS,这些负面成本特别是运维方面的成本可以完全或者部分化解。
呵呵,人类活着就得找点事来不断在折腾自己、挑战自己!
模块化、微服务导致应用拆分,实施团队拆分变小,敏捷方法得以采用,而DevOps强调一种文化(是不是跟敏捷也强调自己的文化有些相似?):开发与运维的融合,边界不再清晰,合作、自动化、高效成为目标,自动伸缩、容器的动态化、Green/Blue rolling成为标志。
敏捷方法成功的第一步是什么?在方案的计划与初始阶段,提供端到端的评估。
微服务成功的第一步是什么?对端到端业务流程架构的评估。
以上就是这些老肉肉与小鲜肉的前因后果。