微服务架构深度解析与最佳实践
七个关键问题的应对策略 1.如何合理拆分微服务 当一个系统服务化的时候,就会面临一个问题:如何进行服务的划分?怎么确定服务的粒度?有没有一些可以参考的业界通用规则? 实际上服务划分的本质是对系统进行架构设计,服务的划分粒度没有绝对的过大或过小之说,不同阶段的侧重点和思考的角度也不尽相同。 创业初期的团队,过分的追求微服务,为了“微”而微,反而会导致业务逻辑过于分散,技术架构过于复杂,团队基础设施搭建能力弱,进而导致忽略了快速迭代交付产品的重要性,可能错失了市场机会。所以,关于服务的划分不是对错的选择题,而是需要综合考虑各种外界的因素,所作出的一个最适合的决策,这些外界因素通常包括业务、技术债、开发、运维、测试这 五个方面: 业务所处领域的市场性质:对市场比较敏感的项目,创业初期粒度应该尽量划分的粗一些,先提供充足的弹药去占领市场,然后再去考虑对系统进行重构和优化; 与原有系统之间的关系:对于历史遗留的系统,需要做好新旧系统之间的边界划分,避免过于激进、过大幅度的改造,应该采取小步快跑的方式,有节奏的对老系统进行服务化改造; 开发团队的成熟度:服务化带来的技术风险应该提前进行评估,要考虑团队的承受度,用合适的人做适合的事,考虑团队需要有包括敏捷,包括 Devops,包括基础设施,运维和测试的自动化等基础能力; 基础设施的搭建能力:在进行细粒度的服务划分时