在微服务演进的道路上,我们的目标是将一个个大的单体应用拆分成多个可独立工作的业务单元,这些业务单元是可以独立开发、测试、部署和运维的工作节点。但是,微服务系统架构归根结底是分布式系统,我们都知道分布式系统是复杂的,是为微服务实施不可避免的挑战。
实施微服务面临的挑战有以下几点:
- 由分布式系统复杂度带来的问题,如:通信机制的选择(同步还是异步);数据一致性;延迟;超时重试及网络中断处理;通信协议的设计;服务拆分的策略等
- 全功能团队的协作、负责共享以及知识传播
- 持续集成、持续交付、流水线工作流等
- 测试策略、接口测试以及自动化验证的有效性
- 部署机制以及监控、告警、日志聚合等运维
- 团队的工程实践(微服务的描述文档、单服务的启动能力、服务标准接口的定义)
微服务的演进不仅仅是架构的演进,也是架构、实践、组织架构等的综合演进,这是一个系统过的大工程。