蔡学镛架构设计方法 2014 8 17

2020-02-27 125浏览

  • 1.软件架构设计   2014-8-17  版   中国平安   集团首席架构师   开放平台总架构师   蔡学镛   A  Methodology  of  Software  Architecture  Design 
  • 2.认识软件架构 
  • 3.一句话说明架构是什么   架构就是…代码的组织方式   说说这三个架构各自的优缺点 
  • 4.但架构只著眼于大处   库   粒度   设计   粒度   架构性框架   框 架   架构   设计   类库   详细 设计   函数库   算法   代码   粒度   主要   应用   主要   模块   类   函数   语句   许多人常将架构与设计模式和框架混为一谈,这是错的 
  • 5.f 架构粒度  =   (项目,  阶段,  层) 
  • 6.设计师角色   【架构师】   关注大格局的设计 需求   【算法工程师】   关注具体问题的代 码解决方式,效率 为主   架构   设计   详细 设计   算法   【系统设计师】   关注小的局部设 计需求 
  • 7.什么是「大格局」的需求?   运营阶段   高性能   运营阶段   未来变化   运营阶段   未来变化   安全性   开发阶段   开发测试   可用性   扩展性   伸缩性   长期运营   降低成本 
  • 8.相比于企业级系统,互联网系统的差异   并发量大   运营阶段   高性能   开发测试   数据量大   运营阶段   未来变化   运营阶段   未来变化   安全性   开发阶段   流量大   可用性   扩展性   伸缩性   长期运营   降低成本 
  • 9.相比于企业级系统,互联网系统的差异   暴险危机高   运营阶段   高性能   运营阶段   未来变化   运营阶段   未来变化   安全性   开发阶段   开发测试   可用性   扩展性   伸缩性   长期运营   降低成本 
  • 10.相比于企业级系统,互联网系统的差异   运营阶段   地理分布广   网络条件差异大   高性能   运营阶段   未来变化   运营阶段   未来变化   安全性   开发阶段   开发测试   可用性   扩展性   伸缩性   长期运营   降低成本 
  • 11.相比于企业级系统,互联网系统的差异   需求变化快   运营阶段   迭代式开发   高性能   运营阶段   未来变化   运营阶段   未来变化   安全性   开发阶段   开发测试   可用性   扩展性   伸缩性   长期运营   降低成本 
  • 12.一个软件系统怎么可能如此完美?   运营阶段   高性能   运营阶段   未来变化   运营阶段   未来变化   安全性   开发阶段   开发测试   可用性   扩展性   伸缩性   长期运营   降低成本   答案是:整体的目标与局部的目标分開 
  • 13.【问题】要如何规划设计模块, 并组织这些模块,使其成为「好 的架构」,满足大格局的目标?     【答案】第一步是切割出足够细 粒度的模块,用正确的方法连结 起来。 
  • 14.架构的  4D  座标系统 
  • 15.架构的四维座标系统   Y   T   Z   本教材 不包 Y/Z/T 本教材 含 Y Z T 的详 忽略不提 细架构⽅方法 X   前后端维度(X1..X7):界面(红)、应 用(橙)、框架(黄)、服务(绿)、 核心(蓝)、代理(靛)、数据(紫)   业务维度(Y1..Yn):每个业务系统   系统维度(Z1..Zn):软件、容器、运行 时、操作系统、虚拟机、到硬件。跟行 业无关   时间维度(T1..Tn):初始架构到成熟架 构
  • 16.X  座标   外部   1   X3   框架   X2   应用   业务   2   X4   服务   API   七   X1   界面   层   架   交互   构   外部   X5   核心   领域   3   X6   代理   X7   数据   资源   SPI   用户   4   注意:每一层内由多个模块构成,层只是一种逻辑概念,   层在架构中不具备实体   黄色箭头是跨系统的调用,白箭头是系统内调用   5
  • 17.前   端   优   化   应   用   优   化   平   台   优   化   资   源   优   化   Z3  的考量   用户   界面   应用   接入   框架   静态资源服务器   负载均衡服务器   CDN   反向代理服务器   集群   云   Session服务器   MQ   配置服务器   缓存服务器   软负载均衡   服务   核心   代理   接出   数据   集群   MQ   云   配置服务器   读写分离   缓存服务器   同步备份   异步备份   灾备中心   冷备份 
  • 18.XY  座标   界 面   应 用   框 架   不同后台系统的调用, 视为外部间接调用   但对于公共系统,可以 直接调用   服 务   核 心   代 理   数 据   服 务   核 心   代 理   数 据   服 务   核 心   代 理   数 据   公共系统是指大家都可能需要的系统,包括短信发送、加密服务。 公共系统不可以依赖任何非公共系统。公共系统接口简单不易改 变。公共系统没有独立成为一家公司运作的可能。
  • 19.七层架构详解 
  • 20.用户   交互   业务   界面   应用   外部   框架   服务   领域   资源   核心   代理   外部   数据   跟外部有接触的,只有三个地方。     三个外部系统,包含一个人,一个接入系统,一个接出系统     箭头指的是接口依赖,不是信息流向     黃色箭頭是回调(Call-Back)。想一想,为什么这三层要允 许回调?     黄色箭头部分也可改用  Message  Queue  的低耦合設計方式   
  • 21.用户   交互   业务   界面   应用   外部   框架   服务   领域   资源   核心   代理   核心层反映出「领域模型」     核心层的接口基本就是对此领域模型进行操作     为何要建立领域模型?   1. 帮助接口设计   2. 帮助数据存储设计,梳理出更具有弹性的存储方式   外部   数据 
  • 22.用户   交互   业务   界面   应用   外部   框架   服务   领域   资源   核心   代理   外部   数据   服务层针对「领域对象」进行操作,并提供弹性的调用接口     服务层接口通常数目不多,但每个接口通常参数相当多     服务层没有状态,也不做缓存     实现  API。如果公开,就是开放接口     调用服务层的接口,通常需要授权 
  • 23.用户   交互   业务   界面   应用   外部   框架   服务   领域   资源   核心   代理   驱动作用:   • 數據代理:代表外部系统或数据库   • Z3  缓存:为了效率或提高可用性(当外部系统掉线)   • Z3  数据模块,支持读写分离   • 转接或转发   • 转接到外部系统   • 转发到日志系统,数据备份系统(通过事件钩子)   • 热备系统接入     SPI  作用:   • 隔离:避免依赖特定的外部系统或数据库   外部   数据 
  • 24.用户   交互   业务   界面   应用   外部   框架   服务   领域   资源   核心   代理   外部   数据   数据是公司最重要的资产,数据层负责记录系统运作后的最 终结果     根据数据的特性,数据库可以是:   • 关系式数据库   • 列数据库   • Associative  DB   • Key-Value   • 文件数据库   • 日志   • … 
  • 25.用户   交互   业务   界面   应用   外部   框架   服务   领域   资源   核心   代理   根据市场需求,开发各种应用,并以接口的方式展现。     如果是  Web  应用,则这里的  Z3  包含  Web  服务器层   外部   数据 
  • 26.用户   交互   业务   界面   应用   外部   框架   服务   领域   资源   核心   代理   外部   数据   将常用的应用流程设计成框架,后续开发「同类型应用」时, 只要通过参数或者  DSL,就可以轻易订制应用,减少开发应 用的成本     框架也可以用接口的方式开放让外部调用     Z3  缓存与  Session 
  • 27.用户   交互   业务   界面   应用   外部   框架   服务   领域   资源   核心   代理   外部   数据   界面更像是用户的延伸,而非应用的延伸。界面可被視為用 戶代理(User  Agent)     根据用户喜好、语言、平台(手机、电脑、平板…)进行开 发各种用户界面的开发。     一个应用可以有多个界面     如果是  Web  应用,則这里的  Z3  包含  Web  浏览器 
  • 28.界面   可用性(Usability)   应用   可用性(Usability),扩展性,  安全(防攻 击)     框架   服务   可用性(Availability),安全   核心   高效率   代理   透明性   数据   安全性,持久性   通用层   通用性   网络层   稳定,可用(Availability),伸缩,效率   7+2   层 架 构 之 系 统 素 质 
  • 29.界面   了解用户,且具有审美观   应用   了解市场与用户,具有产品设计能力   框架   了解市场与用户,且擅长归纳总结   服务   了解领域和公司的战略,有接口设计能力   核心   有比较强的计算机知识与算法能力   代理   了解领域与合作夥伴   数据   了解领域与数据库   通用层   了解语言、程序框架、各种开源项目   网络层   了解操作系统、网络、云计算   7+2   层 架 构 之 人 员 素 质 
  • 30.界面   HTML/CSS/JavaScript/Android/iOS   应用   PHP/Python/Ruby/Java   框架   服务   7+2   Java/C   核心   代理   Java/C   数据   NoSQL/MySQL   通用层   网络层   Security/MemCached/Redis/MySQL     Spring/Load  Balance/F5/Cloud   层 架 构 之 技 术 
  • 31.界面   每周   应用   每月   框架   每季   服务   每年   核心   代理   不一定   数据   不一定   通用层   每季   网络层   每半年   7+2   层 架 构 之 代 码 迭 代 进 度 
  • 32.架构流程 
  • 33.架构推导过程   泛用化   层   参数   接口   模块   对象   数据   对内高内聚力   对外低耦合   详细设计   详细设计 
  • 34.用户   交互   业务   X1   X2   外部   X3   X4   业务拆分   X2  X4  /  Y1..Yn   交互设计   X1  X2   人员机器规划   X  /  Y  /  Z   领域   资源   X5   X6   系统重构   T1..Tn   业务设计   X2  X4   建模   X4..X6  /  Y   模块设计   X1..X6  /  Z2   数据存储设计   X1  X3  X6  X7   网络布署规划   X1..X7  /  Z3   外部   X7 
  • 35.根据业务拆分系统   角色名称   人?  系统名称   用例描述   用户   交互   业务   X1   X2   外部   X3   X4   领域   资源   X5   X6   外部   X7 
  • 36.业务设计(找出接口与参数)   层   层   层 
  • 37.领域访谈 研究 外部接⼝口 对 X4 的 业务需求 找出 领域对象 研究 数据字典 设计 资源模型 设计 领域模型 设计 数据模型 设计 API 设计领域 模型接⼝口 设计 SPI 服务层 代码设计 核⼼心层 代码设计 代理层 代码设计 研   究   设   计   实   施   设计 数据库 数据 迁移计划
  • 38.红⾊色对于领域模型的设计有帮助 6.  热点现象   (新闻,商品)   3.  访问频率   4.  读写比   7.  地域现象   (用户登录)   1.  重要性   10.  索引方式   2.  保密性   (密码)   5.  一致性   9.  数据体积   (图)   8.  数据笔数 
  • 39.详编模块定义   ID   ID   名称   名称   座标   负责人   目的   依赖   接   口   与   参   数 
  • 40.数据特性   分析   十大指标   数据库   选型   数据库特徵表   备份策略   缓存策略 
  • 41.云计算与大数据 
  • 42.Z  座标和云平台的关系   逻辑层   逻辑层   逻辑层   通用层   网络层   PaaS   IaaS
  • 43.XZ  座标和云平台的关系   Open  APIWeb:SaaS   用户   交互   业务   界面   应用   外部   框架   服务   领域   资源   核心   代理   应用云   所有业务系统的服务层以下都要收归集团统一管理。优点:   • 只有内部(服务以下就是内部)可以依赖   • 数据方便管理   • 方便管理与外部系统的关系   • 可以逐渐形成统一平台   核心云   外部   数据 
  • 44.界面   多数人提到大数据 时,都是指来自这 里(数据库)的数 据。而系统运行过 程中的许多有价值 的数据,都被丢弃 忽略了。   应用   框架   服务   核心   代理   数据   比方说:当多数用 户到了某页面后, 就不往下进行,可 能页面设计有问题, 只要改善页面用户 体验,业绩就会大 幅提升。但只通过 数据库,无法分析 出这点 
  • 45.界面   应用   外部   框架   服务   核心   代理   外部   数据   通过  Z3  层的配置,可以直接得到事件   事件 钩子   事件 钩子   事件 钩子   事件 钩子   事件 钩子   业务系统的层与层之间,都可设 置事件钩子,避免系统改造。     事件钩子可以将事件原地处理, 也可将事件送到其他服务器处理     事件钩子同时具备日志的效果, 关键事件可以送到统一日志中心       注意:代理层的事件钩子是 设置在代理层出口,而不是 入口   七 层 架 构 与 五 个 事 件 钩 子 
  • 46.事件 钩子   事件 钩子   事件 钩子   事件 钩子   事件 钩子   数据   网络攻击分析系统   用户体验分析系统   业务活动监控系统   商业风险控制系统   商业智能系统   数据备份系统   大   数   据   分   析   事 件 信 息 流 向 与 数 据   分 析 系 统 
  • 47.平台化战略 
  • 48.产品创新需要技术支撑   企业竞争力   促 进 创新产品   支 撑 技术   唯有持续推出创新的产品, 才能维持企业竞争力   但…   滞后的技术与架构,无法支 撑产品的创新 
  • 49.平台化促进合作与创新,进而巩固平台实力   Z   XY   Z   大数据平台   产品重构   内部接口   集团云平台   企业   合作   开放平台   公共云平台   创新   孵化   平台   强化 
  • 50.想要做到  …   大数据平台   产品重构   内部接口   集团云平台   企业   合作   开放平台   公共云平台   创新   孵化   平台   强化   依靠的是  …   首席架构师的架构设计能力   与公司的执行力 
  • 51.T   H   A   N   K   Y   O   U   软件架构入门  Copyright  ©  2014  Jerry  Tsai   蔡学镛 email: JerryTsai1218@Gmail.com   新浪微博  @蔡学镛   Version: 2014-8-17