Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
蔡学镛架构设计方法
Search
Zoom.Quiet
March 23, 2014
Design
2
580
蔡学镛架构设计方法
来自weibo 感谢总布道师...
Zoom.Quiet
March 23, 2014
Tweet
Share
More Decks by Zoom.Quiet
See All by Zoom.Quiet
PyCon2014China-Zhuhai-high performance
zoomquiet
0
130
PyCon2014China-Zhuhai-meta programming
zoomquiet
1
99
PyCon2014China-Zhuhai-bpm.py
zoomquiet
0
78
PyCon2014China-Zhuhai-luna kv db
zoomquiet
0
84
PyCon2014China-Zhuhai-seed studio
zoomquiet
0
60
PyCon2014China-Zhuhai-Docker Registry Build By Python
zoomquiet
0
75
PyCon2014China-Zhuhai-jeff
zoomquiet
0
56
PyCon2014China-Zhuhai-pythonic front-end
zoomquiet
0
84
DevFest2014-Zhuhai-Polymer
zoomquiet
0
360
Other Decks in Design
See All in Design
プロダクトデザイナー視点から見た チームでの意思決定の難しさと 重要ポイント3点
kei141
0
420
Карта процесса-опыта. Презентация метода
ashapiro
0
330
管理画面の全体UXは利用時品質モデルで考える
readymadegogo
2
2k
portfolio
amitnk
1
130
Карта реализации историй — убийца USM
ashapiro
0
210
デザイナー視点の体験設計とデザインレビューを事業部全員で体験するワークショップをしたお話
masayofff
3
210
Первая беседа о Карте реализации историй
ashapiro
0
290
Designship2024 Panel Discussion インハウスデザイナーは 何をデザインしているか、するべきか で使用したスライドを公開します。
kiyoshifuwa
0
2.1k
みんなでブラッシュアップするDesign Sprint_BASE BANKチームの場合
base
PRO
3
640
Lightning Talk: Beautiful Slides for Beginners
inesmontani
PRO
1
150
急成長中のWINTICKETにおける ちいさくはじめるライティング改善 / winticket-writing
cyberagentdevelopers
PRO
1
170
Money Forward UIの紹介 / Introducing Money Forward UI
taigakiyokawa
1
520
Featured
See All Featured
Build your cross-platform service in a week with App Engine
jlugia
229
18k
BBQ
matthewcrist
85
9.3k
Making Projects Easy
brettharned
115
5.9k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
44
6.8k
GraphQLの誤解/rethinking-graphql
sonatard
67
10k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
29
2.3k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
246
1.3M
Six Lessons from altMBA
skipperchong
27
3.5k
How to train your dragon (web standard)
notwaldorf
88
5.7k
Art, The Web, and Tiny UX
lynnandtonic
297
20k
A better future with KSS
kneath
238
17k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
6
410
Transcript
蔡学镛
产品创新需要技术⽀支撑 技术 创新产品 企业竞争⼒力 促 进 ⽀支 撑 唯有持续推出创新的产品, 才能维持企业竞争⼒力
滞后的技术,⽆无法⽀支撑产品 的创新 但…
1. 【产品重构】可增加既有产品的竞争⼒力 2. 【内部平台】可加快新产品推出速度 3. 【云平台】弹性灵活的运算能⼒力 4. 【数据平台】可充分发挥数据的价值 5. 【开放平台】可⿎鼓励与外部企业合作
6. 【创新孵化】孵化有业务创意的⼩小团队 产品 重构 业务 平台 数据 平台 开放 平台 创新 孵化 六阶段加强技术建设,以成为产品创新的后盾 … 云 平台 平台化
? 重构 重构前,系统 内部错综复杂, 难以修改 重构后,系统 内部模块化。 可以因应后续 业务需求
产品 重构 业务 平台 数据 平台 开放 平台 创新 孵化 云 平台 平台化
产品 重构 业务 平台 数据 平台 开放 平台 创新 孵化
云 平台 平台化 平台 产品 产品 数据库
平台 产品 产品 数据库 产品 重构 业务 平台 数据 平台
开放 平台 创新 孵化 云 平台 平台化
完 整 数 据 平 台 产品 重构 业务 平台
数据 平台 开放 平台 创新 孵化 云 平台 平台化 平台 产品 产品 数据库
产品 重构 业务 平台 数据 平台 开放 平台 创新 孵化
云 平台 平台化 完 整 数 据 平 台 平台 产品 产品 数据库 外部 产品
产品 重构 业务 平台 数据 平台 开放 平台 创新 孵化
云 平台 平台化 完 整 数 据 平 台 平台 孵化 产品 产品 数据库 外部 产品
⾸首席架构师的架构设计能⼒力 依靠的是 … 想要做到 … 产品 重构 业务 平台 数据
平台 开放 平台 创新 孵化 云 平台 平台化
代理 核⼼心 服务 应⽤用 界⾯面 ⽤用户 接出 接⼊入 数据 框架
七 层 架 构 、 用 色 规 范 、 依 赖 关 系 黑色是外部系统(包括人) 红橙黄绿蓝靛紫表示抽象程度 业 务 资 源 领 域 交 互 箭头表示依赖,都是由上往下 这条线就是开放平台 服务和代理允许水平依赖 服务和代理允许水平依赖
架构的流程 业务 技术 数据 ⺴⽹网络 ⼈人员 领域
(Step 1)業務建模 商业公司应该是业务 驱动 项⺫⽬目⼀一开始由业务架 构师设计业务架构图 业务架构图描述各种 业务系统之间的关系 以及与外部系统之间 的关系
每個業務系統应该详 细描述各个业务系统 的业务功能 每个系统都可以产⽣生 ⼀一个以上的⼦子系统 业务 技术 数据 ⺴⽹网络 ⼈人员 领域
画一个大框。把黑色的外 部角色放到边界外: • 用户角色放上面 • 接入系统角色放两侧 •
接出系统角色放下面 思考跟这些外部角色相关 的内部系统有哪些,归纳 出初步的边界关系 绘制业务架构图(1)边界关系
思考这些内部系统是否有 调用依赖,为这些依赖画 上箭头: • 用户角色放上面 • 接入系统角色放两侧
• 接出系统角色(与数据 库)放下面 思考跟这些外部角色相关 的内部系统有哪些,归纳 出初步的边界关系 绘制业务架构图(2)内部关系
思考这些内部系统是否有 调用依赖,为这些依赖画 上箭头: • 用户角色放上面 • 接入系统角色放两侧
• 接出系统角色放下面 思考跟这些外部角色相关 的内部系统有哪些,归纳 出初步的边界关系 用户沿著箭头,会走出一 道彩虹 绘制业务架构图(3)内部分解
最后得到的结果会把业务 系统分为顶层、上层、下 层、底层。依序摆放。 可以双色表示 绘制业务架构图(4)最终结果
(Step2)领域建模 先做业务建模,再做领域 建模,可以避免「分析瘫 痪症」。直接做领域建模 容易导致分析瘫痪。 业务 技术 数据 ⺴⽹网络 ⼈人员
领域
(Step 3)技术建模 业务架构交给技术架 构师,进⾏行抽象架构 的规划。 技术架构师设计对于 不够清楚甚⾄至技术实 现有难度的部分,与 业务架构师进⾏行反复 研讨
每个⼦子系统都可以拆 分出⼀一个以上的模块 最后产出可实现的模 块详细规格 业务 技术 数据 ⺴⽹网络 ⼈人员 领域
边界模型 内部模型 代码模型 嵌 套
必要的话,继续分层。 每层内找出模块,模 块的特点是「内聚力 强」。 定义每个模块的接口, 找出模块间的接口依 赖。
绘制模块架构图:接⼝口与调⽤用
接⼝口规范的定义流程 从上往下,详细定义每 个接⼝口的参数与返回值 【接出系统】的接⼝口是 外部定义的,我们只能 接受其定义。 代理层刚好夹在两层之 间,担任转接的任务
⼀一个⽤用户使⽤用⼀一到多个界⾯面 ⼀一个应⽤用衍⽣生出⼀一到多个界⾯面 ⼀一个框架衍⽣生出⼀一到多个应⽤用 ⼀一个框架调⽤用⼀一到多个服务 ⼀一个服务调⽤用⼀一到多个核⼼心 ⼀一个核⼼心调⽤用⼀一到多个代理 ⼀一个代理调⽤用⼀一到多个数据或外部
(Step 4)数据建模 数据架构师从模块的 详细规格可以得知需 要存储的数据有哪些 数据架构师要特别关 注每个数据种类的属 性: • 增删改查频率
• ⼀一致性要求 • 保密性要求 • 重要性 • 权限 数据架构师任务: • 数据库技术选型 • 数据库设计 业务 技术 数据 ⺴⽹网络 ⼈人员 领域
数据 代理 核⼼心 服务 框架 应⽤用 界⾯面 多数人提到大数据 时,都是指来自这 里(数据库)的数
据。而系统运行过 程中的许多有价值 的数据,都被丢弃 忽略了。 比方说:当多数用 户到了某页面后, 就不往下进行,可 能页面设计有问题, 只要改善页面用户 体验,业绩就会大 幅提升。但只通过 数据库,无法分析 出这点
数据 代理 核⼼心 服务 框架 应⽤用 界⾯面 七 层 架
构 与 五 个 事 件 钩 子 事件 钩⼦子 事件 钩⼦子 事件 钩⼦子 事件 钩⼦子 事件 钩⼦子 业务系统的层与层之间,都可设 置事件钩子,避免系统改造。 事件钩子可以将事件原地处理, 也可将事件送到其他服务器处理 事件钩子同时具备日志的效果, 关键事件可以送到统一日志中心 注意:代理层的事件钩子是 设置在代理层下方,而不是 上方 外部 外部
事 件 信 息 流 向 与 数 据
分 析 系 统 商业智能系统 业务活动监控系统 ⽤用户体验分析系统 ⺴⽹网络攻击分析系统 商业⻛风险控制系统 数据备份系统 事件 钩⼦子 事件 钩⼦子 事件 钩⼦子 事件 钩⼦子 事件 钩⼦子 数据 ⼤大 数 据 分 析
从代理层的接口,归纳: • 数据种类 • 数据关系 • 查询关系
从更上层的模块以及业务需求,归纳出: • 数据的属性 代理层+数据层 代理层提供访问接⼝口,内部将 数据 库驱动程序与 SQL 等数据库语句隐 藏起来
(Step 5)⺴⽹网络建模 ⺴⽹网络架构师根据前⾯面 所有分析与设计的结 果,进⾏行⺴⽹网络规划 ⺴⽹网络架构必须考虑系 统的⾼高效率与⾼高可⽤用 业务 技术 数据
⺴⽹网络 ⼈人员 领域
Lang Runtime 容器 模块 容器 程序库 模块 Guest OS Hypervisor
硬件 Server(通⽤用层) 每 ⼀一 点 都 有 监 控 与 配 置 的 需 求 引擎 规则
代理 核⼼心 服务 应⽤用 界⾯面 ⽤用户 接出 应 ⽤用 优
化 资 源 优 化 接⼊入 平 台 优 化 前 端 优 化 数据 框架 负载均衡服务器 软负载均衡 静态资源服务器 Session服务器 集群 MQ 集群 MQ CDN 反向代理服务器 缓存服务器 业务云 读写分离 同步备份 异步备份 冷备份 缓存服务器 核⼼心云 Session服务器 配置服务器 配置服务器 缓存服务器
(Step 6)⼈人员配置 ⾸首席架构师根据前⾯面 所有的规划设计,进 ⾏行: • 技术选型 • 技术⼈人员招聘 •
⼈人员职责设计 • KPI 设置 后三者需要⼈人⼒力资源 部⻔门的协助 KPI 设置很重要。产 品、业务、⼯工程⼈人员 如果没有共同⺫⽬目标, ⽽而是各怀⿁鬼胎,项⺫⽬目 就会失败。 业务 技术 数据 ⺴⽹网络 ⼈人员 领域
七 层 架 构 之 开 发 人 员 素
质 了解市场与用户,且具有审美观 了解市场与用户 了解市场与用户,且擅长归纳总结 了解行业与公司的战略 有比较强的计算机知识与算法能力 了解行业与合作夥伴 了解行业、市场、用户、数据库 数据 代理 核⼼心 服务 框架 应⽤用 界⾯面 ⽤用户 外部 上 层 底 层 外部 下 层 顶 层
数据 代理 核⼼心 服务 框架 应⽤用 界⾯面 七 层 架
构 与 职 责 【用户体验组】专精交互设计与用户体验 【应用开发组】具有很强的市场嗅觉与产品 设计能力 【通用服务组】具有良好的业务抽象能力与 接口设计经验,可以将业务转化成平台 【核心技术组】精通网络、操作系统、算法 …等计算机专业知识。
数据 代理 核⼼心 服务 框架 应⽤用 界⾯面 七 层 架
构 与 技 术 【用户体验组】使用Java/JS/HTML5/Obj-‐C 【应用开发组】使用任何脚本语言或 Java 【通用服务组】使用 Java 语言 【核心技术组】使用 C 语言
数据 代理 核⼼心 服务 框架 应⽤用 界⾯面 七 层 架
构 与 K P I 设 置 【用户体验组】客户是用户,由业绩说话 【应用开发组】客户是【用户体验组】,由 【用户体验组】打 KPI 【通用服务组】客户是【应用开发组】,由 【应用开发组】打 KPI 【核心技术组】客户是【通用服务组】,由 【通用服务组】打 KPI KPI 对员工的行为影响相当大,通过 KPI,让 每个组都有服务意识,合作意识,而不是对 抗意识
数据 代理 核⼼心 服务 框架 应⽤用 界⾯面 七 层 架
构 与 迭 代 进 度 根据用户反馈,平均每月推新版 根据市场发展与竞争对手的状况,平均 一季推一个新版 系统比较少做大更动,平均每半年推新版 平均每年推出新版
(Step 7) ⾸首席架构师必须让架 构设计反复进⾏行,因 为: • 降低设计复杂度 • 修正⽼老化的架构 架构设计时,复杂度
太⾼高,会导致设计难 以进⾏行。最好先简化 再逐步累加,且重要 的⼦子系统先设计 随著业务持续累积, 架构会⽼老化。这时⾸首 席架构师要发起重构 业务 技术 数据 ⺴⽹网络 ⼈人员 领域
重点复习 如果你记不住今天所有的内容 记得下面两页就好
架构的流程 业务 技术 数据 ⺴⽹网络 ⼈人员 领域
代理 核⼼心 服务 应⽤用 界⾯面 ⽤用户 接出 接⼊入 数据 框架
Lang Runtime 容器 模块 容器 程序库 模块 Guest OS Hypervisor 硬件 Server(通⽤用层) 引擎 规则
谢 谢 Copyright © 2014 by Jerry Tsai (蔡学镛) All
Rights Reserved. 电邮
[email protected]
微信公众号:JerryTsai1218