产品架构及其他架构学习
what:
架构就是对结构和组件的描述,可以让大家快速理解整个体系,指导一系列的细节设计。针对不同的视角维度,我们想要表达的结构和组件是不同的,因此存在不同的架构描述。如下图:
常见的一些架构维度:
方案架构,描述我们向客户提供的东西是什么样子的,怎么解决客户对应的问题;
业务架构,描述我们要做一些什么样的事情,对应的业务流程和模式是怎样的;
应用架构,描述我们提供哪些功能以及如何去实现这些功能,可拆解为产品架构和技术架构;
产品架构,描述我们都实现了什么功能结构,它们之间的关系是怎样的;
信息架构,描述我们产品的导航、功能是怎样组织的,通常用思维导图标识;
技术架构,描述我们的技术实现方案,例如微服务间的关系,中间件的使用,组件的设计等;
数据架构,描述我们的数据逻辑模型、物理模型等;
部署架构,描述我们的各种服务如何在环境中部署的;
产品架构:
目标是:将可视化的具象产品功能,抽象成信息化、模块化、层次清晰的架构,并通过不同分层的交互关系、功能模块的组合、数据和信息的流转,来传递产品的业务流程、商业模式和设计思路。
作用:帮助自己梳理“自己的产品该往何处去、需求应该如何分期和落地、和其他产品的依赖&竞争关系是什么、未来的可拓展性在哪里”等问题的过程
检测好坏标准:
清晰的模块功能边界;功能经过抽象,做到标准化、互相独立;上下游产品功能边界清晰,架构分层明确合理;
具体实例:
how:
产品架构:
栗子:老板对你说“苹果发布会看了没?苹果这么重视对AR能力的支持,我们微信也要赶紧把AR功能做起来。这是个Allen(张小龙)很重视的项目,你回去好好设计一下,明天来跟我过方案。记住,要能够一炮打响,全民参与喔!”
列出问题域:
“问题域”是指自己的产品能够解决的所有问题的空间集合。
从核心需求出发,将所有当前需要解决、未来可能要解决的问题放入产品框架的范围。
方法:1、找到的需求中,跟产品形态、产品目标相关的词句,去列出“XX的流程会是什么样”、“XX该怎么达成”之类的问题。直到如果这些问题解决,能够实现核心需求。
2、去逐次寻找这些问题被解决的依赖问题,并解决;
3、按照层级去罗列出所有的问题,并附上自己的初步回答;
确定产品方向:
问题域的罗列后,得到一个模糊的产品方向和功能范围。把这些问题域的答案抽象总结成一个确定的产品需求。
将问题域归纳成在商业模式和用户体验上能够形成闭环的产品需求。
核心需求确定:我的产品核心解决的是哪批用户、哪个用户需求?
产品目标:如果以一个数字指标衡量我的产品,它应该是什么?
用户场景:核心需求基本的产品形态、用户使用的路径是怎样的?
清晰的业务流程:
搭建基础框架:
基础的产品框架脱胎于业务流程。相比业务流程,更加注重产品功能的枚举、功能模块之间的分界。
步骤:
1、列出需要的页面&功能&模块等前后端逻辑。
2、将所有功能类似或者范围有包含的功能放一起,以模块化的形式构建图:
3、将明显是同一个产品范围、同一组产品功能的模块放在同一层级:
明确架构分层
产品架构图至少分为三层:用户感知层(在何种场景下通过何种方式触达用户)、功能模块层(通过哪些功能模块实现产品的核心功能、和哪些外部平台功能有信息交互)、数据层(产品的数据从哪里来、产品的数据沉淀到何处去)。
步骤:
1、不通层、同一层级内子模块的边界:
各层次之间虽然相关,但同一层次内的子模块之间一定是互相独立、界限分明的(常常对应着不同的开发团队和系统应用)。
2、明确产品间的边界:
用不同颜色标识清楚产品框架中,各个部分所属产品的边界。自己团队的部分用亮色表示
加入信息流转机制:
体现信息流动的路径。主要角色比较多,则需要用不同颜色的线条将他们和各个模块之间的信息交互关系外化出来。