- 当业务迅猛发展,应用层技术架构较陈旧,无法满足快速迭代的需求
- 期望在流程、组件、模块、服务等,不同层面下的逻辑复用
- 目标是构建易扩展、高性能、可快速迭代的服务化系统
模块化与服务化
- 模块是一个内聚的组件集、是进程内重用的无状态代码块;
- 服务是独立部署的模块或模块集;
服务可以是进程间重用的有状态模块集,也可是复用价值高的无状态模块集。
如何确定服务
- 服务需要自包含。要达成边界明晰、高度内聚、外部松耦合的效果。
- 服务要粒度适中。太小会造成接口爆炸、性能降低;太大会导致灵活度差,维护成本高。
业务系统服务化的思路
- 提取多产品线公用服务,作为基础服务组件;
- 横向对业务进行梳理,在高层次中将业务模型抽象出服务类别;
- 纵向将模型逐渐拆解(按照主要业务功能拆分),业务模型->功能模型->领域模型->对象模型