发规模和复杂性不断增长的大型系统需要深刻理解软件项目的实施过程。软件发人员、架构师和技术管理团队遵循高级软件设计模式(如微服务架构、事件驱动架构,以及领域驱动设计规定的策略模式),可以简化发过程。 本书涵盖了这些成熟的架构设计模式,并以前瞻性的方法帮助Python发人员管理复杂应用程序的发,令其从Python测试套件中获取最大价值。 本书从系统设计的起始阶段始,让你了解软件发的思路和项目中要考虑的重问题。书中阐述了各种架构模式,如微服务、Web服务和事件驱动架构,以及如何选择最适合你的项目的模式。然后,在建立相关概念的基础上,讨论如何行发、调试和测试,以编写高质量的代码,并为系统部署做好准备。此外,本书还讲解了当系统部署到最终用户之后如何实现持续运维,因为软件发的生命周期永无止境。 学完本书,你将形成“架构思维”:一种不一样的软件设计方法,包括对运行中的系统行调整。 通过学习本书,你将可以: ? 像架构师一样思考,分析软件架构模式。 ? 探索API设计、数据存储和数据呈现方法。 ? 探究常见架构模式的细微差别。 ? 利用微服务等架构模式的组件并实现其互操作。 ? 采用测试驱动发模式执行高质量的代码测试。 ? 将大块可重用的代码构建为软件包。 ? 保持系统向后兼容性并部署其迭代变更。
售 价:¥
纸质售价:¥97.30购买纸书
温馨提示:数字商品不支持退换货,不提供源文件,不支持导出打印
为你推荐
译者序
前言
关于作者
关于审校者
第1章 软件架构简介
1.1 设计软件系统的架构
1.2 划分为较小的单元
1.3 康威定律:对软件架构的影响
1.4 应用示例:概述
1.5 软件架构安全
1.6 小结
第一部分 设计
第2章 API设计
2.1 抽象
2.1.1 使用合适的抽象
2.1.2 抽象失效
2.1.3 资源与操作抽象
2.2 RESTful接口
2.2.1 实用性定义
2.2.2 HTTP头部及状态
2.2.3 资源设计
2.2.4 资源与参数
2.2.5 分页
2.2.6 RESTful API流程设计
2.2.7 使用Open API规范
2.3 认证
2.3.1 HTML接口认证
2.3.2 RESTful接口认证
2.4 API版本管理
2.4.1 为何需要版本管理
2.4.2 内部版本与外部版本
2.4.3 语义化版本管理
2.4.4 简单的版本管理
2.5 前端与后端
2.6 HTML接口
2.6.1 传统HTML接口
2.6.2 动态页面
2.6.3 单页应用程序
2.6.4 混合模式
2.7 API设计示例
2.7.1 端点
2.7.2 设计及实现审查
2.8 小结
第3章 数据建模
3.1 数据库的类型
3.1.1 关系数据库
3.1.2 非关系数据库
3.1.3 小型数据库
3.2 数据库事务
3.3 分布式关系数据库
3.3.1 主库/副本
3.3.2 分片
3.3.3 分片的优势和劣势
3.4 数据库模式设计
3.4.1 模式规范化
3.4.2 去规范化
3.5 数据索引
3.6 小结
第4章 数据层
4.1 模型层
4.1.1 DDD
4.1.2 使用ORM
4.1.3 工作单元模式及数据封装
4.1.4 CQRS使用不同的读写模型
4.2 数据库迁移
4.2.1 向后兼容性
4.2.2 关系数据库迁移
4.2.3 非关系数据库迁移
4.3 处理遗留数据库
4.3.1 检测数据库模式
4.3.2 同步现有模式至ORM
4.4 小结
第二部分 架构模式
第5章 十二要素App方法论
5.1 十二要素App简介
5.2 CI
5.3 可扩展性
5.4 配置
5.5 十二要素
5.5.1 一次构建,多次运行
5.5.2 依赖项和配置
5.5.3 可扩展性
5.5.4 监控和管理
5.6 容器化的十二要素App
5.7 小结
第6章 Web服务器架构
6.1 请求-响应架构
6.2 Web架构
6.3 Web服务器
6.3.1 由外部提供静态内容
6.3.2 反向代理
6.3.3 日志
6.3.4 高级用法
6.4 uWSGI
6.4.1 WSGI应用程序
6.4.2 与Web服务器交互
6.4.3 进程
6.4.4 进程生命周期
6.5 Python Worker
6.5.1 Django MVT架构
6.5.2 将请求路由到视图
6.5.3 视图
6.5.4 中间件
6.5.5 Django REST框架
6.6 外部层
6.7 小结
第7章 事件驱动架构
7.1 发送事件
7.2 异步任务
7.3 任务细分
7.4 计划任务
7.5 队列机制
7.5.1 统一Worker代码
7.5.2 云队列和Worker
7.6 Celery
7.6.1 配置Celery
7.6.2 Celery Worker
7.6.3 触发任务
7.6.4 联调
7.6.5 计划任务
7.6.6 Celery Flower
7.6.7 Flower的HTTP API
7.7 小结
第8章 高级事件驱动架构
8.1 流式事件
8.2 管道
8.2.1 准备
8.2.2 基础任务
8.2.3 图像任务
8.2.4 视频任务
8.2.5 连接任务
8.2.6 运行任务
8.3 定义总线
8.4 更复杂的系统
8.5 测试事件驱动系统
8.6 小结
第9章 微服务与单体
9.1 单体架构
9.2 微服务架构
9.3 架构选择
9.4 关键因素:团队沟通
9.5 从单体迁移到微服务
9.5.1 迁移面临的挑战
9.5.2 四步迁移
9.6 服务容器化
9.6.1 构建并运行镜像
9.6.2 构建并运行Web服务
9.7 容器编排与Kubernetes
9.8 小结
第三部分 实现
第10章 测试与TDD
10.1 代码测试
10.2 不同级别的测试
10.2.1 单元测试
10.2.2 集成测试
10.2.3 系统测试
10.3 测试理念
10.3.1 如何设计好的测试
10.3.2 构建测试
10.4 TDD
10.4.1 将TDD引入新团队
10.4.2 问题和局限性
10.4.3 TDD过程示例
10.5 Python中的单元测试
10.5.1 Python unittest
10.5.2 Pytest
10.6 测试外部依赖
10.6.1 模拟
10.6.2 依赖注入
10.6.3 OOP中的依赖注入
10.7 pytest高级用法
10.7.1 分组测试
10.7.2 使用测试固件
10.8 小结
第11章 包管理
11.1 创建新包
11.2 Python中的简单包操作
11.3 Python包管理生态
11.3.1 PyPI
11.3.2 虚拟环境
11.3.3 环境准备
11.3.4 Python包
11.4 创建软件包
11.4.1 开发模式
11.4.2 纯Python包
11.5 Cython
11.6 包含二进制代码的Python包
11.7 将包上传到PyPI
11.8 创建私有仓库
11.9 小结
第四部分 持续运维
第12章 日志
12.1 日志基础知识
12.2 用Python生成日志
12.3 通过日志检测问题
12.3.1 检测预期错误
12.3.2 捕获非预期错误
12.4 日志策略
12.5 开发过程中添加日志
12.6 日志的局限性
12.7 小结
第13章 度量
13.1 度量与日志
13.2 用Prometheus生成度量
13.2.1 环境准备
13.2.2 配置Django Prometheus
13.2.3 检查度量指标
13.2.4 启动Prometheus服务器
13.3 查询Prometheus
13.4 积极使用度量
13.5 告警
13.6 小结
第14章 性能分析
14.1 性能分析基础知识
14.2 性能分析工具的类型
14.3 代码耗时性能分析
14.3.1 使用内置的cProfile模块
14.3.2 逐行性能分析工具
14.4 局部性能分析
14.4.1 返回质数的Web服务器示例
14.4.2 过程性能分析
14.4.3 为每个请求生成性能分析文件
14.5 内存性能分析
14.5.1 使用memory_profiler
14.5.2 内存优化
14.6 小结
第15章 调试
15.1 检测并处理缺陷
15.2 生产环境分析
15.3 了解生产环境中的问题
15.3.1 记录请求ID
15.3.2 分析数据
15.3.3 增加日志记录
15.4 本地调试
15.5 Python自省工具
15.6 用日志进行调试
15.7 用断点进行调试
15.8 小结
第16章 持续架构
16.1 调整系统架构
16.2 计划内停机
16.3 事故
16.3.1 事后分析
16.3.2 事前分析
16.4 负载测试
16.5 版本管理
16.6 向后兼容性
16.6.1 渐进式变更
16.6.2 不中断式部署
16.7 功能标志
16.8 变更中的团队合作
16.9 小结
推荐阅读
买过这本书的人还买过
读了这本书的人还在读
同类图书排行榜