写点什么

架构实战营模块 6 作业

用户头像
En wei
关注
发布于: 2021 年 06 月 06 日

作业题目

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

【背景】

假设你现在是一个创业公司的 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

  • 拆分技巧,主要是业务和质量两方面,实际上拆分是非常困难的,而且由领域决定

  • 中台讨论

  • 手游交易平台微服务实战


发布于: 2021 年 06 月 06 日阅读数: 36
用户头像

En wei

关注

还未添加个人签名 2017.12.10 加入

还未添加个人简介

评论

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