主流云服务商比较: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定价计算器指南介绍了如何根据区域、服务和用量假设建立估算,并允许加入支持费用。估算结果取决于这些输入,并不是对最终账单的承诺。把假设与金额一起保存,才能在同样的条件下进行比较。
对于以照片为主的网站,向访问者传送图片的费用,可能比小型内部表单系统中的这项费用更重要。对于需要迅速恢复的系统,额外的数据库容量和恢复安排也很重要。应当验证自己的使用模式,而不是寻找一个在所有情况下都最便宜的服务商。
作出承诺之前,先试一遍迁出的路
在入围的服务商平台上,运行同一个应用的小规模版本。上传示例图片、创建测试订单、导出记录,再将这些记录恢复到独立的测试环境中。检查如何替换服务商专有的服务。复制文件,只是迁移应用的一部分。
记录三件事:让应用运行起来需要多少工作,在相同用量假设下需要多少钱,以及迁移或恢复需要做什么。对于小团队而言,一次成功的测试,比某个品牌在排行榜上的名次更能作为选择依据。
让选择始终服务于你的目的
你不必仅仅为了证明自己独立,就把系统搭建在多个云平台上。一项已经充分理解的服务,可能是最务实的起点。关键是知道自己交出了哪些责任,以及其他安排是否仍然可行。
云服务模式解释了这种工作分工。边缘计算与云计算则进一步讨论不同工作应该放在哪里。将机器分布在不同地点,与将决策权分散开来,是两个不同的问题;有用的基础设施选择,应当让这两件事都更清楚。