模块 -6 拆分电商系统为微服务
【背景】
假设你现在是一个创业公司的 CTO,开发团队大约 30 人左右,包括 5 个前端和 25 个后端,后端开发人员全部都是 Java,现在你们准备从 0 开始做一个小程序电商业务,请你设计微服务拆分的架构以及微服务基础设施选型。
【作业要求】
1. 需要明确服务拆分思路,并且将拆分后的系统架构图画出来;
2. 需要明确微服务基础设施选型思路,并选择一个微服务框架;
一、微服务拆分思路
考虑到本公司从 0 开始搭建系统,因此首先从业务角度对小程序电商系统进行微服务拆分。鉴于团队规模和成员经验有限,我们参考业界典型的小程序电商系统实现来进行业务划分。,在此过程中也需要考虑本公司开发团队的实际情况。
第一步,先参考业界经验,结合公司业务需求和业务流程,对电商系统后端进行领域划分。假设该电商系统属于 B2C 电商,商品全部为实体商品,需要物流和库存管理,且全部自营,没有第三方店铺,平台经常会有各类促销活动,由此可以得到以下 7 个微服务:
图-1
图-1 说明:
商品微服务:负责商品分类、商品列表、商品详情页、商品检索、商品评价等业务
订单微服务:负责订单创建、管理,促销和优惠的计算等
支付微服务:负责支付相关的业务流程,同时财务结算也划分到该微服务中
用户微服务:负责用户信息的管理,以及用户名下订单、优惠券、权益等的管理(该部分未在上图呈现出来)
运营微服务:负责商品的个性化推荐、秒杀预售等活动的支持,以及优惠券的发放
仓储微服务:负责库存管理和物流管理
管理微服务:负责系统的后台管理和数据统计
二、团队划分
基于三个火枪手原则的简单计算,按照平均 3 人负责一个微服务的分配方案,则 25 人的后端开发团队可以负责约 8~9 个微服务。但考虑到整个系统都是从 0 开始搭建,且需要首先对微服务基础设施进行落地,因此分配一部分开发人员负责基础设施的搭建和维护。
以上 7 个微服务每个由 3 名后端人员负责开发维护,共 21 人,剩余 4 人负责微服务基础设施的搭建和维护,以及系统整体 DevOps 方面的开发。
三、微服务基础设施选型
因为是初创公司,所以采用嵌入式的 SDK 模式。可以参考 mall-swarm 开源微服务商城系统,天然支持高性能和高可用,而且没有额外的维护工作。采用 Spring Cloud Hoxton & Alibaba,以及 Spring Boot 2.3 等。在电商业务的基础上,集成了注册中心、配置中心、监控中心、网关等系统功能。
评论