架构实战营 - 模块六作业
【背景】 假设你现在是一个创业公司的 CTO,开发团队大约 30 人左右,包括 5 个前端和 25 个后端,后端开发人员 全部都是 Java,现在你们准备从 0 开始做一个小程序电商业务,请你设计微服务拆分的架构以及微服务 基础设施选型。
【作业要求】 1. 需要明确服务拆分思路,并且将拆分后的系统架构图画出来; 2. 需要明确微服务基础设施选型思路,并选择一个微服务框架; 3. 用 1~2 页 PPT 即可。
【提示】 1. 需要应用三个火枪手原则; 2. 需要选择拆分方式; 3. 需要选择微服务框架的模式。
一、服务拆分思路
由于我们是从 0 开始搭建一个小程序电商业务,没有历史包袱,初期我们可以按照业务拆分服务。拆分方案有两种;一种是公司有经验丰富的业务专家的话,就按业务专家制定的拆分方案拆分,这种方式比较简单,服务拆分的好坏依赖业务专家自身水平。另一种是参考业界比较成熟的方案进行拆分,由于电商业务有非常多的成功案例可参照,一般按照常见的拆分方式先粗后细的拆分基本不会踩雷,是比较稳妥的拆分方式。
我们现有开发团队有 30 人,其中 5 人前端,25 人后端,按照三个火枪手原则,理论上可以拆分为 7~8 个微服务,这里我们拆分成 7 个微服务,然后剩下的 4 名后端开发人员分配建设微服务的基础设施。
明确电商服务按照 7 个微服务进行划分后,可结合业务推导出按一对一的方式进行具体的服务拆分。
拆分后的系统架构图
二、基础设施选型思路
开发团队后端成员都是 java 程序员,技术栈语言统一,所以我们可以选取 springcloud 或者 dubbo 作为微服务的核心框架。
由于我们电商项目在开发过程中需要一整套微服务基础生态,综合考虑还是选用 springcloud-Alibaba 作为核心微服务框架比较适合,他包括了 nacos 注册配置中心以及 sentinel 流控组件等一系列组件,且性能和社区活跃度比较高,是当前主流的微服务框架,技术较为成熟使用风险较小。
除了服务注册、发现、路由等微服务核心功能外,我们还要关注线上运维基础设施组件以及 CI/CD 相关组件的建设,以减少后期运维部署成本和满足快速定位问题、快速测试迭代应用的需求。
评论