授课内容 | |
第一部分 高质量架构设计 | |
第一单元 软件架构设计概述 | 1. 什么是软件架构 2. 什么是架构设计 3. 什么是架构师 1)剖析架构师的4种职责及其能力要求 2)解读架构师的4种类型及其在项目中的作用: Product architect, System architect, Platform architect,Enterprise architect 3)成为架构师的思维转变:从关注细节到关注宏观,从关注怎么做到关注为什么 4. 剖析架构师的本质: 1)架构师 ≠ 技术大牛 2)架构师要能够将业务转换为技术 3)架构师能合理运用技术支撑业务 5. 如何成为一个顶级架构师: 1)对业务及其痛点有深刻的理解与思考 2)能够将技术落地产生业务价值 6. 架构设计的难题: 1)如何快速有效地学习业务领域知识 2)如何深入地理解与挖掘业务痛点 3)如何通过技术的手段落地业务 7. 架构师的思维习惯: 1)宏观思维 2)抽象思维 3)战略思维 4)前瞻思维 8. 业务架构、功能架构与技术架构 1)剖析它们的概念、关系与差异 2)大前端+技术中台的建设思路 9. 架构设计5视图法 |
第二单元 逻辑架构设计过程 | 一、逻辑架构的概念与重要作用 二、需求分析与用例模型设计(Requirements Engineering) 案例:演示用例模型设计过程(双方共同确定案例内容) 1)“粗→细→粗”的用例模型设计过程 2)用三种类型的用例描述编写需求规格说明书 3)用需求列表进行需求跟踪 4)基于UML的需求规格说明书 三、界面原型设计 四、领域驱动设计与业务建模 所有软件企业不得不面对的问题 1. 我们现在面对的是快速变化的时代 2. 软件研发却出现了问题: 变更越频繁,代码质量下降越快 案例:演示电商网站付款功能代码质量下降的过程 3. 揭示软件退化的根源 案例:演示软件退化的过程与高质量设计的过程 深度解读高内聚与单一职责原则
领域驱动设计 1. 软件变更过程中的设计难题 2. 领域驱动的设计思想 案例:重新演练电商网站付款功能的变更过程 第一个版本的领域模型与设计 Ø 构建用例模型 Ø 构建领域模型 Ø 构建领域事件 第一次变更的分析设计过程 Ø 演示领域分析不断深入的过程 Ø 演示领域驱动指导软件变更的过程 第二次变更与两顶帽子的设计方式 第三次变更与限界上下文 Ø 聚合、工厂、仓库的设计 Ø 限界上下文与微服务 五、需求确认与可行性分析 -> to day 1 1)阐述用户需求技术不可行的风险 2)用户需求技术不可行的风险规避过程 3)树立架构师威信与客户引导技巧
|
第三单元 开发架构设计过程 | 一、开发架构的概念与设计思路 二、系统规划与接口定义 案例:远程智慧医疗平台的系统规划过程 三、系统分层与技术中台设计 剖析常见的架构设计模式及其设计思想 1. 整洁架构设计 2. 六边形架构设计 3. CQRS架构设计 探讨软件架构如何支持领域驱动 1. 架构调整不是件简单的事儿 如何实现业务领域层与技术框架的解耦 如何简化业务实现的过程 2. 架构设计如何支持领域驱动 增删改如何支持领域驱动 查询如何支持领域驱动 3. 微服务架构如何支持领域驱动 案例:一个简单、易于开发的微服务架构 如何实现前端微服务化的设计 四、开发架构的技术选型 五、软件开发规范的制订 |
第四单元 数据架构设计过程 | 探讨传统的数据架构设计过程 讲解基于领域的数据架构设计过程 1. 如何将领域模型转换为数据库设计 Ø 传统的4种关系转换为数据库设计 Ø 继承关系的3种数据库设计 2. 如何将领域模型转换为软件 贫血模型 vs. 充血模型 事件驱动与领域事件的设计 限界上下文与微服务拆分 案例:在线订餐系统的微服务设计过程 |
第五单位 运行架构设计过程 | 探讨运行架构的设计过程 1. 关注关键点与难点而不是全局 2. 属性→场景→决策的分析过程 专题讨论运行架构需要决策的内容 1. 并发访问与串行操作 2. 同步操作与异步操作 3. 进程与线程 |
第六单元 物理架构设计过程 | 探讨物理架构设计过程 1. 案例讲解一些常见物理架构设计 2. 案例讲解应用架构设计 3. 案例讲解一些技术方案的编写 |
第二部分 互联网架构设计 | |
第七单元 大型分布式架构设计 | 什么是分布式系统 1. 集中式系统及其弊病 2. 分布式系统的概念及其优势 大型业务系统架构的发展历程 1. 集中式系统架构的设计 2. 多级集中式架构及其弊病 3. 动静分离与读写分离的设计 生产型业务系统的分布式设计 1. 数据库的横向纵向切分 2. 分布式缓存的设计 3. 异步化操作与分布式队列 生产型业务系统未来的发展趋势 1. 微服务的架构设计 2. 服务网格Service Mesh 3. NewSQL数据库 分析型业务系统的分布式设计 1. NoSQL数据库 2. 基于Hadoop的大数据平台 3. 基于Kylin的多维数据建模 4. 运用ElasticSearch解决海量明细查询 |
第八单元 互联网分布式系统技术专题 | 分布式缓存 1. 本地缓存vs.分布式缓存 2. 分布式缓存设计原理与高可用设计 3. Redis分布式缓存部署 4. Redis分布式缓存设计实践 5. Redis分布式缓存设计应注意的问题
内存数据库 1. 内存数据库运行原理 2. 内存数据库设计选型 3. Redis内存数据库设计实践 1) 内存数据库+异步化技术方案 2) 京东订单系统的优化过程
分布式事务 1. 分布式事务的两阶段提交 2. TCC方案与 1) TCC方案设计原理 2) 阿里的Seata与GTS 3) TCC方案的设计实现 3. 基于消息的分布式事务 1) 基于消息的最终一致性 2) 设计实践及其存在的问题 3) 基于半消息的设计实践 4) 基于消息表的设计方案
分布式消息队列 1. 异步化操作与分布式消息队列 2. RabbitMQ, RocketMQ, ActiveMQ与kafka的比较 3. RabbitMQ的设计实践 4. Kafka的设计实践
分布式数据库 1. RMSDB→NewSQL→NoSQL 2. 分布式存储CAP理论 3. NoSQL数据库及其原理 4. 如何实现高并发大数据查询场景 案例:MongoDB实现大数据秒级查询 5. NewSQL数据库及其原理 6. 高并发写入的分布式设计方案 案例:TiDB数据库的分布式方案 |
课程对象
中高级工程师、企业架构师、软件设计师、数据库/存储技术人员、技术决策/解决方案人员等。
课程特色
本课程注重实战,采用案例贯穿的方式,收集了大量的真实案例,针对项目过程中技术人员常犯的错误进行了汇总与研讨,并最终形成培训教程。通过大量的真实案例,详细地介绍了软件架构设计过程需要注意的要点以及难点,这些知识都是讲师十几年经验的总结。