Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >微服务如何划分

微服务如何划分

作者头像
方丈的寺院
发布于 2022-04-12 05:56:34
发布于 2022-04-12 05:56:34
1.3K0
举报
文章被收录于专栏:方丈的寺院方丈的寺院

摘要

作为团队架构师/技术负责人你该如何进行微服务的划分呢?在以前的文章中讨论过这个话题,可落地的DDD(4)-如何利用DDD进行微服务的划分(2)[1],最近结合在不同的开发团队实践,又有了新的思考,相比较之前的基于DDD会更加全面可落地,也欢迎大家留言讨论。

为何要划分微服务

微服务架构被广泛用于互联网公司,其优势在于每个服务足够小,相互之间具备隔离性。配合一些基础设施,能够使得需求快速迭代上线。但是每个服务的粒度应该多大呢,服务之间的关系应该是怎样的呢?

首先我们来探讨一下微服务划分的目标。微服务划分涉及到两个对象,一个是微服务,一个是开发人员。所以目标是高效有序将微服务及开发人员组织起来。

如何衡量有序呢?

1.职责清晰2.相互间的依赖关系清晰 一个无序的微服务调用,会陷入混乱地狱。

因此制定一些标准

横向:按照业务流程拆,业务流程反映的是数据流程,数据从上游流下下游。上游需要和下游解耦,上游不可通过服务间调用下游。下游可以。

纵向:按照技术拆分,由上到下分为4层,上层可以调用下层,同级可以相互调用,下层强制不能调用上层。

1.应用系统 面向各个端,比如pc端,面向用户的,面向小二的。app端。属于前端应用。

2.核心领域 整个系统的核心业务,与业务紧密相连。支撑业务发展。

3.基础能力 从核心领域中下沉抽象出来的更通用的服务,不只是服务当前业务。也服务于公司其他业务。

4.依赖系统 一些通用的公共模块以及与其他兄弟部门的服务依赖。

如此调用关系比较清晰了。

如何衡量高效呢?

对于服务是性能高且稳定 对于开发人员是效率高且有技术成长空间

业务量上来一个,后端的很多工作就是围绕着性能和稳定,微服务的划分也深深影响着。因此服务划分还会按照

1.基于迭代频次 变更是引发故障的主要原因,因此如果一个服务是稳定的,我们可以把他单独拆分为一个微服务,这样在项目快速迭代时,不会影响已有功能。不需要投入太多回归测试时间。

2. 基于可靠性 核心服务需要重点保障,流量高的应用和流量低的应用稳定性要求也不一样。可以将核心服务,流量高的应用单独拆出来,这样使得核心服务功能逻辑简单,依赖减少,存储独立。稳定性得到极大保障。

3.基于开发人员 架构活动不仅要关心机器,还要关心人。开发人员的工作效率极大影响了业务的交付速度和质量。一个微服务需要一个唯一owner和2-3个开发人员(owner也参与开发)。owner是第一责任人,负责整个应用的代码质量,服务稳定性。2-3个人负责开发一个系统,不会有单点,在人员流动的情况能够进行相互补位,同时相互之间可以进行技术方案深度讨论,能够应对一定级别的复杂需求。人数不宜超过4个人,人太多,在同一个应用中开发不同的需求,可能每天都要处理不同的分支之间冲突,多套环境进行测试,效率比较低。同时人数太多,讨论效率也比较低。此外需要尽量保证每个中高级别的开发者都是一个微服务的owner,有自己的一块自留地,在需求承接之外,能够在做一些技术相关的开发工作。

当然高效和有序并不总是统一的,有时候我们需要去做架构取舍。

如何划分

举个例子,比如你公司是做在线教育的,你入职负责开发公司的客户管理系统(CRM,下面统一用CRM代替)业务。首先你需要从全局分析CRM这块业务。

流程

CRM按照流程划分主要是获客-跟进-转化-签约-服务。按照领域进行抽象,可以分为售前,售中,售后。

服务

按照服务来划分,主要有投放服务、营销活动服务、呼叫服务、客户管理、日程管理、消息提醒、订单、合同、工单、销售效果分析。

功能

