《架构设计实践》读书笔记
2022-04-26 10:18:39 2 举报
AI智能生成
架构设计实践
作者其他创作
大纲/内容
需求到落地需要的10+套图和工件
What
画图-一眼看出架构师的思路和广度
Why
结合点播平台媒资系统,实战、实战、在实战
How
本章概述
利用当今热点技术(分布式、NoSQL、对象存储等)
建立一个数字化、网络化、自动化、高效率的节目制作、采、编、播、存、管、发布一体化系统
打造一个全方位的音视频资料服务的业务平台(业界成为媒平台)
CEO:业务战略
收录系统、转码系统、迁移系统、检索系统等相关渠道的有效整合
解决多媒体数据资料的数字化存储、编目管理、检索查询、素材转码、资料发布等问题
采用新的业务流取代已有工作模式和操作模式,从而满足各种新的业务需要
CTO:系统目标
IT现状
需求架构视图
外部内容供应商
媒资管理系统
系统上下文
用例图
Excel图
用例模型
功能需求矩阵
非功能需求矩阵
数据架构草图
数据架构图
时序图
实体关系图
数据逻辑架构图
安装单元
数据单元
执行单元
展现单元
组件
U1用户界面
C1界面
D1媒资操作记录
E1运行管理
C2运行管理
E2入库接口
C3入库接口
E3下载接口
C4下载接口
D2存储操作记录
E4存储管理
C5存储管理
E5编目
C6编目
I1搜索引擎安装
E6检索
C7检索
D4媒资库
E7入库
C8入库
E8下载
C9下载
E9下载
C10转码
E10水印
C11水印
E11模糊化
C12模糊化
E12抽样
C13抽样
D5工作流规则
E12工作流
C14工作流
I2容器编排安装
C15容器
I3消息队列安装
C16消息队列
D3索引
E14索引
C17索引
D6对象存储
C18在线存储
D7归档存储
C19离线存储
部署单元
运行部署单元
实战视频项目
乐高大楼
运行架构视图
架构决策记录
风险分析评估
RAID
架构验证评估
服务模型
架构设计文档流程
架构草图、模块关系图、模块交互图
题眼
结合实际案例,现场画图讲述功能架构设计过程
加分项
题目1:画一下你设计过系统的模块架构图?
ALOM、LOM、POM
能级和实际案例,现场画图讲述运行性架构设计过程
题目2:画一下你设计过的系统的架构部署图?
决策派、JAD、ARB、RAID、架构决策工件
能结合实际案例,描绘决策过程,现场写出决策工件
题目3:你如何组织和记录架构决策的?
分享一下你对架构师思维的领悟?再次重新设计你之前选择的项目?和之前两个版本有什么不同之处?
扩展思考
架构图绘制
企业能力、业务架构、信息架构、技术架构、策略差距分析、架构转型
企业的整体架构相对于系统、项目、领域来说更加庞大复杂;打通晋升为企业级架构师之路
方法论分析;通信业、快消业、银行业、航空业案例实战;手把手完成架构设计
企业能力
业务架构
信息架构
技术架构
策略差距
架构转型
架构监管、架构办、架构评审委员会等
机遇、挑战
企业架构方法论
营销:发展中国家+外交+低价->全球化
创新:中英法日俄美,18研发,36创新
本土化:本土雇佣、本土产品、本土纳税
华为全球化企业策略
核心业务:高增长、高利润、高回报
优势:创新制造、零售合作伙伴
重心:创新和管理
宝洁多品牌企业策略
价值观和策略
能力
资源
实战:华为全球化企业策略
SCN策略能力网络
企业的业务和组织是如何分组的?
各企业能力从战略到执行该如何开展?
该专注于哪些优势技术和业务?
业务架构关注点
核心目标:业务管理
核心内部分类:财务
核心业务组:网点
客户关系管理:客户
风险控制:风险
实战:银行业务模型
业务架构-CBM基于模块的业务模型
映射业务架构需求
重新梳理优先级
从CBM业务架构向AOD架构草图风格转换
信息架构关注点
实战:银行信息架构模型
信息架构-信息架构优先级分析
信息架构的技术实现
非功能要求
应用和对外对接
内部数据落地
底层基础架构支撑
三角形三元素
技术架构关注点
实战:银行技术架构三角模型
技术架构-技术架构三角模型
分析维度全面、有针对性
现状和目标对比
找出追踪发力点
策略差距关注点
实战:宝洁品牌策略差距分析雷达模型
策略差距分析-架构雷达模型
延续雷达分析的思路
确定转型路径
制定时间计划
架构转型关注点
实战:宝洁品牌架构转型箭头分析模型
架构转型-架构转型箭头分析
链家航空、互联网化业务,冲击航空市场
用户追求低价格、高附加服务,品牌粘性服务
企业开始进行收购合并,增加市场覆盖,降低运维成本
需求
整合渠道
降低油价影响
中高低市场
定位用户偏好
IT成本控制
廉价航空竞争
主要目标
架构方法论
策略能力模型
大型案例:大型航空公司转型实战
SCN策略能力网络,CBM模块业务模型
能结合实际案例,分享从公司战略到IT能力,从信息架构到技术架构的具体实现过程
题目1:你的架构设计如何体现公司的整体战略的?
CBM模块业务模型、信息架构优先级分析、策略差距分析、架构转型规划
能结合实际案例,如何结合战略和业务需求,决定IT系统和架构转型的优先级和投入
题目2:你在架构设计中如何设定系统和项目之间的优先级?
策略差距分析,架构转型规划
能结合吧实际案例,对比公司策略和目标,分析当前阶段的差距,制定后续执行计划、优先级和项目安排,并分享实际执行结果
题目3:你有没有主导过公司的重大架构转型?整体思路是什么?
梳理贵公司整体架构和严禁计划?
扩展题目
企业架构框架设计
在理解架构设计原则、模式、维度的基础上,更进一步
从架构设计角度,真正架起需求到落地的桥梁
实战架构设计步骤,手把手打通任督二脉
为后续架构设计评估、单元化、网络化架构延展做好铺垫
架构设计目标
清晰架构设计的输入输出要素
围绕架构立方体,探究架构设计方法论
深入理解组件模型,实现模块的定义、细化和映射
手把手实战10大架构设计图
深入理解运行模型,实现单元分离和架构转换
企业架构入门,领悟SCN、CBM模型
结合实际案例,讲解架构师核心工作制作流程
案例实战和面试分享,指导架构大师之路
打造匠心
确认架构设计的输入、输出和目标、方法
架构设计要素,贯穿整个架构设计过程
理论分析、面试实战
桥梁设计设计大师,为家乡设计桥的问题
房屋设计问题,艺术家和匠人区分
匠人又要有自己想法,又要有广泛的可读性
目标:Do the right thing right
x的功能、运行
y的应用、技术
z的逻辑、物理
架构立方体
架构设计方法
比如作曲家输出钢琴曲手稿
设计文档化、图片化、代码化、系统化
可以落地的架构和系统
架构设计输出
架构设计如何规划?
架构设计规划
案例:放音乐需要音响,市面没有满足需求的就自己做个,自己做一个音响就把各个模块进行拆分,归类实施
Right thing:不行就继续分
Right:适可而止、自然拼接
分而治之
这种方式类似蛇咬尾巴的场景
一个产品的结束就是另一个产品的开始
迭代式设计
架构设计模式
Who人:店长、店员、保姆,Which是动物
Who、Which
给猫喂食
给猫洗澡
逗猫
放置猫粮
洗澡水
狗叫、逗猫棒
不要关心如何洗澡
不要关心如何放粮
不要把关系如何逗猫
不要关心实现细节,适可而止
WH分析法-宠物店
功能性需求
需要解决的目标
怎么安全、怎么快、怎么稳定、怎么方便怎么牛
支持10wanQPS,1万QPS,延时<1s
运行时质量要求
1分钟内可以扩展到10000节点
准备时质量要求
通常结合功能需求的What来描述
“怎么”分析法
质量
做到什么程度
设计的范围,是大桥还是小沟
范围
时间
青铜
业务满足需求
业务
技术实现功能
技术
中国银监、银行、政监等
欧洲GDPI个人敏感信息管理条例,欧洲用户满足数据
美国PCISS法律法律
法律法规
法规
王者
三角形分析法
限制
实现的自由度
资产和技术
现有的手段
架构设计输入
关联线甘特图
流形燃尽图
架构规划
10张图来实现
研发设计
环形设计1、写一个失败的测试,2、让测试通过,3、重构代码,这三个步骤不断的循环
测试驱动设计TDD
测试方案
服务器、网络、机房、云平台
物理架构
容灾、多活、单元化、CDN缓存
非功能性实现
应用、数据、网络、CI/CD
发布流程
架构师值DevOps了解部署能力
部署方案
RFP招标需求
POC原型验证案例
招标和产品决策依据
采购和外包
采购目标
架起需求到落地的桥梁,分而治之、迭代、架构立方体
能结合实际案例,讲透彻需求的理解和获取、立方转换过程(应用、技术;功能、运行;逻辑、物理)
题目1:你在架构设计时的整体思路和步骤?
架构输入,功能需求、质量、限制、资产和技术
能结合实际案例,将功能需求的WH分析法,质量的“怎么”分析法、限制三角形分析法讲透彻
题目2:你在架构设计中童超考虑哪些因素
架构的过程、输出、组成派/决策派、时间管理
能结合架构设计输出,分析规划、设计、测试、部署、采购决策的比重,体现架构师广度和深度
题目3:你在架构设计中如何分配工作时间
分享一个你设计过的复杂的项目?如何确认需求,如何进行架构设计和实现的?后续可以一次为例尝试走完完整的设计过程
架构设计要素
需求分析、架构立方体、组件模型、运行模型、资产复用、架构验证、设计误区
这才是架构师的真正一技之长
理论分析、流程阐述、工具实战、面试分享
架构设计输入的功能性需求、限制、质量
JAD联合应用设计
需求贯穿系统生命周期,可以想一下架构V型图
需求分析
实战:系统上下文
实战:用例模型
实战:质量和限制
架构设计实战
OminiGraffle(MAC)/Viso(Win)
Gliffy/ProcessOn
RSA(UML)
PPT/word
手绘
工具
需求分析实战
观点:View
视角:ViewPoint
盲人摸象-都有道理
需求类角度
模型类视角
这么多观点,该如何理解?
Who、How、What
功能
When、Where
运行
案例:商品信息CRUD(功能)、单元化数据分布(说白了就是分布式部署)(运行)
x轴的功能、运行
Java、Python应用代码实现的功能
应用
业务支撑的基础架构(中间件、数据库、AAA等)
案例:商品中心(应用)、商品库(技术)
y轴的应用、技术
技术定型、产品未定型
逻辑
产品定型
物理
案例:OpenID身份认证系统(逻辑)、腾讯认证平台(物理)
z轴的逻辑、物理
商品中心/用户中心
NoQSL/文档库
CRUD
分布式/最终一致性
逻辑视角
Spring Boot+mongoDB
阿里云ASK+云数据库MongoDB版
多视角模型:数据服务
功能性模型
非功能性需求
运行性模型
大部分架构设计都是这个思路,如果有经验架构师可以考虑合并
需求驱动
案例说明
左手:模块独立性
右手:内聚性
模块内聚应该使用-左手:模块独立性
模块内聚:左手?右手?
右手:耦合性
模块耦合应该使用-左手:模块独立性
模块耦合:左手?右手?
左手:架构设计时间成本
右手:粒度
模块划分力度应该使用-左手:架构设计时间成本,首先子域或者系统就可以,如果需要再细一些可以到微服务
模块划分力度:左手?右手?
模块定义
垂直分层AOD
横向分层AOD
整体架构草图AOD
输入:用例模型
备注:不是所有系统都需要鲁棒图的,只有系统走不下去的时候才需要
中间过程:鲁棒图、实体关系ER图
输出:时序图、模块交互图(模块的交互、行为的先后)
模块细化思路
模块关系图
Build
Buy
到底是Buy还是Build
模块映射思路
模块映射
系统监控、容量规划、可用性、性能、安全性
组织架构、服务治理
采购与外包、软件包和产品选择
运行关注点
分而治之的最高境界
展现单元
执行单元
数据单元
安装单元
部署单元拆分
案例实战:部署单元拆分
单元分解
准备好乐高积木(DU部署单元)
摆放到指定位置(地理位置、节点位置)
更换视角,调整积木组合方式(应用、技术、逻辑、物理)
定义场景和边界
拜访节点和积木
将节点连接起来
应用逻辑运行图
实战案例
第一步
非功能性增强(质量、限制)
底层支撑平台(中间件等)
运维和管理工具
应用+逻辑运行图
第二步
确定软硬件产品选型
确认软硬件规格和数量
关注节点和网络
物理运行图
第三步
案例说明:架构思想
运行性模型的思虑
运行模型架构转换
运行模型
策略
规定
原则
模板
风格
饼干模具
案例说明:架构设计模式
模式
架构框架
框架
方法资产
库
源码
软件
IDE
CICD
参考架构
架构积木
架构
工件资产
用户交互
管理交互
一定要先找找行业架构有没有现有的类似架构
项目加速
闭坑指南
减少意见冲突
资产的价值
云平台参考架构
架构资产复用
验证:Doing the right thing right
验证范围
验证做的是否正确
推荐使用
JAD联合架构设计
会增加两个部门之间的交互与摩擦
ARB架构评审会
单元测试、集成测试、系统测试、用户验收测试
验证与评估过程
已知风险是否缓解或规避
发现新风险
风险:Risk
前提假设是否正确
引入新的假设条件
假设:Assumption
影响项目进展的问题
影响产品验收的问题
问题:Issue
业务和应用依赖
IT技术依赖
依赖:Dependency
架构验证工件-RAID
架构验证
架构设计核心方法论
也是用例图
鲁棒图
组件交互图/时序图
类跟方法
类图
误区一:只关注功能性需求,忽略非功能需求
误区二:微观设计,架构设计文档信息过度
图书管理系统
物理运行部署图
误区三:忽略关注点分离,x/y/z轴观点换乱,视角混杂,物理运行图里面有应用架构东西
游戏系统
九连环解环图
误区四:冷门技术、过度设计、不适合未来需求变更和架构迭代
九连环
基于Zookeeper的架构集成Hadoop、Solr、Kafka、Mesos等
误区五:专注擅长的技术栈,忽略其他潜在的选项
大数据架构图
来找茬
架构设计误区
需求分析、系统上下文、用例图
能结合实际案例,现场画图讲述设需求分析过程
题目1:你在架构设计中如何通过用例模型分析项目需求?
多视角模型、架构立方体转换、功能性/运行性模型
能结合实际案例,讲述架构设计立方体过程,并现场画出主要工件,题眼设计深度
题目2:你在架构设计中有哪些主要的工件?他们是如何关联的
架构验证、架构输入和输出
能结合实际案例,讲述架构验证评估过程和输出
题目3:你如何组织一个架构验证,来确保设计质量的?
分享一下采用架构师思维方式重新设计的复杂项目架构图
架构设计防范论和思维
架构设计实践
0 条评论
下一页