我会因为谷歌简单的命名策略而给它一颗星。云CDN、云功能、云SQL、BigTable、云负载平衡器、数据存储。另一方面,AWS的产品没有人能够从字面上猜出它的名字,比如Fargate、Beanstalk、Aurora、Neptune、Snow、Athena、Redshift、Kinesis、Macie和Glue。这是我写这篇比较文章的最初目的,我将尽力保持更新的内容。
计算
+===============+================+
EC2与计算引擎
EC2可以用模板AMI进行配置,并附以持久性块存储。它在一个区域内自动进行纵向和横向扩展,一个不健康的实例将被替换成新的。它的实例类型包括。
- 按需实例,用于短期工作负荷,价格可预测。
- 保留实例,用于长期和预定的工作
- 用于短期工作负荷的现货实例,价格便宜,但可以被终止。
- 用于整个服务器的专用主机,其位置可控
Compute Engine中的虚拟机是使用启动盘镜像、快照或容器镜像创建的。它在一个区域、地区甚至跨区域内自动扩展,但你必须把它与一个受管理的实例组连接起来。它的实例类型包括。
- E2, N1, N2等。
- 可抢占的虚拟机实例很便宜,但可以在任何时候被终止。
在我看来,GCE和EC2之间并没有很大的区别,它们都提供了你日常业务所需的几乎所有东西。我只是希望谷歌有一天能提供一个长期的永久性操场实例,类似于EC2的微型,目前300美元的交易很快就用完了。
Beanstalk vs App Engine
Beanstalk(首先谁把Beanstalk读成beansTalk而不是BeanStalk 🙋♀️🙋♂️)让你自由地部署和管理应用程序,而不需要学习下面的基础设施:负载均衡、扩展、健康检查和容量配置。它采取了声明式方法,即你用配置文件告诉Beanstalk你想要什么,它为你处理一切,你需要的只是上传应用代码。
App Engine 是一个完全管理的无服务器平台,使用时需要零服务器管理。它有两种环境。
- 标准环境 它允许一个实例在支持语言的沙盒中运行,它有有限的CPU和内存选项,没有持久的磁盘连接,此外它不支持SSH和VPN🥺。听起来很令人失望,对吗?但App Engine的主要目标是为那些绝对不想关心服务器管理的人提供一个免提设置,所以令人惊讶的是App Engine标准实际上很受欢迎。
- 灵活的环境 它为你提供了编程语言和计算能力方面的自由,它在Docker容器中运行......等等,这听起来是不是很熟悉?是的,它仍然是我的Cloud Run,事实上,谷歌建议灵活的用户使用Cloud Run来代替。最后,如果你想控制容器图像,为什么不更进一步。
Lambda和云功能
Lambda和Cloud Function都提供了零管理的服务,它甚至比App Engine或Beanstalk的设置更简单。在我看来,这两个产品不会成为人们在AWS和GCP之间选择的决定因素。如果你是AWS用户,需要一个无服务器事件驱动的解决方案,你会使用Lambda,反之则使用GCP。
Lambda和Cloud Function的一些有趣的使用案例。
- 发送电子邮件确认
- 生成图片缩略图
- 飞行分析日志
- 任何可以作为独立函数部署的功能
容器
+======================+=======================+
AWS Fargate vs Google Cloud Run
Fargate和Cloud Run都是AWS和GCP的无服务器容器选择。如果你想纵向比较它们,Fargate是容器上的Beanstalk,而Cloud Run是带有Docker镜像的App Engine。
设置Fargate的步骤非常简单明了:建立一个镜像,定义所需的内存和计算资源,运行应用程序并为消耗的资源付费。Fargate支持VPC,你只需为计算时间而不是下面的实例付费。Cloud Run也有类似的功能,而且它们都可以纵向和横向扩展。由于谷歌在GKE中抛弃了Docker,如果你是一个Docker爱好者,你会发现Cloud Run很容易使用,事实上,设置更加简单:创建一个Cloud Run服务并插入一个Docker镜像(动手一步一步的指导)
AWS EKS(Elastic Kubernetes服务)和GKE(谷歌Kubernetes引擎)
亚马逊EKS 是管理的Kubernetes服务,而GKE同样是谷歌的产品。虽然GKE感觉更像是谷歌的招牌菜,但EKS并不是亚马逊的冠名曲目,这也是可以理解的。这两款产品可能是GCP和AWS的关键决策人。
将GKE与EKS进行比较有点不公平,这就像问谁提供最好的鸡翅。麦当劳或肯德基 🤷♀️。且不说新的谷歌云平台Anthos,光是GKE本身就值得一个全新的篇章来讨论,谷歌把所有的钱都押在了Kubernetes技术上,而且它确实与其他所有的云产品处处融合。如果你想进一步挖掘GKE,我强烈推荐这门Coursera课程--谷歌Kubernetes引擎的架构。我自己的看法是,GKE是谷歌云平台中所有东西的一个独立的迷你乐园。
每个pod里面有多个容器,一个Node里面有多个pod,一个GKE集群里面有多个Node。每个Node都是一个独立的虚拟机,你可以用节点池、命名空间和标签对资源进行分类。此外,你还需要照顾到存储、入口规则、负载均衡和部署等,难怪在这个阶段已经可以放弃了。
因此,如果你有一个中等规模的项目,有简单的微服务架构,可以选择AWS的另一个选项**--ECS(Elastic Container Service)**,简单地说,ECS是一个在EC2实例中使用Docker的管理服务,有人甚至把ECS称为没有控制平面的Kubernetes。它在默认情况下是无服务器的,并且可以在多个区域进行扩展。
第二部分继续:数据库、存储和网络...
我的对比的完整列表在这里。