本站支持尊重有效期内的版权/著作权,所有的资源均来自于互联网网友分享或网盘资源,一旦发现资源涉及侵权,将立即删除。希望所有用户一同监督并反馈问题,如有侵权请联系站长或发送邮件到ebook666@outlook.com,本站将立马改正
图书基本信息 | |
图书名称 | 基于Python的DevOps |
作者 | [美]诺亚·吉夫特,[美]肯尼迪·贝尔曼,[美]阿尔弗雷多· |
定价 | 128元 |
出版社 | 中国电力出版社 |
ISBN | 9787519864415 |
出版日期 | 2022-03-01 |
字数 | 694000 |
页码 | 532 |
版次 | |
装帧 | 平装 |
开本 | 16开 |
商品重量 |
内容提要 | |
Python基础知识,简单介绍语言特性。 如何自动处理文本,编写命令行工具和自动处理文件系统。 Linux实用程序、包管理、构建系统、监控、监测和自动化测试。 云计算、IaC、Kuberes和Serverless。 站在DevOps的角度探讨机器学习和数据工程。 构建、部署和优化一个机器学习项目。 |
目录 | |
目录 前言 . 1 章 PythoDevOps 基础知识 11 1.1 安装和运行Pytho12 1.1.1 Pythoshell 12 1.1.2 Jupyter Notebooks13 1.2 过程式程序设计 13 1.2.1 变量 14 1.2.2 基本的数学运算 15 1.2.3 注释 15 1.2.4 内置函数16 1.3 执行控制 17 1.3.1 if/elif/else .17 1.3.2 for 循环 .18 1.3.3 while 循环 20 1.4 处理异常 20 1.5 内置对象 21 1.5.1 对象是什么 .21 1.5.2 对象的方法和属性 22 1.5.3 序列 23 1.6 函数 .35 1.6.1 函数剖析36 1.6.2 函数是对象 .37 1.6.3 匿名函数38 1.7 使用正则表达式 39 1.7.1 搜索 39 1.7.2 字符集合40 1.7.3 字符类 41 1.7.4 分组 41 1.7.5 具名分组42 1.7.6 查找所有42 1.7.7 查找迭代器 .42 1.7.8 替换 43 1.7.9 编译 43 1.8 惰性求值 44 1.8.1 生成器 44 1.8.2 生成器推导 .45 1.9 更多IPytho功能 .46 1.9.1 在IPytho中运行UNIX shell 命令46 1.9.2 使用IPytho的魔法命令 47 1.10 练习题 .47 第2 章 文件和文件系统自动化处理 49 2.1 读写文件 49 2.2 使用正则表达式搜索文本 .59 2.3 处理大型文件 .61 2.4 加密文本 62 2.4.1 哈希和hashlib 63 2.4.2 使用Cryptography 库加密 63 2.5 os 模块 65 2.6 使用os.path 管理文件和目录 .67 2.7 使用os.walk 遍历目录树 70 2.8 使用pathlib 处理路径对象 71 第3 章 使用命令行 . 73 3.1 使用shell 73 3.1.1 使用sys 模块探知系统信息 73 3.1.2 使用os 模块处理操作系统 .74 3.1.3 使用subprocess 模块派生进程 .75 3.2 编写命令行工具 77 3.2.1 使用sys.argv .79 3.2.2 使用argparse .81 3.2.3 使用click .85 3.2.4 使用fire 90 3.2.5 实现插件系统 95 3.3 案例分析:使用命令行工具提速Pytho96 3.3.1 使用Numba JIT 编译器 97 3.3.2 通过PythoCUDA 使用GPU 99 3.3.3 使用Numba 真正多核多线程运行Pytho代码 100 3.3.4 k 均值聚类算法 .101 3.4 练习题 .103 第4 章 Linux 实用程序 105 4.1 磁盘实用程序 106 4.1.1 衡量性能106 4.1.2 分区 .108 4.1.3 获取特定的设备信息 109 4.2 网络实用程序 111 4.2.1 SSH 隧道 111 4.2.2 使用Apache Benchmark(ab)评测 . 112 4.2.3 使用molotov 做负载测试 . 113 4.3 CPU 实用程序 . 116 4.3.1 CPU 实用程序简介 116 4.3.2 使用htop 查看进程 . 116 4.4 使用Bash 和ZSH 118 4.4.1 自定义Pythoshell . 119 4.4.2 递归路径模式匹配 120 4.4.3 搜索和替换确认提示 120 4.4.4 删除Pytho临时文件 122 4.4.5 列出和筛选进程 122 4.4.6 UNIX 时间戳 123 4.5 Pytho与Bash 和ZSH 混合使用 124 4.5.1 密码生成器 124 4.5.2 这个模块是否存在 125 4.5.3 进入模块所在的目录 125 4.5.4 把CSV 文件转换成JSON 文件 .126 4.6 Pytho单行程序 .127 4.6.1 调试器 127 4.6.2 这段代码的运行速度有多快 128 4.7 strace .129 4.8 练习题 .131 4.9 实操题 .132 第5 章 包管理 133 5.1 打包简介 .134 5.1.1 打包的重要4 5.1.2 何时不需要打包 134 5.2 打包准则 .135 5.2.1 恰当的版本号 .135 5.2.2 更改日志136 5.3 选择一种策略 137 5.4 打包方案 .138 5.4.1 Pytho原生包 138 5.4.2 Debia包 145 5.4.3 RPM 包 153 5.5 使用systemd 管理服务 160 5.5.1 长时间运行的进程 161 5.5.2 创建项目161 5.5.3 systemd 单元文件 .163 5.5.4 安装单元164 5.5.5 处理日志166 5.6 练习题 .167 5.7 实操题 .168 第6 章 持续集成和持续部署 . 169 6.1 真实案例分析:把维护不善的WordPress 网站转换成Hugo 169 6.1.1 设置Hugo .171 6.1.2 把WordPress 文章转换成Hugo 文章 .172 6.1.3 创建并更新Algolia 索引 174 6.1.4 使用Makefile 编排流程 176 6.1.5 使用AWS CodePipeline 部署 .176 6.2 真实案例分析:使用Google Cloud Build 把Pytho应用部署到 Google App Engine 中 178 6.3 真实案例分析:NFSOPS 185 第7 章 监控和日志 187 7.1 构建可靠系统的关键概念 187 7.2 不可变的DevOps 原则 188 7.2.1 集中处理日志 .188 7.2.2 案例分析:生产数据库塞满硬盘 .189 7.2.3 自建还是购买? 190 7.2.4 容错 .190 7.3 监控 192 7.3.1 Graphite .192 7.3.2 StatsD .192 7.3.3 Prometheus 193 7.4 监测程序 .197 7.4.1 监测程序概述 .197 7.4.2 命名约定200 7.5 日志 201 7.5.1 为什么很难 202 7.5.2 basicconfig 202 7.5.3 深度配置203 7.5.4 常用模式208 7.6 ELK 栈 .209 7.6.1 Logstash .210 7.6.2 Elasticsearch 和Kibana .212 7.7 练习题 .215 7.8 实操题 .216 第8 章 pytest 在DevOps 中的应用 217 8.1 测试小钢炮pytest 217 8.2 pytest 入门 .218 8.2.1 使用pytest 测试 218 8.2.2 与unittest 的区别 .220 8.3 pytest 特性 .222 8.3.1 conftest.py 223 8.3.2 出色的assert223 8.3.3 参数化 225 8.4 固件 226 8.4.1 入门 .227 8.4.2 内置固件229 8.5 基础设施测试 231 8.5.1 什么是系统验证 232 8.5.2 Testinfra 简介 .233 8.5.3 连接远程节点 .233 8.5.4 特性和特殊固件 237 8.5.5 案例 .238 8.6 使用pytest 测试Jupyter Notebooks 241 8.7 练习题 .242 8.8 实操题 .242 第9 章 云计算 243 9.1 云计算基础知识 .244 9.2 云计算的类型 246 9.3 云服务的类型 246 9.3.1 IaaS 247 9.3.2 MaaS 251 9.3.3 PaaS .251 9.3.4 Serverless 252 9.3.5 SaaS .255 9.4 IaC .256 9.5 持续交付 .256 9.6 虚拟化和容器 256 9.6.1 硬件虚拟化 256 9.6.2 SDN .257 9.6.3 SDS .257 9.6.4 容器 .257 9.7 分布式计算面临的挑战和机遇 258 9.8 云时代Pytho的并发、性能和进程管理 260 9.9 进程管理 .261 9.9.1 使用subprocess 管理进程 261 9.9.2 使用multiprocessing 库解决问题 .263 9.9.3 使用Pool 派生进程 264 9.9.4 FaaS 和Serverless 267 9.9.5 使用Numba 提升Pytho的性能 267 9.9.6 使用Numba JIT 编译器 .267 9.9.7 使用高性能服务器 268 9.10 小结 269 9.11 练习题 269 9.12 实操题 270 0 章 IaC 271 10.1 基础设施自动化工具分类 272 10.2 手动配置 274 10.3 使用Terraform 自动配置基础设施 .275 10.3.1 配置S3 bucket .276 10.3.2 使用ACM 配置SSL 证书 .279 10.3.3 配置AmazoCloudFront 分配 280 10.3.4 配置Route 53 DNS 记录 283 10.3.5 把静态文件复制到S3 中 284 10.3.6 删除使用Terraform 配置的所有AWS 资源 .285 10.4 使用Pulumi 自动配置基础设施285 10.4.1 为AWS 新建一个Pulumi Pytho项目 286 10.4.2 为过渡堆栈创建配置值 291 10.4.3 配置一个ACM SSL 证书 291 10.4.4 配置Route 53 区域和DNS 记录 292 10.4.5 配置一个CloudFront 分配 .295 10.4.6 为网站的URL 配置一个Route 53 DNS 记录 296 10.4.7 创建并部署一个新堆栈 297 10.5 练习题 300 1 章 容器技术:Docker 和Docker Compose 301 11.1 Docker 容器是什么 .302 11.2 创建、构建、运行及删除Docker 映像和容器 .302 11.3 把Docker 映像发布到Docker 注册处中 .306 11.4 使用相同的映像在不同的宿主机中运行Docker 容器 308 11.5 使用Docker Compose 运行多个Docker 容器 310 11.6 把Docker Compose 运行的服务移植到新主机和操作系统中 323 11.7 练习题 327 2 章 容器编排:Kuberes . 329 12.1 Kuberes 相关概念简述 330 12.2 使用Kompose 根据docker-pose.yaml 创建Kuberes 清单 331 12.3 使用minikube 把Kuberes 清单部署到本地Kuberes 集群 .333 12.4 在GCP 中使用Pulumi 创建GKE Kuberes 集群 349 12.5 把Flask 示例应用部署到GKE 中 352 12.6 安装Helm chart Prometheus 和Grafana 359 12.7 销毁GKE 集群 .364 12.8 练习题 365 3 章 Serverless 技术 367 13.1 把同一个Pytho函数部署到三大云服务商中 .370 13.1.1 安装Serverless 框架 .370 13.1.2 把Pytho函数部署到AWS Lambda 中 .370 13.1.3 把Pytho函数部署到Google Cloud Functions 中 373 13.1.4 把Pytho函数部署到Azure 中 380 13.2 把Pytho函数部署到自托管的FaaS 平台中 384 13.2.1 把Pytho函数部署到自托管的PaaS 平台的优势 384 13.2.2 把Pytho函数部署到OpenFaaS 中 .385 13.3 使用AWS CDK 配置DynamoDB 数据表、Lambda 函数和 API 网关方法 .393 13.4 练习题 415 4 章 MLOps 和机器学习工程 417 14.1 机器学习是什么 417 14.1.1 监督型机器学习 .417 14.1.2 建模 420 14.2 Pytho机器学习生态环境 423 14.2.1 Pytho机器学习框架和生态系统 423 14.2.2 PyTorch 深度学习 424 14.3 机器学习云平台 428 14.4 机器学习成熟模型 429 14.4.1 机器学习重点术语 .429 14.4.2 层:问题构建、范围界定和问题定义 430 14.4.3 第2 层:持续交付数据 431 14.4.4 第3 层:持续交付净化数据 .432 14.4.5 第4 层:持续交付探索性数据分析 434 14.4.6 第5 层:持续交付传统机器学习和AutoML 434 14.4.7 第6 层:机器学习运作反馈环 435 14.5 使用Docker 和Kuberes 部署sklearFlask 应用 435 14.5.1 EDA 440 14.5.2 建模 441 14.5.3 调整GBM 缩放 442 14.5.4 拟合模型 .443 14.5.5 评估 444 14.5.6 adhoc_predict 445 14.5.7 JSON 工作流 446 14.5.8 缩放输入 .446 14.5.9 adhoc_predict 447 14.5.10 缩放输入 448 14.6 练习题 448 14.7 实操题 449 14.8 学习评价 449 5 章 数据工程 . 451 15.1 小数据 452 15.1.1 小数据与大数据 .452 15.1.2 处理小数据文件 .452 15.2 写文件 453 15.3 读文件 453 15.4 使用生成器流水线逐行读取和处理 453 15.5 使用YAML .454 15.6 大数据 455 15.7 大数据工具、组件和平台 457 15.7.1 数据源 .458 15.7.2 文件系统 .458 15.7.3 数据存储 .459 15.7.4 实时流式采集 460 15.8 案例分析:自制数据流水线 461 15.9 Serverless 数据工程 462 15.9.1 使用AWS Lambda 处理CloudWatch 事件 463 15.9.2 使用AmazoCloudWatch 日志分析AWS Lambda 463 15.9.3 使用AWS Lambda 填充AmazoSimple Queue Service .464 15.9.4 连接CloudWatch 事件触发器 468 15.9.5 创建事件驱动型lambda .469 15.9.6 从AWS Lambda 中读取AmazoSQS 事件 .470 15.10 小结 .474 15.11 练习题 .475 15.12 实操题 .475 6 章 DevOps 惨痛经验和人物访谈 . 477 16.1 产不出电影的电影厂 .478 16.2 推不出游戏的游戏坊 .480 16.3 耗时60 秒才启动的Pytho脚本 .482 16.4 用缓存和智能监测程序浇灭火情 483 16.5 自动化会让你失业 484 16.6 DevOps 反模式 .485 16.6.1 反模式:没有自动化构建服务器 485 16.6.2 盲目行事 .486 16.6.3 协调难题不可避免 .486 16.6.4 没有团队合作 487 16.7 人物访谈 492 16.7.1 GlenSolomo492 16.7.2 Andrew Nguye493 16.7.3 Gabriella Roma.495 16.7.4 Rigoberto Roche .496 16.7.5 JonathaLaCour .498 16.7.6 Ville Tuulos 500 16.7.7 Joseph Reis 502 16.7.8 Teijo Holzer 503 16.7.9 Matt Harriso505 16.7.10 Michael Foord 507 16.8 一些建议 510 16.9 练习题 511 16.10 挑战题 . 511 16.11 毕业项目 511 |
作者介绍 | |
Noah Gift是西北大学和杜克大学研究生院数据科学专业与工程项目的讲师和顾问。 Kennedy Behrman是一位资深顾问,专门为初创企业设计和实施云解决方案。 Alfredo Deza是一位软件工程师和开源软件开发者,他重建了公司的基础设施。 Grig Gheorghiu是一名程序员、研究实验室主任、系统/网络/安全架构师和软件测试工程师。 |