第1章
概述

云提供了一组用于启动和运维可扩展服务的工具,但首先如何运维云本身呢?这二者之间并不矛盾,毕竟云是通过一组服务实现的,但以这种方式提出问题可以避免给出类似“云会为你处理这些问题”这样的答案。本书将从裸金属硬件开始介绍如何运维云,一直到为用户提供一个或多个托管服务。

很少有人有理由建设超大规模的数据中心,但是在企业中部署私有化的边缘云——并可选择地将边缘云连接到数据中心以形成混合云——正变得越来越普遍。我们使用“边缘云”(edge cloud)与“中心云”(core cloud)相区别,中心云是那些传统超大规模云厂商的领域。边缘云主要出现在企业或工厂的“物联网”环境中。边缘正好是云服务与现实世界连接的地方,例如通过传感器和执行器,以及那些延迟敏感型服务被部署的地方,从而与服务消费者靠近[1]

超大规模云厂商确实愿意为我们管理边缘云,将它作为其中央数据中心的扩展。市场上有很多类似产品,比如谷歌的Anthos、微软的Azure Arc和亚马逊的ECS-Anywhere。但是运维一个云的门槛并没有高到只有超大规模的云厂商才有足够资金去做。一般企业也可以基于现成的开源软件技术栈来构建云,并提供运维它所需的所有相关生命周期管理和运行时控制。

本书介绍了这样一个云管理平台的样子。我们的方法是聚焦在必须解决的基本问题上,包括所有云都常见的设计问题,然后在运维特定的企业云时,需要将概念讨论与特定工程选择相结合。我们使用Aether[2]作为例子,它是一个ONF项目,用于将支持5G的边缘云作为托管服务。Aether具有以下特性,使其成为有趣的研究用例:

● Aether开始时被部署在边缘站点(例如企业)的祼金属硬件(服务器和交换机)上。这种本地云的规模可以从部分机架到多机架集群不等,可以根据数据中心的最佳实践进行组装。

● Aether支持运行在本地集群上的“边缘服务”和运行在公有云数据中心上的“集中式服务”,从这个意义上来说,它就是混合云[3]

● Aether通过5G连接即服务增强了边缘云,并提供了可运维的服务(除了底层云之外)。最终结果是Aether为我们提供了一个托管的平台即服务(PaaS)。

● Aether完全由开源组件构建而成。我们唯一需要增加的东西是使其可被运维所需的“胶水代码”和“规范指令”。这意味着任何人都可以通过遵循文档指示完全复制这种运维方法。

Aether成为一个有趣的例子的另一个重要原因是,它是部署在三个传统上截然不同的管理领域交汇处的系统:企业(系统管理员长期负责安装和维护专用设备)、网络运营商(其中接入技术历来是作为基于电信的解决方案提供的)和云服务提供商(可以使用商品化硬件和云原生软件)。这种情况使得我们的工作变得复杂,因为这三个领域各自都有自己的约定和术语。但是了解这三个利益相关者是如何处理运维的,可以让我们有更广阔的视野来更好地认知边缘云。我们将在本章后面介绍企业、云、接入技术的融合,这里首先需要解决术语方面的挑战。

开发人员可以发挥同等作用

本书采用以运维为中心的视角来看待云运维,但开发者也可以发挥同样的作用。这个角色反映在像DevOps(我们将在2.5节讨论)这样的实践中,也可以在底层系统设计中看到。云架构包含了一个指定了运行时接口的管理平台,服务开发人员(提供功能的开发人员)通过该接口与云运维人员(管理该功能的人员)进行交互。因为开发人员可以利用一个共享的管理平台,所以在部署、配置、控制和监控所实现的服务时,就不需要(也不应该)重新“发明轮子”。

从更广泛的角度来看,这个管理平台是应用程序构建者和服务开发者向最终用户交付功能的重要组成部分。今天,开发者开发的功能通常以托管服务的方式(而不是一堆死板的软件)交付,这意味着开发者不仅需要考虑实现应用程序或服务所需的算法和数据结构,还需要与运维(激活)其代码的平台进行交互。一种常见的观点是只关注前者并将后者视为负担(特别是当其他人负责部署和运维他们的代码时),但是针对管理平台提供的接口进行编程是交付托管服务的核心部分,理解和欣赏这个平台如何运作以及为什么这么运作对开发人员完成自己的工作至关重要。