写点什么

架构实战营 - 模块 6- 作业

发布于: 2021 年 06 月 13 日

作业:拆分电商系统为微服务

【背景】 假设你现在是一个创业公司的 CTO,开发团队大约 30 人左右,包括 5 个前端和 25 个后端,后端开发人员全部都是 Java,现在你们准备从 0 开始做一个小程序电商业务,请你设计微服务拆分的架构以及微服务基础设施选型。

【作业要求】 1. 需要明确服务拆分思路,并且将拆分后的系统架构图画出来; 2. 需要明确微服务基础设施选型思路,并选择一个微服务框架。

【提示】 1. 需要应用三个火枪手原则; 2. 需要选择拆分方式; 3. 需要选择微服务框架的模式



约束条件:

1,开发团队约 30 个人左右,包括 5 个前端和 25 个后端,后端开发人员全部都是 Java

2,从 0 开始做一个小程序电商业务



方案:

1,因为从 0 开始,所以选择按照业务拆分


2,因为从 0 开始,所以可以搭建完善的基础设施


3,新业务,后端团队全部使用 Java,所以微服务框架有两个选择:

a,选择 springcloud

b,选择 dubbo

原则上这里可以根据团队技术栈的熟悉程度来选择。

因为是新业务,所以流量不会太大,所以用不到 RPC;且可能使用粗粒度的渐进式的方式拆分,所以可以优先考虑 springcloud;当流量增大,业务越来越多,应用也越来越多,应用与应用相互关联调用,发现有些功能已经不能简单划分开,此时可能就需要用到 RPC,这时可以考虑使用 dubbo。


4,系统架构图设计

虽然是新的电商业务,但是因为不清楚有没有业务专家,所以业务拆分思路有两种:

1,有业务专家,可以由业务专家带领来划分。

2,没有业务专家,可以渐进式,先粗分后演进。


并且还要考虑到基础设施的开发与维护工作。



A,业务部分:

所以,如果是粗粒度的划分

因为后端是 25 个开发,根据三个火枪手的原则:



5 个前端,25 个后端,后端我们选择一对一拆分,拆分出六个服务。


B,基础设施部分:

由于业务部分拆分完后是 6 个服务,那么 25 个人中使用了 18 人,还剩下 7 个人可以进行基础设施的开发与维护。但是由于业界的基础设施已经成熟,所以可以直接采用开源方案进行使用,那么就省略的研发工作,只剩下环境的搭建,使用以及维护工作。


容器化都选用 k8s+docker

基于此,可以有多种方案:

1,springcloud 全家桶系列 + 其他组件

2,springcloud 全家桶系列 + 替换全家桶部分组件 + 其他组件

3,任意组件搭配系列(比如 nacos+dubbo+elastic-job+hytrix+cat+k8s+docker+rocketmq+redis+jenkins+testng+mockito 等)


出于简便的原因,可以采用 springcloud 全家桶系列 + 其他组件


用户头像

还未添加个人签名 2020.09.27 加入

还未添加个人简介

评论

发布
暂无评论
架构实战营 - 模块 6- 作业