每个服务有更细粒度的功能。比如 投放服务:提供多渠道投放方式,百度,头条,微信等,投放分析。营销活动服务:营销落地页,开学季优惠活动,抽奖活动,优惠券活动。客户管理服务:客户档案,销售机会,销售看板。其他不再赘述。

人员

目前业务还是在初级阶段,负责这块的开发总共有6人,3个后端,2个前端,一个测试。

服务划分

基于以上考虑,服务划分为以下6个服务。

考虑到只需要一个pc工作台,市场人员、销售人员都用同一个工作台,应用系统这一层不需要。然后核心领域分为售前(市场人员)、售中(客服,销售)、售后(客服,财务)三个服务,每个开发负责一个服务。同时抽象出3个通用基础能力服务,每个开发负责一个。

1. 公司内部的账号系统 提供统一的账号管理能力,组织架构能力,权限管理能力。

2. 服务系统 通用的一些工具能力,比如隐私号、坐席呼叫、待办、消息提醒等能力。这些并不属于同一个领域,但是考虑到当前阶段,服务不宜拆分的过细。所以都放在同一个服务中。

3.数据分析 各个模块都需要数据分析,所以抽象出一个单独能力,统一处理。

演进

经过半年的发展,业务蒸蒸日上,需求越来越多。人员也在逐步扩展。后端人员扩大到了10人。原有的微服务架构逐渐不太适应。因此需要进行适当调整。经过分析,当前业务重点是

  1. 售前 两个核心指标一个是有效线索量,一个是单个线索成本

2. 售中 售中决定了线索能否转化为订单。目前对应的运营人员最多,客服100人,销售300人。提高运营人员效率是重点。

3. 售后 工单响应时长

售前这块基本系统功能已搭建完毕,通用的营销工具已经有了,市场人员可以进行组件组合,搭建不同营销页,然后根据投放效果进行适当调整。服务比较稳定了,所以这块有2个开发即可。主要负责营销工具开发。

售后相对也比较稳定了,2个开发。售中是重点,需求迭代也比较多,6个开发。之前只有一个微服务,开发效率比较低了。需要进行适当拆分。增加3个服务

1.应用系统增加一个移动工作台 因为销售人员经常在外部,所以需要移动端,而移动端通常是销售管理活动中的操作类功能。pc端则是查看分析。

2.核心领域层增加一个售中服务域

售中拆成2个服务,一个是线索域,主要围绕着公海、私海,线索推荐。另外一个是服务域,是面向销售日常活动的。如活动,拜访,小记,客户标签等。

3 .基础能力层增加一个流程引擎服务 各个角色人员需要经常发起审批,流程编排,所以新构建一个基础能力,流程引擎。能够服务于整个crm业务,同时如果公司其他业务需要,可以提供给其他业务使用。

参考文章

http://www.woshipm.com/pd/3983693.html

