深入了解微服务:特性、优势、成本与应用实例
1. 微服务概述
微服务通常被认为是小型的,但单纯讨论微服务的代码行数、需求数量、用例或功能点意义不大,关键在于维护微服务的工作量。一般来说,一个小型团队(可能五人左右)应能够维护至少几个微服务。维护微服务涵盖开发新功能、拆分过大的微服务、生产环境运行、监控、测试、修复漏洞等各个方面。
微服务还应具备可替换性,即能够在合理时间内从头重写。若微服务过大,替换成本会很高;而小型微服务则更易于重写。团队决定重写微服务可能是因为代码混乱难以维护,或者在生产环境中性能不佳。随着需求变化,有时替换代码库比维护更合理。
2. 为何选择微服务
2.1 实现持续交付
微服务架构风格考虑到了持续交付,它聚焦于具备以下特性的服务:
- 可快速开发和修改
- 可通过自动化测试全面测试
- 可独立部署
- 可高效运营
这些特性使持续交付成为可能,但采用微服务架构并不意味着必然能实现持续交付,二者关系更为复杂。相较于传统的面向服务架构(SOA),使用微服务进行持续交付更容易。不过,只有能够高效可靠地部署服务,才能充分采用微服务架构。持续交付和微服务相互补充。
持续交付是一种开发实践,团队需确保软件随时可快速部署到生产环境。部署到生产环境仍是业务决策,但实践持续交付的团队倾向于频繁部署,并在新开发的软件进入源代码控制后不久就进行部署。
持续交付有两个主要要求:
- 软件必须始终处于完全功能状态,这需要团队高度关注质量,实现高度的测试自动化,并以非常小的增量进行开发。
- 部署过程必须可重复、可靠且快速