架构实战营模块 6 作业
作业题目
作业:拆分电商系统为微服务
【背景】
假设你现在是一个创业公司的 CTO,开发团队大约 30 人左右,包括 5 个前端和 25 个后端,后端开发人员全 部都是 Java,现在你们准备从 0 开始做一个小程序电商业务,请你设计微服务拆分的架构以及微服务基础 设施选型。
【作业要求】
1. 需要明确服务拆分思路,并且将拆分后的系统架构图画出来;
2. 需要明确微服务基础设施选型思路,并选择一个微服务框架。
【提示】
1. 需要应用三个火枪手原则;
2. 需要选择拆分方式;
3. 需要选择微服务框架的模式
作业分析
提前体验了一把 CTO 的感觉,虽然是假设。。。。说实话这个创业公司很虎啊,直接来了 30 个开发,还要自己搞小程序电商开发,这么多开发,一个月的研发成本少说也要 50 万吧。找一个开源的或是花点钱买一个先跑起来不香么?我要是 CEO 看到 CTO 的决定非得被气死。ok,不废话了,开始对题目进行分析。
建设目标
小程序的电商业务,核心是电商业务,渠道是小程序,特点是初创,可能会有爆发性的业务增长(狗头)。由于业务背景也没有交代暂时当作 C2C 的模式,因此涉及到商铺的管理。
基本业务元素
商铺,商品,库存,订单,用户,交易(支付),这几个基本元素
电商业务在业界都是很成熟了,所以业务的领域划分直接参考业界就可以了,下面是阿里的一张图。
框架以及基础设施选型分析
微服务框架选择图如下所示。
既然后端都是 java,那么微服务技术栈就直接选择 SpringCloud 全家桶就对了,虽然 dubbo 也可以,但生态还是没有 SpringCloud 那么完善。
考虑到运维的复杂性,考虑使用 nacos 实现注册与发现和配置中心,要不然还得起 eureka 和 config 两个服务。ps 这个 nacos 在系统中至关重要,它挂了,服务就都挂了,务必保证高可用
网关则考虑选择 Spring gateway 或者 Zuul,Spring gateway 没有在项目实际用过还是选择 Zuul 吧,初创用户也不会太夸张,部署几个 Zuul 就搞定了
上面两个是搞微服务必须要搞的,下面点服务监控,日志以及链路追踪可以下一个阶段搞。
服务监控直接 promethues+granfana
还有日志服务也不能少,ELK 走起来
链路追踪使用 Skywalking 即可
个人考虑初创团队上面的基础设施基本够上一段时间了。
研发资源分析
一共 25 个后台开发人员,按照 3 个火枪手的理论,最多支持 8 个服务,留出充分的余量,初创团队人员流失风险较高。同时基础设施的搭建也是要耗费开发人员,由于团队有限,考虑组建一个基础平台开发团队 3 个人,后期稳定后再移交给运维团队(如果有的话)。
所以业务开发的力量应该有 22 个人。
作业回答
拆分思路
电商平台根据领域特点基本可以划分为商铺,商品,库存,订单,用户,交易,这六个业务大类。再加上一个综合用来承载其他的业务,可以算作 7 个服务。22 个人开发 7 个服务,基本符合三个火枪手原则。
因此服务拆分为商铺,商品,库存,订单,用户,交易,综合这 7 个服务。
还有专门一个团队负责基础设施的搭建。
所有拆分思路是按照业务拆分哦,后期如果快速增长再按照质量拆分。
拆分系统架构
微服务框架选型
由于后端开发的技术栈都是 java,微服务技术栈就直接选择 SpringCloud,也就是嵌入 SDK 式。
考虑到运维的复杂性,考虑使用 nacos 实现注册与发现和配置中心,要不然还得起 eureka 和 config 两个服务。ps 这个 nacos 在系统中至关重要,它挂了,服务就都挂了,务必保证高可用
网关则考虑选择 Spring gateway 或者 Zuul,Spring gateway 没有在项目实际用过还是选择 Zuul 吧,初创用户也不会太夸张,部署几个 Zuul 就搞定了
上面两个是搞微服务必须要搞的,下面点服务监控,日志以及链路追踪可以下一个阶段搞。
服务监控直接 promethues+granfana
日志聚合框架选择 ELK
链路追踪使用 Skywalking 即可
学习总结
果然模块 6 的作业今天发了出来,还好昨天刚刚加班补上模块五的作业,要不然真的要放弃了。
模块 6 的内容相对熟悉一些,主要是微服务相关的内容,由于公司已经经历过微服务化改造,老师介绍的各种改造遇到的问题都是深有体会啊,中台方面我们目前倒是没有涉及,不过后续的讨论和建议确实也是受益颇多,说到底中台的建设首要是要进行组织机构的建设和改革。
简单梳理一下模块 6 的内容。
总体架构介绍,对比了微服务和 SOA 架构
微服务架构的陷阱与挑战,讲了在落地微服务中遇到的各种问题,比如拆分不合理,缺乏基础设施
基础设施选型,遇事不决 spring,选择太多 apache
拆分技巧,主要是业务和质量两方面,实际上拆分是非常困难的,而且由领域决定
中台讨论
手游交易平台微服务实战
版权声明: 本文为 InfoQ 作者【En wei】的原创文章。
原文链接:【http://xie.infoq.cn/article/ba164f5d24379bfbb2816fdab】。文章转载请联系作者。
评论