本书主要包含软件开发普通程序员如何向系统架构师进行转型的一些思路、方法和工程实践。全书共分为四大篇幅内容,包括:
1. 程序员向架构师转型篇,剖析架构师角色,提供架构师的视图视角,以及程序员如何向架构师成功转型的思路。
2. 系统架构设计知识领域篇,介绍软件架构体系结构、领域驱动设计、分布式系统架构、技术知识体系等架构师所应具备的主要技术体系内容。
3. 软件开发系统工程篇,介绍软件工程学、业务架构设计、敏捷方法与实践、软件交付模型等架构师所应具备的系统方法论和相关工程实践。
4. 架构师软能力篇,包括架构师与外部环境、自身团队和转型所需的意识形态。
适读人群 :立志向系统架构师转型的广大开发人员
本书包含作者基于自身在传统以及互联网行业多年的技术与管理工作经历展开论述,结合方法论和工程实践,具有较强的针对性和适用性,能帮助读者了解并掌握迈向架构师所需的各种知识体系和实践技巧。
本书在介绍技术以及过程管理的内容时,采用“思路à方法论à工程实践”的三段式模型,不光告诉读者可以怎么做,更重要的是提供了对问题的分析以及解决思路和方法论,并辅以相应的工程实践和案例分析。
本书从“向架构师转型”的角度出发,关注于转型这个特定主题给出了作者自身的一些思考和总结,从内容上填补了市场上的这一空白。
郑天民,网名天涯兰,日本足利工业大学信息管理学硕士,10年左右软件行业从业经验,在医疗、安防和电商行业都有所涉及,主持和参与过多个大型企业级应用和移动互联网系统的开发和管理工作,先后担任系统分析架构师、部门经理、技术总监等职务,目前就职于一家业界领先的电商独角兽企业。北风网特邀讲师,讲授系统架构与技术管理相关课程。善于提炼和抽象核心内容,善于知识分享和技术人员培养,对系统架构设计和技术管理有丰富的经验和较深的理解。
第一篇 程序员向架构师转型概述
第1章 程序员向架构师转型 2
1.1 架构设计基本概念 2
1.1.1 架构的基本定义 2
1.1.2 架构演进理论 4
1.1.3 架构设计与系统工程 7
1.2 剖析架构师角色 8
1.2.1 架构师角色 8
1.2.2 当程序员遇到架构师 10
1.3 架构师的视图和视角 11
1.3.1 架构师的视图 12
1.3.2 架构师的视角 16
1.3.3 视图视角与系统工程 18
1.4 程序员如何向架构师成功转型 19
1.4.1 转型成功的三段式模型 19
1.4.2 转型思维导图 20
1.4.3 作为架构师开展工作 21
1.5 本章小结 22
第二篇 软件架构设计知识体系
第2章 软件架构体系结构 24
2.1 软件体系结构 24
2.2 架构风格 25
2.2.1 分布式 25
2.2.2 事件驱动 28
2.2.3 系统结构 31
2.2.4 消息总线 32
2.2.5 适配与扩展 33
2.3 架构模式 35
2.3.1 数据访问 35
2.3.2 服务定位 36
2.3.3 异步化 38
2.3.4 资源管理 39
2.3.5 依赖管理 41
2.4 架构模型 44
2.5 本章小结 45
第3章 领域驱动设计 46
3.1 面向领域思想 46
3.1.1 架构设计与领域驱动 46
3.1.2 领域驱动设计核心概念 47
3.1.3 案例介绍 47
3.2 面向领域的策略设计 48
3.2.1 通用语言 48
3.2.2 领域与上下文 48
3.2.3 领域驱动的架构风格 51
3.2.4 案例策略设计 54
3.3 面向领域的技术设计 56
3.3.1 实体与值对象 56
3.3.2 领域服务 59
3.3.3 领域事件 60
3.3.4 聚合 62
3.3.5 资源库 64
3.3.6 集成界限上下文 65
3.3.7 应用程序 67
3.3.8 案例技术设计 67
3.4 案例实现 69
3.5 本章小结 70
第4章 分布式系统架构设计 72
4.1 分布式系统 73
4.2 RPC架构 74
4.2.1 网络通信 75
4.2.2 序列化 76
4.2.3 传输协议 77
4.2.4 服务调用 78
4.3 分布式服务架构 81
4.3.1 负载均衡与集群容错 81
4.3.2 服务路由 83
4.3.3 服务注册中心 84
4.3.4 服务发布与调用 88
4.3.5 服务监控与治理 90
4.4 分布式服务框架Dubbo剖析 91
4.4.1 Dubbo核心功能 91
4.4.2 Dubbo原理分析 94
4.5 微服务架构 102
4.5.1 微服务实现策略 103
4.5.2 微服务实现技术 104
4.5.3 微服务实现案例 108
4.6 本章小结 109
第5章 架构实现技术体系 110
5.1 缓存与性能优化 111
5.1.1 性能概述 111
5.1.2 Memcached 112
5.1.3 Redis 116
5.1.4 Nginx 120
5.2 消息传递系统 122
5.2.1 消息中间件需求 122
5.2.2 JMS 123
5.2.3 AMQP 126
5.2.4 Kafka 129
5.3 企业服务总线 130
5.3.1 服务总线解决方案 130
5.3.2 集成化端点 136
5.4 数据分析处理 140
5.4.1 轻量级批处理 140
5.4.2 Spring Batch 142
5.5 安全性 147
5.5.1 安全性概述 147
5.5.2 安全性实现技术 148
5.6 本章小结 151
第三篇 软件架构设计系统工程
第6章 软件工程学 154
6.1 软件工程学概述 154
6.2 软件实现 155
6.2.1 需求工程 155
6.2.2 系统建模与案例分析 157
6.2.3 软件实现与架构师 165
6.3 项目管理 166
6.3.1 项目管理体系 167
6.3.2 项目研发过程的透明化管理 173
6.3.3 项目管理与架构师 178
6.4 过程改进 179
6.4.1 软件过程模型 179
6.4.2 软件过程改进 181
6.4.3 过程改进与架构师 182
6.5 本章小结 183
第7章 敏捷方法与实践 184
7.1 敏捷方法论概述 184
7.2 极限编程与工程实践 186
7.2.1 极限编程方法 186
7.2.2 极限编程工程实践 186
7.3 Scrum与过程管理 191
7.3.1 Scrum简介 191
7.3.2 Scrum框架 192
7.3.3 如何进行敏捷回顾案例分析 194
7.4 敏捷方法论与架构师 198
7.4.1 敏捷开发中架构师的角色 198
7.4.2 识别和消除研发过程浪费 199
7.5 本章小结 204
第8章 软件交付模型 205
8.1 软件交付模型概述 205
8.2 配置管理 206
8.2.1 配置管理概述 206
8.2.2 配置管理模式与实践 209
8.2.3 SVN/GIT基本应用与实践 210
8.2.4 系统版本控制策略案例分析 214
8.3 持续集成 217
8.3.1 持续集成理念 217
8.3.2 Jenkins应用 219
8.4 交付工作流 219
8.5 本章小结 220
第四篇 架构师软技能
第9章 架构师必备软技能 222
9.1 架构师与外部环境 222
9.1.1 政治与协商 223
9.1.2 沟通 224
9.1.3 邮件 227
9.2 架构师与自身团队 231
9.2.1 领导力 231
9.2.2 知识管理 232
9.2.3 人员管理 235
9.2.4 绩效管理 237
9.3 架构师与意识形态 240
9.3.1 思维模式 241
9.3.2 引入变化 241
9.4 本章小结 245
参考文献 246