作者 |
方坤丁 孙远高 陈耿 |
丛书名 |
云计算与虚拟化技术丛书 |
出版社 |
机械工业出版社 |
ISBN |
9782106081720 |
简要 |
简介 |
本书作者是微软全球黑带技术专家,曾就职于Red Hat和Oracle等知名软件企业。本书汇聚了他在Red Hat和微软等云计算公司的实践经验,得到了来自阿里、腾讯、微软和亚马逊等一线云计算公司的技术专家的好评和推荐。 在内容上,本书不仅详细介绍Serverless的技术原理、应用架构,以及与之相关的各种技术主题,而且深入讲解了公有云和私有云下的各种主流Serverless平台、架构和工具的原理、架构和使用细节。 全书在逻辑上分为五个部分: 第一部分(第1~3章) 首先,介绍了Serverless的价值、技术特点、应用场景、技术原理、应用架构,以及局限性;其次,介绍了云计算、容器、微服务、PaaS、BaaS、FaaS、DevOps、云原生应用等技术及其与Serverless的关系;最后,介绍了Serverless与各种公有云、私有云之间的关系,以及Serverless的各种框架和工具。 第二部分(第4~5章) 详细介绍了基于AWS Lambda和Azure Functions等公有云平台的Serverless技术和服务。 第三部分(第6章) 基于Docker和Kubernetes介绍了容器的基础技术。 第四部分(第7~10章) 详细介绍了基于OpenWhisk、Kubeless、Fission及OpenFaaS等私有云平台的Serverless技术和服务。 第五部分(第11章) 总结了Serverless的落地方法和要点,如平台建设、应用架构转型,以及Serverless的未来发展趋势。 |
目录 |
[套装书具体书目] 8054378 - 深入浅出Serverless:技术原理与应用实践 - 9787111613473 - 机械工业出版社 - 定价 69 8081292 - Serverless从入门到进阶:架构、原理与实践 - 9787111682554 - 机械工业出版社 - 定价 89 ---------------------------8081292 - Serverless从入门到进阶:架构、原理与实践--------------------------- 前 言 第1章 全面了解Serverless 1 1.1 什么是Serverless 1 1.1.1 初识Serverless 1 1.1.2 Serverless特性举例 2 1.2 Serverless的发展历程 3 1.2.1 Serverless的产生 4 1.2.2 Serverless发展里程碑 5 1.3 Serverless的优缺点 7 1.4 Serverless的应用场景 9 1.5 Serverless框架和生态 10 1.6 本章小结 11 第2章 Serverless架构 13 2.1 Serverless架构概述 13 2.1.1 Serverless = FaaS + BaaS 13 2.1.2 传统应用架构分析 15 2.1.3 典型Serverless应用架构 16 2.1.4 Serverless架构与传统架构 17 2.2 FaaS架构介绍 17 2.2.1 FaaS架构组成 18 2.2.2 FaaS架构执行流程 18 2.3 BaaS服务介绍 20 2.3.1 BaaS服务的产生背景 20 2.3.2 BaaS服务的分类 20 2.4 Serverless服务构建的思维方式 21 2.5 本章小结 22 第3章 Serverless原理详解:FaaS层 23 3.1 事件模型 23 3.1.1 FaaS事件模型 23 3.1.2 常见触发器介绍 25 3.2 错误处理和重试机制 26 3.3 生命周期 27 3.4 冷启动优化 28 3.4.1 冷启动的产生 29 3.4.2 平台侧冷启动的优化 31 3.4.3 用户侧冷启动的规避 31 3.5 部署第一个Serverless实例 32 3.5.1 部署Hello World函数示例 32 3.5.2 参数定义 34 3.6 运行时和自定义运行时 34 3.6.1 运行时和自定义运行时的概念 35 3.6.2 自定义运行时示例 37 3.7 本章小结 39 第4章 Serverless原理详解:BaaS层 41 4.1 Serverless接入层:API网关 41 4.1.1 基本概念 42 4.1.2 网关和FaaS的联动 43 4.2 Serverless和存储 45 4.2.1 基本概念 46 4.2.2 对象存储 47 4.2.3 文件存储 49 4.2.4 存储和FaaS的联动 52 4.3 Serverless和数据库 61 4.3.1 基本概念 61 4.3.2 数据库和FaaS的联动 62 4.4 Serverless和消息队列 67 4.4.1 基本概念 67 4.4.2 消息队列和FaaS的联动 69 4.5 Serverless和日志服务 71 4.5.1 基本概念 71 4.5.2 日志服务和FaaS的联动 73 4.6 其他扩展能力 74 4.7 本章小结 76 第5章 Serverless开发工具及调试能力 77 5.1 Serverless Framework 78 5.1.1 YAML配置文件 79 5.1.2 什么是Serverless Plugin 79 5.1.3 什么是Serverless Component 80 5.1.4 Serverless Plugin与Serverless Component 81 5.1.5 安装和使用 81 5.1.6 Serverless Component部署原理 82 5.1.7 版本对比 84 5.2 Apex 85 5.2.1 安装使用 85 5.2.2 实时日志 87 5.2.3 监控数据 87 5.3 Serverless云端调试 88 5.4 本章小结 92 第6章 Serverless排障 93 6.1 Serverless监控及告警 93 6.1.1 基础指标监控 94 6.1.2 应用级别监控 94 6.1.3 Serverless告警 99 6.2 Serverless日志 100 6.3 本章小结 102 第7章 Serverless CI/CD 103 7.1 CI/CD概念和介绍 104 7.1.1 持续集成 104 7.1.2 持续交付 105 7.1.3 持续部署 105 7.1.4 CI/CD的优点 106 7.2 Serverless CI/CD介绍 106 7.3 CI/CD工具介绍 108 7.4 GitHub Actions 109 7.4.1 基本概念 110 7.4.2 创建第一个工作流 111 7.4.3 Workflow文件 114 7.4.4 Serverless结合GitHub Actions示例 116 7.5 Coding DevOps服务 123 7.6 AWS CodePipeline服务 126 7.7 本章小结 127 第8章 Serverless工作流 128 8.1 Serverless应用内的状态管理 128 8.2 Serverless状态机 130 8.2.1 状态机简介 130 8.2.2 AWS Step Function 131 8.2.3 典型场景 133 8.3 本章小结 136 第9章 Serverless资源管理和编排 137 9.1 AWS资源编排工具 137 9.1.1 AWS Cloud Formation 137 9.1.2 AWS SAM 140 9.2 Terraform 142 9.2.1 Terraform简介 142 9.2.2 使用Terraform管理云资源 143 9.3 Serverless Component 145 9.4 本章小结 147 第10章 开发Serverless Web服务:RESTful API 148 10.1 Serverless Web服务 148 10.1.1 传统的Web服务 148 10.1.2 Web框架迁移到Serverless的原理 149 10.1.3 Express.js框架开发转化层 150 10.1.4 Node.js HTTP服务监听方式的选择 152 10.1.5 转化层代码编写 153 10.2 理解RESTful架构 155 10.3 RESTful API的开发 157 10.3.1 初始化项目 157 10.3.2 Express路由的使用 158 10.3.3 改造成可执行的云函数 160 10.3.4 编写RESTful风格的服务 162 10.3.5 如何操作云数据库 164 10.4 部署应用 171 10.4.1 手动打包部署 171 10.4.2 通过Serverless Framework工具部署 174 10.5 本章小结 176 第11章 Serverless后台管理系统 177 11.1 Egg.js框架简介 178 11.2 系统框架设计 178 11.3 数据库设计 179 11.4 创建数据库 180 11.5 开发准备 182 11.6 开发后端服务 183 11.7 后端服务部署 195 11.7.1 准备工作 195 11.7.2 配置serverless.yml 196 11.7.3 开始部署 197 11.7.4 账号配置(可选) 198 11.8 前端开发 199 11.8.1 删除接口模拟 199 11.8.2 修改接口函数 200 11.8.3 修改接口工具函数 202 11.8.4 修改UI界面 205 11.9 前端部署 205 11.9.1 创建serverless.yml配置文件 205 11.9.2 执行部署 206 11.10 部署优化 207 11.10.1 改造后端YML配置 208 11.10.2 新增层配置 208 11.10.3 部署层 209 11.10.4 管理系统项目模板 210 11.11 本章小结 211 第12章 Serverless和前端的天作之合:服务端渲染SSR 212 12.1 SSR与Serverless 212 12.2 快速将SSR应用Serverless化 214 12.3 性能分析 219 12.4 方案对比分析 222 12.5 Serverless部署方案的优化 223 12.5.1 通过COS托管静态资源 224 12.5.2 静态资源配置CDN 227 12.5.3 静态资源优化前后对比 229 12.5.4 基于层部署node_modules 229 12.6 本章小结 232 第13章 基于Serverless的短链接服务 233 13.1 什么是短链接 233 13.2 短链接基本原理 234 13.3 创建数据库 235 13.3.1 表结构 235 13.3.2 创建PostgreSQL数据库 236 13.4 服务开发 241 13.4.1 TypeScript简介 241 13.4.2 基于Express服务开发 242 13.4.3 前端页面 251 13.4.4 服务Serverless化 255 13.5 本章小结 257 第14章 Serverless消息实时推送:结合WebSocket实现外卖点单系统 258 14.1 消息实时推送 258 14.2 基于Serverless实现WebSocket外卖点单系统 260 14.2.1 基于Serverless实现WebSocket协议 260 14.2.2 系统架构说明 262 14.3 应用开发及部署 263 14.4 本章小结 270 第15章 Serverless展望:云计算的下个十年 271 15.1 Serverless研究趋势 271 15.2 Serverless研究成果和亮点 273 15.2.1 Serverless和机器学习 273 15.2.2 Serverless文件系统 275 15.2.3 Serverless数据中心 277 15.3 Serverless未来的发展趋势 278 15.4 本章小结 280 ---------------------------8054378 - 深入浅出Serverless:技术原理与应用实践--------------------------- 前言 第1章 Serverless基础1 1.1 什么是Serverless1 1.2 Serverless带来的价值3 1.3 Serverless的技术实现4 1.3.1 理念与实现4 1.3.2 FaaS与BaaS5 1.4 Serverless应用架构7 1.4.1 传统应用架构7 1.4.2 Serverless应用架构7 1.4.3 两种架构的比较8 1.5 Serverless的技术特点9 1.6 Serverless的应用场景11 1.7 Serverless的局限12 1.8 本章小结13 第2章 Serverless与相关技术15 2.1 云计算15 2.1.1 从私有数据中心到云15 2.1.2 IaaS、PaaS与SaaS16 2.1.3 Serverless与云计算17 2.2 微服务18 2.2.1 从SOA到微服务18 2.2.2 微服务的价值与挑战19 2.2.3 Serverless与微服务19 2.3 容器20 2.3.1 容器技术的兴起20 2.3.2 Serverless与容器21 2.4 PaaS22 2.4.1 以应用为中心22 2.4.2 Serverless与PaaS23 2.5 FaaS24 2.5.1 Serverless实现的基础24 2.5.2 FaaS的架构24 2.5.3 函数的生命周期25 2.5.4 函数工作流26 2.6 BaaS26 2.6.1 BaaS的价值26 2.6.2 广义的Serverless27 2.7 NoOps27 2.7.1 无人运维吗27 2.7.2 “无服务器”与“无人运维”28 2.8 DevOps28 2.9 云原生应用29 2.9.1 因云而生29 2.9.2 Serverless与Cloud Native29 2.10 本章小结30 第3章 Serverless的实现31 3.1 Serverless技术的发展31 3.2 Serverless与公有云33 3.2.1 Amazon Web Services34 3.2.2 Microsoft Azure36 3.2.3 Google Cloud Platform38 3.2.4 Webtask39 3.2.5 Hyper.sh39 3.2.6 阿里云40 3.2.7 腾讯云42 3.2.8 小结43 3.3 Serverless与私有化部署43 3.3.1 OpenWhisk43 3.3.2 Fission44 3.3.3 Kubeless45 3.3.4 OpenFaaS45 3.3.5 Fn47 3.3.6 小结48 3.4 Serverless框架和工具49 3.4.1 Serverless Framework49 3.4.2 Chalice50 3.4.3 Claudia.js50 3.4.4 Apex51 3.4.5 Spring Cloud Function51 3.4.6 AWS SAM52 3.4.7 小结53 3.5 Serverless后台服务53 3.6 本章小结54 第4章 AWS Lambda55 4.1 AWS55 4.2 AWS Serverless56 4.3 AWS Lambda概述57 4.4 第一个Serverless应用58 4.4.1 获取AWS账号58 4.4.2 AWS Lambda控制面板59 4.4.3 创建函数61 4.4.4 编辑函数62 4.4.5 测试函数63 4.4.6 外部访问63 4.4.7 运维监控66 4.4.8 回顾66 4.5 权限控制66 4.5.1 IAM67 4.5.2 策略68 4.5.3 角色68 4.6 编程模型69 4.6.1 代码开发69 4.6.2 Handler70 4.6.3 执行上下文70 4.6.4 日志输出71 4.6.5 异常处理72 4.6.6 无状态72 4.7 事件驱动73 4.7.1 事件源73 4.7.2 触发模式74 4.8 日志监控75 4.9 开发辅助77 4.9.1 环境变量77 4.9.2 标签77 4.9.3 版本控制78 4.10 运行限制78 4.10.1 资源限制79 4.10.2 并发控制79 4.11 配置与部署79 4.12 本章小结81 第5章 Azure Functions83 5.1 Microsoft Azure83 5.2 Azure Functions概述85 5.3 创建Azure Serverless应用86 5.3.1 注册Azure账号86 5.3.2 Azure控制台87 5.3.3 函数应用88 5.3.4 创建函数90 5.3.5 调用函数92 5.3.6 日志与监控93 5.4 Azure Functions命令行95 5.4.1 安装命令行95 5.4.2 创建本地函数96 5.4.3 测试本地函数97 5.4.4 发布至公有云98 5.5 深入了解Azure Functions99 5.5.1 函数应用设置99 5.5.2 Trigger与Bindings101 5.5.3 函数代理103 5.5.4 Slot104 5.6 私有云部署105 5.7 本章小结107 第6章 容器技术基础108 6.1 什么是容器108 6.1.1 容器109 6.1.2 容器镜像110 6.1.3 镜像仓库110 6.1.4 容器编排111 6.1.5 容器与Serverless111 6.2 Docker111 6.2.1 Vagrant111 6.2.2 VirtualBox112 6.2.3 安装Docker113 6.2.4 运行容器114 6.2.5 构建容器镜像116 6.2.6 分享镜像117 6.3 Kubernetes基础118 6.3.1 命名空间120 6.3.2 Pod120 6.3.3 Service120 6.3.4 Deployment120 6.3.5 ReplicaSet121 6.3.6 网络121 6.3.7 Ingress121 6.3.8 交互工具122 6.4 构建Kubernetes环境122 6.4.1 启动Vagrant Box123 6.4.2 修改默认域124 6.5 Kubernetes实战124 6.5.1 部署容器124 6.5.2 弹性扩展126 6.5.3 服务发现127 6.5.4 资源组织128 6.5.5 容器调度129 6.6 本章小结131 第7章 OpenWhisk132 7.1 OpenWhisk项目132 7.2 Hello Whisk133 7.3 逻辑架构135 7.3.1 Namespace136 7.3.2 Package136 7.3.3 Action137 7.3.4 Feed141 7.3.5 Trigger141 7.3.6 Rule142 7.4 系统架构143 7.5 Kubernetes部署146 7.5.1 准备Kubernetes集群146 7.5.2 集群基础设置146 7.5.3 创建访问入口149 7.5.4 部署组件149 7.5.5 加载系统配置153 7.5.6 测试集群153 7.5.7 删除集群154 7.6 Helm部署155 7.6.1 安装Helm155 7.6.2 环境配置155 7.6.3 部署Chart156 7.6.4 管理应用156 7.7 蛋糕管理服务156 7.7.1 开发环境157 7.7.2 准备数据库157 7.7.3 定义Action157 7.7.4 创建Package159 7.7.5 部署Action160 7.7.6 发布API161 7.8 本章小结162 第8章 Kubeless163 8.1 Kubeless项目163 8.1.1 系统架构164 8.1.2 运行时165 8.2 Kubeless概述165 8.2.1 部署Kubeless165 8.2.2 配置客户端166 8.2.3 部署函数167 8.2.4 Kubeless UI168 8.3 Function169 8.3.1 函数部署170 8.3.2 函数调用172 8.3.3 资源限制172 8.3.4 自动扩展173 8.4 Trigger173 8.4.1 HTTP Trigger173 8.4.2 Cronjob Trigger175 8.4.3 Kafka Trigger175 8.4.4 NATS Trigger178 8.5 本章小结179 第9章 Fission180 9.1 Fission项目180 9.1.1 逻辑架构180 9.1.2 系统架构181 9.2 部署Fission182 9.2.1 安装Helm182 9.2.2 部署Fission Chart182 9.2.3 命令行工具183 9.2.4 Hello Fission183 9.3 深入探讨Fission184 9.3.1 Environment185 9.3.2 Function187 9.3.3 Package188 9.3.4 Trigger191 9.4 执行模式192 9.4.1 Pool-based模式192 9.4.2 New Deploy模式193 9.5 Workflows194 9.5.1 Workflows定义194 9.5.2 配置Workflows195 9.5.3 Fortune Whale195 9.6 本章小结197 第10章 OpenFaaS199 10.1 OpenFaaS项目199 10.1.1 OpenFaaS社区200 10.1.2 系统架构200 10.2 初识OpenFaaS200 10.2.1 部署组件201 10.2.2 命令行工具202 10.2.3 创建函数202 10.2.4 图形界面203 10.3 OpenFaaS函数203 10.3.1 抽象方式203 10.3.2 函数模板204 10.3.3 创建函数205 10.3.4 构建函数206 10.3.5 推送镜像207 10.3.6 部署函数207 10.4 Watchdog208 10.4.1 工作原理208 10.4.2 配置Watchdog209 10.4.3 of-watchdog210 10.5 监控210 10.5.1 监控指标210 10.5.2 监控面板210 10.5.3 监控预警213 10.6 弹性扩展214 10.6.1 基于Alertmanager扩展214 10.6.2 基于HPA扩展215 10.7 函数应用市场215 10.8 本章小结217 第11章 Serverless的落地与展望218 11.1 Serverless的落地218 11.2 Serverless平台建设219 11.2.1 公有云219 11.2.2 私有云220 11.2.3 混合云220 11.3 Serverless应用架构转型223 11.3.1 开发模式223 11.3.2 设计原则225 11.3.3 迁移与重构226 11.4 Serverless的未来227 11.4.1 建立行业规范228 11.4.2 完善工具链229 11.4.3 深入结合容器229 11.5 本章小结230 后记232 |