SpringBoot是一个可使用Java构建微服务的微框架,在了解SpringBoot之前,要知道什么是微服务?
- 什么是微服务
- 微服务有哪些好处
- 微服务会带来哪些挑战
一、什么是微服务
微服务给我最直观的感觉就是,将功能进行拆分,将服务粒度做小,使之可以独立承担对外服务的职责,按这个思路进行开发和交付的软件实体就要做微服务。
就像是“茶壶煮饺子”,原来我们可以将饺子煮在一个茶壶里,但是如果饺子有不同的口味,如果全放在一个里面煮的话,那如何判断哪些是你喜欢吃的,哪些是你不喜欢吃的呢?现在(微服务化之后)则基本上是在一个茶壶里煮一个饺子,而这些饺子就是服务的功能,茶壶则是将这些服务功能打包交付的服务单元。
二、微服务带来哪些好处
显然,随着系统复杂度的提升,以及对系统扩展性的要求越来越高,微服务化就是一个很好的方向。
一方面微服务可以帮助我们应对飙升的系统复杂度,另一方面,微服务可以帮助我们进行更大范围的扩展。从开发阶段项目并行开发的扩展,到交付阶段并行交付的扩展,再到相应的组织结构和组织能力的扩展,都会因微服务而受惠。
三、微服务会带来哪些挑战
微服务并非只有好处,还有一些相应的挑战。
服务“微”化之后,一个显著的问题就是,我们的服务数量增多了。
如果将软件开发和交付也作为一个生产模式来看的话,那么众多的微服务实际上就是类似于传统生产线上的产品,而在传统生产模式下,为了能够高效的生产大量的产品,通常采用的就是标准化生产,例如汽车制造业,目前汽车制造业在引入标准化生产线之后,大量生产并以低成本优势快速普及。在其他行业也是一样,个性化生产虽然会受个别用户的“喜欢”,但是生产成本也会随之提高,生产的效率也会因为个性化需求,无法从“熟能生巧”中获得收益。
标注化生产走的是另一条路,通过生产标准产品,使得生产链路可以重复,从而提高了生产效率,可以为更广层面的用户提供大量“物美价廉”的产品。
要实施高效可重复的标准化的微服务生产,我们就需要类似传统行业生产线的基础设施,否则高效可重复的开发和交付大量的微服务就无从谈起,所以完备的微服务的研发和交付体系基础设施就成为了实施微服务化战略,为交付链路提供完备支撑的基础设施建设必不可少。
总结
微服务化虽然是当下流行的趋势,但是并非任何场景都适用,都适合,我们还是要审慎地在“大一统”服务架构和微服务之间做出选择,而一旦确定了选择微服务化之路,那么就应该围绕团队和组织的主要语言生态以及微服务方向积极高效的微服务开发和交付。