NVIDIA 初创加速计划,免费加速您的创业启动 了解详情
写点什么

架构设计实践五部曲(二):业务架构与产品架构设计实践

  • 2019-09-20
  • 本文字数:1980 字

    阅读完需:约 6 分钟

架构设计实践五部曲(二):业务架构与产品架构设计实践

系统架构的分解,先从业务域进行分解。狭义的业务域具有商业的概念,从这个概念来看,有的系统没有业务域,当如果宽泛一点来看,业务域就是问题域,问题域总是存在的。


业务域的分解,首先是从系统需求入手,在需求初期可能你就得到的只是一句比较模糊的需求描述,这些需求可能来自于老板、运营或者用户(比如下图的场景)。直接把这句话作为核心产品功能是不恰当的,合理的做法是先把这个产品的所有问题域列清楚。


列出问题域

问题域,是指自己的产品能够解决的所有问题的空间集合。从核心需求出发,将所有当前需要解决、未来可能需要解决的问题放入产品框架的范围,能够帮助你的产品架构拥有更高的可拓展性,在后续具备迭代和优化空间。


这里以我做过的一个风控系统需求为例,问题域集合如下:



详细的操作步骤:


  1. 找到收到的需求中,跟产品形态、产品目标相关的语句,去列出“xx 的流程会是什么样”、“xx 该如何达成”之类的问题,直到如果这些问题解决,能够实现核心需求的方向和业务目标。

  2. 去逐次寻找这些问题需求被解决的过程中,是否有其他要先解决掉的问题、或者其他跟业务相关的问题能够被解决。

  3. 按照层级去罗列所有的问题,并附上自己的初步回答,从而形成一个初步的、自己的产品能够解决的“问题域”。

确定产品方向

在经过问题域的罗列后,能够得到一个模糊的产品方向和功能范围。问题域的环节非常发散,这一步需要回归基础,把模糊的需求补充、拓展和翻译成一个能够在商业模式和用户体验能够形成闭环的产品需求。


在确定产品方向这个环节的详细操作步骤:


  1. 产品用户:需要明确产品定位的用户,解决核心用户的核心需求。

  2. 核心目标:思考清楚自己产品的核心目标是什么。如果以一个 KPI 指标衡量产品的价值,那这个 KPI 应该是什么。

  3. 依赖系统:自己的系统需要与哪些外部系统存在交互和关联关系,我们的系统在这个大的生态下,是什么定位。


以风控系统需求为例,产品方向的描述如下:


绘制业务流程

业务流程是业务架构中比较常见的图,这一步需要根据产品需求和问题域,按照业务域的流程进行绘制。


业务功能矩阵

通过对业务流程进行分析,根据功能职责,进行垂直分解,识别出业务功能和业务服务,将他们归类到相应的流程节点中去。将业务流程和业务功能点组合成一张业务功能矩阵。这张矩阵图是业务架构中为后续的数据架构、产品架构、技术架构作为重要的输入。


功能架构分层

产品框架脱胎于业务流程,但相比业务流程,更加注重产品功能的枚举、功能模块之间的分界。以业务架构的业务功能矩阵图作为输入,将流程图转换成按节点进行分层,节点的功能点存放在同一层中。



在此基础上将明显是同一个产品范围、同一组产品功能的模块放在同一层级,得到一个基础的产品框架。


明确功能边界

一个具备前后台关系的产品架构图至少分三层:用户感知层(在何种场景下通过何种方式触达用户)、功能模块层(通过哪些功能模块实现产品的核心功能、和哪些外部平台功能有信息交互)、数据层(产品的数据从哪里来、产品的数据沉淀到哪里去)。


在上一步进行简单分层后,我们已经得到一个初步框架,但是难免会有分层不明确的问题。此时需要按照两种维度来处理架构图的层级:不同信息层级的边界、同一层级内模块和模块的边界。

处理不同信息层级的边界

架构图的层级表达其实是信息之间的流转关系,不同信息层级之间一定是有逻辑关系的。其中用户感知层和数据层通常化简为以(用户端的功能表达往往逻辑简单、数据来源问题则不是自己产品的核心功能),而功能模块则需要按照自己产品的逻辑去将功能模块层内的主要模块变成新的层级。


处理同一层级内子模块的边界

各层次之间虽有相关,但同一层次内的子模块之间一定是相互独立、界限分明的。将解决不同问题的功能拆分成两个子模块,做到一个问题只在同一层解决,避免牵一发而动全身的情况出现。


明确系统间边界

产品边界对于开发设计系统架构、业务间的合作模式都非常重要。在架构图中用不同颜色标识清楚,各个部分所属系统的边界。通常属于自己团队的部分用亮色标识。像外部系统,如数据层的用暗色标识。


加入信息流

产品架构图在表达产品的核心功能外,也应该体现信息流动的路径。当前层级数据的交互形成产品功能,产品功能又产生新的数据,从而推动下一层级的功能运转起来。


