作者:胡屹,PHP程序员,Web后端工程师,技术图书译者,译作有《计算机是怎样跑起来的》《自制搜索引擎》等。

前几年入职了一家新公司。被大家称为 Old driver 的新领导除了带领PHP团队,还带领了一个运维团队。两个团队经常一起吃饭,每周的例会也是一起参加。

这样一来,在 Old driver 的带领下,日常讨论的技术问题自然就不再限于哪个 PHP 框架好用了,而是从 Nginx 配置到 Web 服务器是如何实现的,从网络配置到 TCP 协议的细节……这些话题大大开阔了我的眼界,也使我开始关注起运维方面的工作。

这就是我翻译《图解云计算架构:基础设施和API》的契机。

这本书可分为三大部分。第一部分是第1章~第4章,主要介绍了云计算的基本概念,帮助不太了解云计算的人快速熟悉如公有云和私有云的区别,IaaS、PaaS 和 SaaS 这三类云服务的不同,以及云上有哪些常用的服务(组件)等内容。

这部分还通过一个搭建服务器的示例(第4章),对比了在物理环境、服务器虚拟化环境和云环境这三种环境中搭建过程的异同,使大家切实体会到,云环境通过“将人为判断交给程序处理来实现自动化”,以及“从一开始就减少需要人为判断的要素”等方式提升了效率。

SaaS、PaaS 和IaaS 在本质上的差异

物理环境VS服务器虚拟化环境的搭建步骤

服务器虚拟化环境 VS 云环境的搭建步骤

那么,云环境到底是如何减少人为判断来提升效率的呢?这就要从本书的主题之一「云 API」说起了。

也许有些人会觉得云与 API(准确地说是 Web API)之间并没有什么联系,但若回顾二者的诞生和发展,就不难发现其间的关系。

早期的网站绝大多数是基于 HTML 文件的静态网站,后来随着Web技术的发展,于 2006 年前后诞生了 Web 2.0,Web API 也从那时开始迅速普及。

正是在这个时候,Amazon 公司的 EC2(Elastic Compute Cloud,弹性计算云)和 S3(Simple Storage Service,简单存储服务)率先进入用户的视野,标志着云计算的诞生。

另外,Roy Fielding 在 2000 年提交的博士论文中提出了著名的 REST 原则,而云中的 Web API 将 REST 的原则体现得淋漓尽致。由此可见,Web API 与云计算架构有着紧密的联系。

甚至本书的作者认为,「能够通过 API 自由地控制云中的组件」才是云计算的本质。因此,才在第3章用大量篇幅详细讲解了 DNS 的工作原理、URI 的构成和 HTTP 协议。

REST 的四条原则

在了解了云和 API 的关系后,就进入了本书的第二部分,即第5章~第10章。这几章详细介绍了用于操作云中各种服务(组件)的 API,包括操作虚拟服务器、存储、网络和对象存储等典型服务的 API。

介绍各 API 的作用的同时,还讲解了在 API 背后都进行了什么样的处理。在梳理这些处理流程时,本书还配上了直观的 UML 时序图。而在每一章的最后,又使用了常用于数据库设计的ER图来总结这一章涉及的内容。

操作卷时调用的API

Amazon EC2 的资源图

书中在这一部分并没有直接照搬 OpenStack 或 AWS 的文档,而是用一定篇幅介绍了服务器资源、块存储资源、网络资源,以及对象存储资源的内部结构。例如,当调用了创建虚拟服务器的 API 后,OpenStack 是如何自动判断要在哪台主机上部署虚拟服务器的?

又如,在调用了连接虚拟服务器和卷的 API 之后,OpenStack 是如何在二者间进行协调,以便最终只有虚拟服务器和卷都准备就绪后才能正式开始连接?

虽然本书并没有就此进行过于深入的探索,但现有这些内容也能为我们进一步理解 OpenStack 的工作机制提供一定帮助,从而在自己的项目中,比如实现分布式系统时借鉴 OpenStack 的经验。

快照和镜像的关系

术语CIDR 的由来

连接虚拟服务器与卷时的操作

本书的第三部分是第11章和第12章。这两章列举了若干时下流行的新技术,包括混合云/多重云、不可变基础设施、蓝绿部署等,并介绍了由这些新技术带来的全新的架构模式和部署方式。

例如,传统的原地更新方式是指将新的应用程序模块发布到线上环境,但这种方法的缺点是服务器暂时无法接收请求。而采用蓝绿部署的好处在于只要充分检查过新环境的行为,就可以在丢弃当前环境后切换到新环境。

切换以后,在一段时间内保留之前的旧环境,万一新环境出现了问题,还能轻松切换回旧环境。在传统的环境中实现这样一套部署系统可能并不容易,但若有效利用云提供的各种服务,实现起来应该并不费力。

多重云的模式

不可变基础设施和应用程序架构

蓝绿部署

本书在介绍时使用了国内不太常用的 AWS 和曾经辉煌一时的 OpenStack 作为示例,这确实有些遗憾。但是,不管是 AWS、OpenStack,还是阿里云、华为云,云计算架构的很多设计理念都是相通的。特别是 API 较为简易且开源的 OpenStack,使我们能够有机会探究其内部结构,从代码层面了解云服务的实现。

所以,本书的目的并不是想让大家精通某一家云服务的技术,比起从注册云服务账号开始,一步步地告诉大家下一步要做什么,要点击页面上哪个按钮这种操作过程的记录,本书这种略微抽象的描述说不定更容易让大家不拘泥于特定云服务供应商的产品,抓住云计算架构的本质。

另外,虽然本书看起来更适合从事运维工作的工程师阅读,但我觉得程序员也应该读一读。

因为,我们不但可以由此了解运维工作,借助云提供的服务和云计算架构的最佳实践搭建出易维护、高可用、可扩展的系统,更重要的是,还可以以云 API 的优秀设计作为参考依据,提升自己项目中 API 的质量。

小到 API 的命名规范,大到如何确保操作的幂等性、如何处理异步操作等,都可以从云 API 中得到启发。

如果本书能为大家的研发工作带去些许帮助,我将倍感荣幸。

从基础知识到内部原理

219张图全面了解云计算架构!

平山毅 , 中岛伦明 , 中井悦司 | 著

胡屹 | 译

本书主要讲解了构建基于 IaaS 的云计算架构时所必备的基础知识。云计算架构的最大特征是可以通过 API 来控制基础设施,因此可以完成在传统环境中无法完成的构建和应用。

本书内容以 API 为中心展开,首先说明了云计算的概念、通用组件及 API 的机制等基础知识,然后逐一讲解了服务器、存储和网络等组件,以及这些组件是如何通过 API 控制的,最后介绍了多重云的配置要点和不可变基础设施等云原生架构的管理方法。

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