团队文章技术与工具

主流云服务商比较:AWS、Azure、Google Cloud等

从实际要运行的业务出发,比较AWS、Azure、Google Cloud、阿里云与腾讯云的完整成本、运维工作量,以及迁移到其他服务商的可行性。

目录

装着图片、文件和数据库模型的托盘,摆在三间微缩服务器机房前。
一个放着图片、文件和数据库模型的托盘,摆在三座微缩服务器机房前。

先看你需要运行什么。在决定把业务放在哪里之前,比较运维工作量、成本,以及迁往其他服务商的路径。

假设一家小企业想建一个网站,展示产品照片和客户订单列表。它需要一个运行应用的地方,一个存放图片文件的地方,以及一个能够查询和更新订单的数据库。就从这三项工作出发。比起一张市场份额榜单,它们更能帮助你比较云服务商。

名称不同,承担的工作并不陌生

虚拟机是一台可以远程配置和运行的计算机。对象存储用来保存图片等文件。托管式关系型数据库负责存储结构化记录,其中一部分运维工作由服务商承担。下面列出的是各家产品目录中的例子,并不意味着这些产品完全相同,也不是排名。

服务商

虚拟机

对象存储

托管式关系型数据库

AWS

Amazon EC2

Amazon S3

Amazon RDS

Microsoft Azure

Azure虚拟机(Azure Virtual Machines)

Azure Blob存储(Azure Blob Storage)

Azure Database for PostgreSQL

Google Cloud

Compute Engine

Cloud Storage

Cloud SQL

阿里云

云服务器ECS(Elastic Compute Service)

对象存储OSS(Object Storage Service)

云数据库RDS(ApsaraDB RDS)

腾讯云

云服务器CVM(Cloud Virtual Machine)

对象存储COS(Cloud Object Storage)

云数据库MySQL(TencentDB for MySQL)

产品名称与分类取自Google的跨云服务商服务对照表、阿里云RDS概述及腾讯云产品目录。各项服务所用的数据库引擎、可选配置和支持功能有所不同;对于使用PostgreSQL的应用,MySQL服务无法直接替换其数据库而无须改动。

比较团队实际需要承担的工作

以上述网站为例,一种选择是租用虚拟机,自行安装应用和数据库。另一种选择是使用托管式数据库和应用托管服务。后一种方式可以省去一些运维任务,但你仍然需要理解配置、访问权限、恢复机制,以及应用所依赖的功能。

先从现有系统看起。它使用哪种数据库引擎?如何部署?团队有能力维护哪些工具?熟悉的配置可以减少工作量;陌生的服务如果能解决一个具体问题,也可能值得采用。但要把这份收益说清楚。

接着,确定应用必须在哪些地方正常工作。从用户实际接入的地点测试响应时间,并确认你需要的具体服务和功能,能否在所选区域中同时使用。服务商在全球有多少个区域,无法替你回答这两个问题。

算清完整一个月的成本

对每个候选方案使用相同的假设:预计访问量、计算时长、文件存储量、数据库大小、备份,以及发送给用户的数据量。如果团队需要技术支持,也要把这项费用算进去。便宜的虚拟机,只是整份估算中的一项。

例如,AWS定价计算器指南介绍了如何根据区域、服务和用量假设建立估算,并允许加入支持费用。估算结果取决于这些输入,并不是对最终账单的承诺。把假设与金额一起保存,才能在同样的条件下进行比较。

对于以照片为主的网站,向访问者传送图片的费用,可能比小型内部表单系统中的这项费用更重要。对于需要迅速恢复的系统,额外的数据库容量和恢复安排也很重要。应当验证自己的使用模式,而不是寻找一个在所有情况下都最便宜的服务商。

作出承诺之前,先试一遍迁出的路

在入围的服务商平台上,运行同一个应用的小规模版本。上传示例图片、创建测试订单、导出记录,再将这些记录恢复到独立的测试环境中。检查如何替换服务商专有的服务。复制文件,只是迁移应用的一部分。

记录三件事:让应用运行起来需要多少工作,在相同用量假设下需要多少钱,以及迁移或恢复需要做什么。对于小团队而言,一次成功的测试,比某个品牌在排行榜上的名次更能作为选择依据。

让选择始终服务于你的目的

你不必仅仅为了证明自己独立,就把系统搭建在多个云平台上。一项已经充分理解的服务,可能是最务实的起点。关键是知道自己交出了哪些责任,以及其他安排是否仍然可行。

云服务模式解释了这种工作分工。边缘计算与云计算则进一步讨论不同工作应该放在哪里。将机器分布在不同地点,与将决策权分散开来,是两个不同的问题;有用的基础设施选择,应当让这两件事都更清楚。