「微服务架构思路对组织影响的进一步思考。」
今年开始系统演化进入了第四个大版本,前两个版本我们采用的单一应用模式,核心开发团队也只有五、六人。
前年团队扩张到了近 20 人左右,单一应用的维护协作成本已变得不可忽视,服务化拆分时进入第三版时我们做出
的一个选择,但当时拆分粒度其实较粗,方便把团队拆分为几个小组来分别维护不同的服务和子系统。
两年来随着业务的发展,每个当初拆分的子系统或服务都膨胀到了一定的复杂度。单一进程应用实际承载了数十个
业务服务,单人维护单一服务进程应用开始变得有负担,而类同业务大量需求导致的定制化开发严重拖累团队的生产力,
进一步的微服务化与业务组件平台化将是进入第四版的主题。
微服务的粒度
随着公司运维基础设施(编译、部署、发布、监控和预警)的逐步成熟为微服务化的生产应用铺平了道路。微服务拆分遵循了两个纬度,一个是业务服务分级化、目前定为三级(0、1、2),0 级服务为最核心,而越是核心
的业务拆分的职责越单一和正交化,实现功能的最小集,足够的简单单一对于确保稳定、性能和控制变更都有莫大益处,
边际成本递减效应明显。
微服务规划与设计
当我们开始考虑到底需要拆除哪些服务时,与城市规划有些类似。首先一个城市会化成几个大的片区,每个片区承担着城市发展所需要不同功能职责(商业、居住、工业、科技等)。只有大的片区划分是不够的,
仅仅完成了顶层设计,微服务化的设计需进一步深入到这个片区到底是否需要安置一个 “购物中心”或“学校” 之类,