如果当前产品的主要使用角色只有一个,则只需要用箭头表明模块间信息流动的方式即可。如果当前产品涉及的角色比较多,则需要用不用颜色的线条将他们和各个模块之间的信息交互关系表示出来。



最终一种好的产品架构图,应该具备以下特点:


  • 清晰的模块功能边界

  • 功能经过抽象,做到标准化、互相独立

  • 上下游产品功能边界清晰,架构分层明确合理,具备迭代优化的能力

延展阅读

架构设计实践五部曲(一):架构与架构图

作者介绍

胡斌,菜鸟网络技术专家,目前负责菜鸟风控系统的建设。曾在淘宝技术部先后负责卖家平台、商家运营等领域。在大规模分布式应用、大数据、架构领域有多年的开发和管理经验。


2019-09-20 10:1332507

评论 11 条评论

发布
用户头像
值得收藏
2023-01-30 21:32 · 广东
回复
用户头像
感谢分享
2021-03-30 18:00
回复
用户头像
获益匪浅,感谢分享!
2020-12-01 23:27
回复
用户头像
TOGAF有完整的架构体系和方法论,业务架构、IT架构(应用架构、数据架构、技术架构)
2020-03-09 13:34
回复
你想表达什么意思?
2020-05-12 11:10
回复
说这么多倒是通俗的给大家讲讲你对TOGAF的理解与实践
2022-08-09 11:09 · 广东
回复
用户头像
非常受益,要是关于这部分的话题能有一个交流社群就更好了
2020-02-27 09:53
回复
用户头像
正好接到一个优化计费和出账的想用这个试一下,2010年的逻辑后面添填补补的,优化还不如重构,太难了 哈哈哈
2019-10-15 11:33
回复
用户头像
写的非常好!
2019-10-10 16:44
回复
用户头像
流程完成,层次分明,写的好
2019-09-29 10:45
回复
用户头像
产品架构图很清晰啊,如果配合详细的说明,要在什么地方体现呢?
2019-09-20 11:51
回复
没有更多了
发现更多内容

初识分布式:MIT 6.284系列(一)

Kerwin

分布式 MIT 28天写作

智能膜切机,解决手机贴膜行业难题

Geek_116789

Newbe.Claptrap 框架如何实现多级生命周期控制?

newbe36524

架构 微服务 .net core ASP.NET Core

英特尔®AI计算盒参考设计发布 加速智能边缘崛起

最新动态

微软苏州集体抵制来自阿里、华为的跳槽者:请停止你的“奋斗逼”行为!网友:看到 955 不加班的公司名单,我酸了

程序员生活志

程序员 加班 996

计算机网络基础(十一)---网络层-OSPF协议

书旅

计算机网络 网络 协议栈 OSPF

实用!一键生成数据库文档,堪称数据库界的Swagger

程序员小富

Java MySQL

数据人必须知道的SQL概念(A—Z)

大唐小生

sql 数据 职场成长

财务分析与主要的模型

松子(李博源)

秒杀系统问题与方案设计

superman

秒杀 架构总结

ARTS打卡 第10周

引花眠

ARTS 打卡计划

架构师训练营第八章-作业1

A Matt

系统设计系列之如何设计一个短链服务

看山

架构 面试 分布式 架构设计 短链服务

老哥,您看我这篇Java集合,还有机会评优吗?

cxuan

Java 后端

授人以渔:stm32资料查询技巧

华为云开发者联盟

架构 armv8 芯片 华为云 二进制

基于 Golang的侵入式 Opentracing实现全链路追踪 ----实践篇

是老郭啊

技术管理者带团队的几个实用技巧

Phoenix

团队管理 企业文化 团队 价值观

飞天茅台超卖事故:Redis分布式锁请慎用!

程序员生活志

redis 分布式

JVM系列之:JIT中的Virtual Call

程序那些事

Java JVM JIT

《深度工作》学习笔记(3)

石云升

学习 深度工作 工作哲学

云小课 | IPv4枯了,IPv6来了

华为云开发者联盟

IP 公有云 虚拟私有云 华为云 虚拟化

第九周

hdhdh

Android |《看完不忘系列》之okhttp

哈利迪

android

你问我答:微服务治理应该如何去做?

BoCloud博云

容器 微服务 PaaS API 博云

在人工智能时代追逐的“后浪”

华为云开发者联盟

程序员 AI 开发者 技术社区 华为云

Vue中使用装饰器,我是认真的

前端有的玩

Java Vue 装饰器

程序的机器级表示-算术与逻辑运算

引花眠

计算机基础

谈一谈webpack打包

林浩

Java 大前端 webpack

手写一个重入锁

诸葛小猿

synchronized CAS 重入锁 compareAndSwap ReentrantLock

<<前端进阶篇>> PDF 出炉了 — 「阿宝哥」,精心准备的 6 万多字 170 页的前端进阶资料

阿宝哥

大前端

什么?不写代码也能做功能开发! -RUOYI 教程二

Java_若依框架教程

Java 无代码开发 若依

架构设计实践五部曲(二):业务架构与产品架构设计实践_架构_胡斌_InfoQ精选文章