微服务:优势、挑战与开发周期
1. 为何选择微服务
许多成功的企业基于单体软件构建业务,如Basecamp、Stack Overflow和Etsy。单体应用有大量正统且成熟的软件开发实践和知识,那为何还要选择微服务呢?
1.1 技术异构性促使选择微服务
在一些公司,技术异构性使微服务成为明显的选择。例如Onfido,在引入由机器学习驱动的产品时开始构建微服务,因为该产品与原有的Ruby技术栈不太匹配。即使不完全采用微服务方法,应用微服务原则也能提供更多技术选择来解决业务问题,但情况并非总是如此明确。
1.2 复杂系统增长导致开发摩擦增加
软件系统本质上是复杂的,没有方法或架构能消除系统核心的本质复杂性。软件开发的目标是可持续地最小化产生积极业务影响的前置时间。在复杂软件系统中,困难的是在变化面前持续交付价值,即随着系统变大变复杂,仍能敏捷、快速且安全地交付。因此,一个好的复杂系统应在其生命周期内最小化两个因素:摩擦和风险。
随着单体应用的增长,以下因素可能导致摩擦:
- 变更周期相互耦合,导致更高的协调障碍和回归风险。
- 松散的模块和上下文边界会在缺乏纪律的团队中引发混乱,导致组件之间出现紧密或意外的耦合。
- 规模本身可能带来痛苦,持续集成任务和发布(甚至本地应用启动)都会变慢。
1.3 微服务减少摩擦和风险
微服务通过以下三种方式帮助减少摩擦和风险:
- 构建时隔离和最小化依赖 :无论是团队之间还是对现有代码的依赖,这都能让开发人员更快地推进工作,开发可以并行进行,减少对单体应用中过去决
超级会员免费看
订阅专栏 解锁全文
171万+

被折叠的 条评论
为什么被折叠?