[1] 可落地的DDD(4)-如何利用DDD进行微服务的划分(2): https://blog.csdn.net/FS1360472174/article/details/90738148?spm=1001.2014.3001.5501

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-03-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 方丈的寺院 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
有赞零售财务中台架构设计与实践
传统模式下,企业的经营活动会产生大量的业务数据。财务人员需要根据业务数据,进行会计核算,并输出财务数据。通过这些财务数据,企业可以进行财务管理、财务分析、业务决策。但会计核算的工作量非常庞大,大多工作也比较基础、简单,可以被计算机替代。企业每年在基础的核算工作上会花费大量的人力资源,在更重要的财务管理、财务分析、业务决策上无暇顾及。为了解决此类问题,财务中台应运而生。
数据和云
2019/09/03
2.5K0
有赞零售财务中台架构设计与实践
可落地的DDD(4)-如何利用DDD进行微服务的划分(2)
在前面一篇介绍了如何通过DDD的思想,来调整单体服务内的工程结构,为微服务的拆分做准备。同时介绍了我们在进行微服务拆分的时候踩过的一些坑。 这篇介绍下我们最终的方案,不一定对,欢迎留言讨论。
方丈的寺院
2019/08/05
7560
可落地的DDD(4)-如何利用DDD进行微服务的划分(2)
公有云上基于微服务架构 SAAS 产品研发实践
公有云SAAS产品不同于传统的软件包产品,我们不仅需要负责软件的研发,同时需要负责产品的运维,面对众多用户,需要保障产品7X24不间断运行;客户业务是不断变化的,产品需要在持续运行过程中进行持续升级,以满足客户业务不断变化的需要。相对传统软件包产品,公有云产品的升级更加复杂,风险也更高,类似于在运动的汽车上更换轮胎。 设计的本质就是让产品变化更容易。微服务架构是互联网时代以适应快速的业务变化而产生的一种架构模式,提供了让变化更容易的基础。自2014年起开始得到业界的广泛关注,近几年,随着DevOps技术的
DevOps时代
2018/06/22
2.8K0
有赞零售中台建设方法的探索与实践
上图是有赞零售SaaS业务整体业务架构概览,大体上可以分为前台业务、中台业务、后台业务。
有赞coder
2020/08/24
1.1K0
有赞零售中台建设方法的探索与实践
为什么我们叫进行微服务拆分?
微服务在最近几年大行其道,很多公司的研发人员都在考虑微服务架构,同时,随着 Docker 容器技术和自动化运维等相关技术发展,微服务变得更容易管理,这给了微服务架构良好的发展机会。
码农架构
2021/06/13
1.6K0
为什么我们叫进行微服务拆分?
你了解to B 和 to C 数据开发的差异吗?
通常来说,大数据开发的整体架构基本一样,都涉及到底层的数据平台架构、数据中间件的选择、数仓模型的建立、可视化展现,其中数据层面主要是数据的采集(埋点、业务数据)、数据处理(离线、实时)、数据治理(数据分层、数据字典、指标体系、数据监控、数据安全、数据数仓)、数据展现(BI、可视化)。
用户8949263
2022/04/08
5460
你了解to B 和 to C 数据开发的差异吗?
下单后,微服务里都经历了什么?
面试的时候,面试官问:用户在电商网站中购买成功了,那么它在微服务中经历了什么?你该如何作答?
kubernetes中文社区
2019/07/19
1.5K0
下单后,微服务里都经历了什么?
从单体架构到微服务架构
我在Martin Fowler网站上读到一篇名为How to break a Monolith into Microservices的微服务文章,作者为ThoughtWorks的咨询师Zhamak Dehghani,介绍了如何从单体架构演进到微服务架构。
张逸
2019/08/21
7170
电商系统中微服务体系中的分层设计和领域划分
看标题感觉这个东西很理论,比起“高并发、多线程”、“分布式CAP、一致性、Paxos”、“高可用SLA”等具体的干货技术点,软件体系知识显得很“湿”,似乎人人都有自己的认识,但又很少有人能说完整,有一点可以确定的是,如果你未来需要独立设计一个复杂的系统中台,并使之未来能快速应对各种需求变化的话,科学合理的领域划分和边界界定需要我们“处女座级”的坚持下去,这对防止人力失控、减少项目烂尾很有帮助。合理的界定了边界后,即便某个微服务很糟糕,也可以就输入输出以很少的人力投入进行重构,相反的就是牵一发而动全身,加上业务需求频繁而来,很容易烂尾或是达不到如期的效果。
架构之家
2022/07/12
5490
电商系统中微服务体系中的分层设计和领域划分
阿里一面:微服务拆分需要考虑什么因素?
陈某的《Spring Cloud Alibaba实战项目》 视频教程已经录完了,涉及到Alibaba的各种中间件、OAuth2微服务认证鉴权、全链路灰度发布、分布式事务实战,戳这里--->Spring Cloud Alibaba 实战 视频专栏 开放订阅~
码猿技术专栏
2023/05/01
2440
阿里一面:微服务拆分需要考虑什么因素?
微服务架构拆分的 7 大黄金法则
你是否还在为微服务架构的拆分而苦恼?本文揭秘 7 大拆分原则,助你轻松驾驭微服务架构!
码哥字节
2024/11/23
4600
微服务架构拆分的 7 大黄金法则
电商微服务体系中分层设计和领域的划分
比起“高并发、多线程”、“分布式CAP、一致性、Paxos”、“高可用SLA”等具体的干货技术点,软件体系知识显得很“湿”,似乎人人都有自己的认识,但又很少有人能说完整。
用户4283147
2022/10/27
4820
电商微服务体系中分层设计和领域的划分
微服务与领域驱动设计,架构实践总结
如果软件系统存在持续的迭代周期,那么其中业务、技术、架构的复杂性都会直线拉升,其相应的开发难度也会提高,可以用一句话总结其根本原因:唯一不变的就是变化;
知了一笑
2022/06/14
4870
微服务与领域驱动设计,架构实践总结
电商供应链系统的DDD架构设计实战
任何一套业务架构都可能存在一定的历史问题,这是业务在不同阶段做技术选型必然出现的状况,如何用新的、合适的架构思想做恰到好处地改造,则是架构师们的必备能力。
架构之家
2022/07/12
1.4K0
电商供应链系统的DDD架构设计实战
人人都在跟风学微服务,却不知道DDD领域驱动设计?
最先介绍领域驱动设计(domain-driven design)的是在程序员 Eric Evans 2004年出版的《领域驱动设计:复杂软件核心复杂应对之道》书籍中,领域驱动设计是领域概念的扩展和应用,并且将它应用在软件开发中。它的目标是将软件相关部分连接到不断发展的模型中,以此更容易创建复杂的应用。
Lvshen
2022/05/05
4540
人人都在跟风学微服务,却不知道DDD领域驱动设计?
腾讯张晔:全新CRM产品体系“三大智能”解决企业发展三大挑战
12月1日,2022腾讯全球数字生态大会·腾讯企点分论坛上,腾讯发布了新一代数智双驱一体化CRM产品,并升级其与埃森哲联合打造的“增长双涡轮模型”方法论。腾讯云副总裁、腾讯企点负责人张晔表示,CRM从销售中心向客户中心演进,全渠道连接、全数据智能、全链路协同的CRM产品才能助力企业面对存量竞争时代的挑战。 随着国内越来越多的行业从增量时代进入存量时代,企业的增长范式也在经历深刻转向。张晔指出,进入存量市场,企业的竞争从产品功能层面转向服务层面、体验层面。这一趋势,对企业的能力提出两个新挑战:一方面,如何快速
腾讯企点
2022/12/01
1.2K0
腾讯张晔:全新CRM产品体系“三大智能”解决企业发展三大挑战
Keep电商供应链系统的DDD实战复盘
任何一套业务架构都可能存在一定的历史问题,这是业务在不同阶段做技术选型必然出现的状况,如何用新的、合适的架构思想做恰到好处地改造,则是架构师们的必备能力。本文是 Keep 利用 DDD 改造电商供应链系统的一次精彩实战,InfoQ 架构头条独家分享,以供大家参考交流。文章作者:武清明,目前他在 Keep 负责商业化业务中台研发和规划工作,擅长电商业务系统架构设计,采用 DDD 合理简单化设计复杂电商系统,提升系统功能模块的复用性和扩展性。
深度学习与Python
2021/10/13
6290
微服务架构详谈
微服务现在辣么火,业界流行的对比的却都是所谓的Monolithic单体应用,而大量的系统在十几年前都是已经是分布式系统了,那么微服务作为新的理念和原来的分布式系统,或者说SOA(面向服务架构)是什么区别呢?
慕容千语
2019/06/06
7380
微服务架构详谈
微服务架构究竟应该怎么进行服务拆分?
今天这篇,我们主要分享应该如何定义一个微服务架构,怎么定义一个服务,微服务架构究竟又应该怎么进行服务拆分。
brookwang
2022/06/24
9580
微服务架构究竟应该怎么进行服务拆分?
智能客服,到底“智能”在哪里?
观察粒子 腾讯云副总裁 腾讯企点总经理 张晔 技术对营销的影响不言而喻,AdTech、MarTech、数据中台等营销产品/工具层出不穷,与此同时,营销与运营、服务的边界越来越模糊,企业对“营销”的期望已经从单纯的引流获客发展至客户全生命周期的运营。 腾讯云是腾讯倾力打造的云计算品牌,提供全球领先的云计算、大数据、人工智能等技术产品与服务;旗下腾讯企点以IM、音视频、云呼叫中心等为基础,整合腾讯微信QQ等社交生态资源和大数据、AI能力,帮助企业数字化经营管理,提高企业运行效率;以“企点客服”为代表的智能
腾讯企点
2020/06/10
4.6K0
推荐阅读
相关推荐
有赞零售财务中台架构设计与实践
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档