作者 |
居瓦·洛瑞 范钢 孙玄 |
丛书名 |
架构师书库 |
出版社 |
机械工业出版社 |
ISBN |
9782108101721 |
简要 |
简介 |
内容简介书籍计算机书籍 ---------------------------8082990 - 架构之道:软件构建的设计方法--------------------------- 本课程通过自顶向下的程序设计演示和解释,教授学生如何在机器层面上编写和调试程序,并将有效的设计技巧应用于多种程序设计课程。这种方法简化并消除了学生在学习更高级的计算机体系结构和操作系统课程之前需要掌握的概念。 ---------------------------8082131 - 架构真意:企业级应用架构设计方法论与实践--------------------------- 本书分三大部分: 首先是部分,架构设计方法论。这部分首先侃侃而谈,为架构师成长指引道路。然后,以“5视图法”架构设计为主线,同时穿插领域驱动设计、整洁架构设计、大前端+技术中台等思想,为读者展现一整套严密、完整,且落地可操作的架构设计方法。后,探讨另一个难题:技术架构改造,并提出架构跑道、使能故事、架构重构等一系列方法。 之后是第二部分,分布式架构设计与实践。这部分从实践的角度讲解目前非常流行的互联网分布式架构的设计思路、软件架构,以及涉及的软件技术,让读者在应对这一类型的系统时,对架构设计、技术选型、架构演化,都有一个清楚的认识。 第三部分,大数据架构设计。这部分首先从宏观的角度描绘未来大数据、人工智能的发展方向、商业应用,以及技术发展趋势,以及5G/物联网背景下新的发展动向。然后,从大数据技术、数据治理、数据分析和人工智能等几个方面,讲解大数据架构设计。 |
目录 |
[套装书具体书目] 8082131 - 架构真意:企业级应用架构设计方法论与实践 - 9787111685029 - 机械工业出版社 - 定价 99 8082990 - 架构之道:软件构建的设计方法 - 9787111687702 - 机械工业出版社 - 定价 199 ---------------------------8082990 - 架构之道:软件构建的设计方法--------------------------- 赞誉 译者序 前言 作者介绍 第1章 元设计方法 / 1 1.1 什么是元设计方法 / 2 1.1.1 设计验证 / 3 1.1.2 紧迫的时间 / 3 1.1.3 消除分析瘫痪 / 4 1.1.4 沟通 / 5 1.2 元设计方法不是什么 / 6 |第一部分| 系统设计 第2章 分解 / 8 2.1 避免功能分解 / 9 2.1.1 功能分解带来的问题 / 9 2.1.2 关于功能分解的思考 / 13 2.1.3 避免领域分解 / 15 2.1.4 错误的动机 / 17 2.1.5 可测试性和设计 / 17 2.1.6 示例:功能型交易系统 / 19 2.2 基于易变性的分解 / 21 2.2.1 分解、维护和开发 / 22 2.2.2 普遍性原则 / 23 2.2.3 基于易变性的分解与测试 / 24 2.2.4 易变性的挑战 / 24 2.3 识别易变性 / 26 2.3.1 易变性与可变性 / 26 2.3.2 易变轴 / 27 2.3.3 伪装成需求的解决方案 / 29 2.3.4 易变列表 / 30 2.3.5 示例:基于易变性的交易系统 / 30 2.3.6 抵制“塞壬之歌” / 34 2.3.7 易变性与业务 / 35 2.3.8 为竞争对手设计 / 37 2.3.9 易变性和寿命 / 38 2.3.10 实践的重要性 / 38 第3章 结构 / 40 3.1 用例和需求 / 41 3.2 分层方法 / 43 3.3 典型分层 / 44 3.3.1 客户端层 / 44 3.3.2 业务逻辑层 / 45 3.3.3 资源访问层 / 46 3.3.4 资源层 / 47 3.3.5 实用工具库栏 / 48 3.4 分类指南 / 48 3.4.1 命名的玄机 / 48 3.4.2 四个问题 / 49 3.4.3 管理器与引擎比 / 50 3.4.4 关键观察 / 51 3.5 子系统和服务 / 52 3.5.1 增量构造 / 52 3.5.2 关于微服务 / 54 3.6 开放和封闭式架构 / 56 3.6.1 开放式架构 / 56 3.6.2 封闭式架构 / 56 3.6.3 半封闭/半开放架构 / 57 3.6.4 放宽规则 / 57 3.6.5 设计禁忌 / 59 3.6.6 力求对称 / 61 第4章 组合 / 62 4.1 需求与变更 / 62 4.1.1 憎恨变更 / 63 4.1.2 设计基本准则 / 63 4.2 可组合设计 / 64 4.2.1 核心用例 / 64 4.2.2 架构师的使命 / 65 4.3 这里没有功能 / 68 4.4 处理变更 / 69 第5章 系统设计示例 / 71 5.1 系统概述 / 72 5.1.1 遗留系统 / 73 5.1.2 新系统 / 74 5.1.3 公司 / 74 5.1.4 用例 / 74 5.2 反设计工作 / 80 5.2.1 巨型系统 / 80 5.2.2 颗粒化构建块 / 80 5.2.3 域分解 / 81 5.3 业务对齐 / 82 5.3.1 愿景 / 82 5.3.2 业务目标 / 83 5.3.3 使命陈述 / 84 5.4 架构 / 84 5.4.1 TradeMe词汇表 / 84 5.4.2 TradeMe易变区域 / 85 5.4.3 静态架构 / 88 5.4.4 操作概念 / 90 5.4.5 工作流管理器 / 92 5.5 设计验证 / 93 5.5.1 添加技工/承包商用例 / 94 5.5.2 请求技工用例 / 95 5.5.3 匹配技工用例 / 96 5.5.4 分配技工用例 / 98 5.5.5 终止技工用例 / 100 5.5.6 支付技工用例 / 101 5.5.7 创建项目用例 / 101 5.5.8 结束项目用例 / 102 5.6 接下来会是什么 / 103 |第二部分| 项目设计 第6章 动机 / 106 6.1 项目设计的背景和基本动机 / 106 6.1.1 项目设计和项目稳健 / 107 6.1.2 组装说明 / 108 6.2 软件项目的需求层级 / 108 第7章 项目设计综述 / 111 7.1 定义成功 / 111 7.2 项目初始人员配备 / 113 7.2.1 一个架构师,非一群架构师 / 113 7.2.2 核心团队 / 114 7.3 明智的决定 / 116 7.3.1 计划,不计划 / 116 7.3.2 软件开发计划评审 / 117 7.4 服务和开发人员 / 117 7.4.1 设计和团队效率 / 119 7.4.2 任务连续性 / 120 7.5 工作量的估算 / 120 7.5.1 经典错误 / 121 7.5.2 估算技术 / 123 7.5.3 总体项目估算 / 124 7.5.4 活动估算 / 126 7.6 关键路径分析 / 127 7.6.1 项目网络图 / 127 7.6.2 关键路径 / 130 7.6.3 分配资源 / 131 7.7 安排活动 / 134 7.8 项目费用 / 140 7.9 挣值计划 / 143 7.9.1 经典错误 / 144 7.9.2 浅S曲线 / 145 7.10 角色和责任 / 148 第8章 网络和浮动时间 / 149 8.1 网络图 / 149 8.1.1 节点图 / 150 8.1.2 箭头图 / 150 8.1.3 箭头图与节点图 / 151 8.2 浮动时间 / 152 8.2.1 总浮动时间 / 153 8.2.2 自由浮动时间 / 153 8.2.3 计算浮动时间 / 154 8.2.4 可视化浮动时间 / 155 8.3 基于浮动时间的进度安排 / 157 第9章 时间和成本 / 159 9.1 加速软件项目 / 159 9.2 进度压缩 / 162 9.2.1 利用更好的资源 / 162 9.2.2 并行工作 / 162 9.2.3 并行工作和成本 / 164 9.3 时间-成本曲线 / 164 9.3.1 时间-成本曲线上的要点 / 165 9.3.2 离散建模 / 167 9.3.3 避免经典错误 / 168 9.3.4 项目可行性 / 168 9.3.5 找到常规方案 / 169 9.4 项目成本要素 / 171 9.4.1 直接成本 / 171 9.4.2 间接成本 / 172 9.4.3 会计与价值 / 172 9.4.4 总成本、直接成本和间接成本 / 172 9.4.5 压缩和成本要素 / 173 9.4.6 人员配备和成本要素 / 176 9.4.7 固定成本 / 178 9.5 网络压缩 / 178 第10章 风险 / 181 10.1 选择选项 / 181 10.2 时间-风险曲线 / 182 10.3 风险建模 / 184 10.3.1 标准化风险 / 185 10.3.2 风险和浮动 / 185 10.3.3 风险和直接成本 / 186 10.3.4 临界风险 / 186 10.3.5 斐波那契风险 / 188 10.3.6 活动风险 / 189 10.3.7 临界风险与活动风险 / 191 10.4 压缩和风险 / 191 10.5 风险缓解 / 192 10.5.1 如何缓解 / 192 10.5.2 缓解目标 / 193 10.6 风险指标 / 194 第11章 实践中的项目设计 / 196 11.1 使命 / 196 11.1.1 静态架构 / 197 11.1.2 调用链 / 197 11.1.3 活动清单 / 199 11.1.4 网络图 / 200 11.1.5 计划假设 / 201 11.2 寻找常规的解决方案 / 203 11.2.1 无限的资源(迭代1) / 203 11.2.2 网络和资源问题 / 204 11.2.3 基础设施优先(迭代2) / 204 11.2.4 有限的资源 / 205 11.2.5 亚临界化(迭代7) / 208 11.2.6 选择常规的解决方案 / 211 11.3 网络压缩 / 211 11.3.1 使用更好的资源进行压缩 / 211 11.3.2 引入并行工作 / 213 11.3.3 压缩迭代结束 / 219 11.3.4 产出分析 / 219 11.4 效率分析 / 221 11.5 时间-成本曲线 / 221 11.5.1 时间-成本相关模型 / 222 11.5.2 死亡区域 / 224 11.6 规划与风险 / 225 11.6.1 风险缓解 / 226 11.6.2 重建时间-成本曲线 / 228 11.6.3 风险模型化 / 230 11.6.4 风险包含与排除 / 232 11.7 SDP评审 / 232 第12章 高级技巧 / 234 12.1 上帝活动 / 234 12.2 风险交叉点 / 235 12.3 找到缓解目标 / 238 12.4 几何风险 / 240 12.4.1 几何临界风险 / 241 12.4.2 几何斐波那契风险 / 241 12.4.3 几何活动风险 / 242 12.4.4 几何风险行为 / 243 12.5 执行复杂度 / 244 12.5.1 圈复杂度 / 244 12.5.2 项目类型与复杂度 / 245 12.5.3 项目压缩与复杂度 / 246 12.6 超大型项目 / 247 12.6.1 复杂系统与脆弱性 / 248 12.6.2 网络群 / 250 12.6.3 设计网络群 / 250 12.7 小项目 / 253 12.8 基于层次设计 / 253 12.8.1 基于层次设计的利弊 / 254 12.8.2 层次与构造 / 255 第13章 项目设计示例 / 256 13.1 估算 / 257 13.1.1 单个活动估算 / 257 13.1.2 总体项目估算 / 258 13.2 依赖关系和项目网络 / 259 13.2.1 行为依赖 / 259 13.2.2 非行为依赖 / 259 13.2.3 覆盖某些依赖 / 260 13.2.4 完整性检查 / 260 13.3 常规方案 / 261 13.3.1 网络图 / 261 13.3.2 计划进度 / 263 13.3.3 计划的人员配备分布 / 263 13.3.4 成本和效率 / 264 13.3.5 结果总结 / 264 13.4 压缩方案 / 264 13.4.1 添加启用活动 / 264 13.4.2 分配资源 / 265 13.4.3 计划进度 / 266 13.4.4 计划的人员配备分布 / 266 13.4.5 成本和效率 / 266 13.4.6 结果总结 / 267 13.5 分层设计 / 268 13.5.1 分层设计和风险 / 268 13.5.2 人员配备分布 / 269 13.5.3 结果总结 / 269 13.6 亚临界方案 / 269 13.6.1 持续时间、计划进度和风险 / 270 13.6.2 成本和效率 / 270 13.6.3 结果总结 / 270 13.7 比较选项 / 271 13.8 计划与风险 / 271 13.8.1 风险缓解 / 271 13.8.2 重新计算成本 / 274 13.9 为SDP评审做准备 / 274 第14章 总结 / 276 14.1 项目设计时间 / 276 14.1.1 真实的答案 / 277 14.1.2 迈向未来 / 278 14.2 一般性指导 / 279 14.2.1 架构与估算 / 279 14.2.2 设计立场 / 280 14.2.3 可选性 / 280 14.2.4 压缩 / 281 14.2.5 计划与风险 / 283 14.3 项目设计的设计 / 283 14.4 不同的视角 / 285 14.5 交接 / 287 14.5.1 初级交接 / 287 14.5.2 高级交接 / 287 14.5.3 资深开发人员作为初级架构师 / 288 14.6 实践 / 289 14.7 项目设计的口头汇报 / 290 14.8 关于质量 / 291 14.8.1 质量控制活动 / 291 14.8.2 质量保证活动 / 292 14.8.3 质量与文化 / 293 |附录| 附录A 项目跟踪 / 296 附录B 服务契约设计 / 310 附录C 设计标准 / 323 ---------------------------8082131 - 架构真意:企业级应用架构设计方法论与实践--------------------------- 前言 第一部分 架构设计方法论 第1章 架构师的修炼5 1.1 何为软件架构5 1.1.1 常见研发场景6 1.1.2 准确理解软件架构7 1.2 如何成为合格的架构师9 1.2.1 架构师的职责9 1.2.2 架构师的思维模式10 1.3 如何成为顶级的架构师12 1.3.1 能够将业务转换为技术13 1.3.2 能合理利用技术支撑业务13 1.3.3 具备前瞻思维和战略思维15 1.4 “5视图法”架构设计16 第2章 逻辑架构设计18 2.1 用例模型分析19 2.1.1 用例模型20 2.1.2 由粗到细的用例分析21 2.1.3 用例描述23 2.1.4 事件流25 2.1.5 业务需求列表29 2.1.6 需求规格说明书30 2.2 界面原型分析32 2.3 领域模型分析34 2.3.1 软件退化的根源34 2.3.2 两顶帽子的设计方式38 2.3.3 领域驱动的设计思想41 2.3.4 领域驱动的变更设计42 2.3.5 领域驱动设计总结48 2.4 技术可行性分析50 第3章 数据架构设计52 3.1 数据架构的设计过程52 3.2 基于领域的数据库设计54 3.2.1 传统的4种关系55 3.2.2 继承关系59 3.2.3 NoSQL数据库的设计61 3.3 基于领域的程序设计63 3.3.1 服务、实体与值对象64 3.3.2 贫血模型与充血模型64 3.3.3 聚合70 3.3.4 仓库与工厂71 3.3.5 问题域和限界上下文75 第4章 开发架构设计78 4.1 系统规划与接口定义78 4.1.1 系统规划79 4.1.2 接口定义80 4.2 系统分层与整洁架构82 4.2.1 系统分层82 4.2.2 底层技术更迭84 4.2.3 整洁架构设计86 4.2.4 易于维护的架构88 4.3 技术中台建设90 4.3.1 增删改的架构设计91 4.3.2 查询功能的架构设计94 4.3.3 支持领域驱动的架构设计99 4.3.4 支持微服务的架构设计107 4.4 技术选型与技术规划109 4.4.1 软件正确决策的过程109 4.4.2 商用软件与开源框架110 4.5 模块划分与代码规范111 第5章 运行架构设计114 5.1 属性→场景→决策115 5.2 非功能性需求117 5.3 恰如其分的架构设计117 5.4 技术架构演化118 5.4.1 意图架构119 5.4.2 使能故事120 5.4.3 架构跑道122 5.4.4 我们的实践122 5.5 技术改造与软件重构124 5.5.1 架构师的十年奋斗125 5.5.2 演化式的技术改造思路126 5.5.3 一个遗留系统改造的故事127 第6章 物理架构设计131 6.1 集中式与分布式132 6.2 网络架构图134 6.3 系统架构与应用架构135 第二部分 分布式架构设计与实践 第7章 分布式架构设计141 7.1 互联网架构演进141 7.1.1 All-in-One架构142 7.1.2 流量在1000万以内的架构设计143 7.1.3 流量在1000万以上的架构设计147 7.1.4 流量在5000万以上的架构设计155 7.1.5 亿级流量的架构设计160 7.2 分布式技术165 7.2.1 分布式缓存165 7.2.2 内存数据库169 7.2.3 分布式事务173 7.2.4 分布式队列179 7.2.5 分布式数据库182 第8章 微服务架构设计192 8.1 为什么要采用微服务架构192 8.1.1 快速变化需要快速交付192 8.1.2 打造高效的团队组织193 8.1.3 大前端+技术中台196 8.1.4 小而专的微服务197 8.1.5 微服务中的去中心化概念199 8.1.6 互联网转型利器202 8.2 微服务的关键技术204 8.2.1 注册中心205 8.2.2 服务网关219 8.2.3 熔断机制227 8.3 微服务的系统设计235 8.3.1 6种设计模式235 8.3.2 微服务设计实践244 8.3.3 微服务测试调优262 8.4 微服务项目实战过程276 8.4.1 在线订餐系统项目实战278 8.4.2 统一语言与事件风暴278 8.4.3 子域划分与限界上下文282 8.4.4 微服务拆分与设计实现284 第9章 基于云端的分布式部署290 9.1 DevOps与快速交付290 9.2 Docker容器技术292 9.2.1 虚拟技术与容器技术292 9.2.2 对Docker容器的操作294 9.2.3 用Dockerfile制作镜像296 9.2.4 微服务的Docker容器部署297 9.2.5 Docker容器的应用298 9.2.6 搭建Docker本地私服299 9.3 Kubernetes分布式容器管理299 9.3.1 微服务发布的难题299 9.3.2 Kubernetes的运行原理300 9.3.3 Kubernetes的应用场景303 9.3.4 Kubernetes的虚拟网络304 9.3.5 用Kubernetes部署微服务305 9.3.6 用有状态集部署组件308 9.3.7 Kubernetes应用实践310 9.4 自动化运维平台实践312 第三部分 大数据架构设计 第10章 大数据时代变革319 10.1 从IT时代向DT时代转变319 10.2 数据分析与应用319 10.2.1 数据应用的发展历程320 10.2.2 数据应用的成熟度321 10.3 数据中台建设325 10.3.1 对数据中台的正确理解325 10.3.2 数据中台建设的核心326 10.3.3 数据中台的建设思路332 10.3.4 数据中台的技术架构333 第11章 大数据技术中台335 11.1 大数据技术335 11.1.1 Hadoop技术框架336 11.1.2 Spark技术框架339 11.2 大数据采集345 11.2.1 结构化数据采集346 11.2.2 非结构化数据采集347 11.3 大数据治理350 11.3.1 SparkSQL大数据开发中台351 11.3.2 ETL过程的设计实践353 11.3.3 数据仓库建设357 11.3.4 数据标签设计360 11.4 大数据展示362 11.4.1 大数据索引363 11.4.2 多维模型分析367 11.4.3 HBase数据库369 |