通过经营啤酒厂来解释亚马逊网络服务 (AWS)
如果您了解啤酒厂的运作方式,那么您就可以了解亚马逊网络服务 (AWS)。
当您构建第一个 Web 应用程序时,您总会听到与过去几年相比推出新产品的容易程度。
人们会说这样的话:“在我那个年代,你必须购买自己的服务器并自行配置!”
或者,“我们会整夜不眠地调试服务器基础设施的最新问题。”
幸运的是,那些日子早已一去不复返了。如果你知道自己该怎么做,只需每月 10 美元,就能在一小时内部署你的新 Web 应用。
但是,有一个小问题。像 Amazon Web Services (AWS) 这样的标准工具可能相当复杂,至少对新手来说是这样。虽然它们提供了从第一批用户扩展到数亿用户的惊人能力……但它们也需要一些配置。
我想了解 AWS 提供的所有主要选项。思考了几个小时后,我意识到 AWS 生态系统与大型啤酒厂的各个部分非常相似。
以下是快速预览:
因此,以下是 5 款流行的 AWS 工具在 Web 应用背后的工作原理。我还将介绍Heroku,这是一款流行的 Web 应用部署工具,虽然灵活性稍差,但上手更容易。
AWS 的官方视频提供了一些有关我们将要讨论的工具的背景信息:
为了理解本教程,您只需要了解客户端-服务器模型的概念,您可以在此处了解更多信息。
亚马逊网络服务的背景
假设你对酿造啤酒充满热情。你开始在厨房里为自己和朋友酿造啤酒。很快,你的美味佳肴就传开了。为了满足日益增长的需求,你决定租用一些设备和仓库空间,看看能否成立一家成熟的公司。你将接受来自分销商、餐厅和个体商家的订单。
在上面的例子中,一个订单来自客户 —— 某个餐厅或分销商。这被称为请求。您的啤酒厂将提供该订单并通过发票收取款项。这被称为响应。
类似地,Web 浏览器根据用户的操作向服务器发送请求。服务器通过响应返回所需的信息。
当然,这只是一个大概的视角。在探索 AWS 的过程中,我们将深入研究服务器端发生的所有不同流程。以酿酒厂为例,我们假设订单已经源源不断地涌入。现在,我们的工作是组织整个酿酒厂,确保能够可靠地交付这些订单。
Heroku 详解——AWS 的更简单替代方案
在深入探讨 AWS 的 5 个部分之前,你或许应该了解一个更简单的替代方案。Heroku 可以帮你管理其中的许多系统。事实上,它构建在 AWS 基础设施之上。
Heroku 允许您使用git push heroku master直接从命令行部署应用程序的新版本。它还拥有丰富的附加组件库,可让您为dynos或虚拟服务器添加新功能。
Heroku 有点像雇佣第三方承包商来管理你的啤酒厂。你只需要提供配方,承包商就会利用他们在啤酒厂运营方面的专业知识来生产啤酒。他们提供团队、设备以及与供应商的关系。
这听起来可能很神奇。现在你可以省去学习如何经营啤酒厂所需的所有时间和精力!但有两个原因需要谨慎。
- 这种方法成本会更高。你不仅要支付公司的专业技术费用,还要支付员工工资、原材料等成本。
- 他们可能无法像你希望的那样迅速扩张。假设你开始接到数百万美元的订单,需要扩大业务规模。他们可能不像你一样准备好快速扩张。
Heroku 有同样的优缺点。它稍微贵一点,但可以让你立即上手。如果你规模扩大,你可能需要将服务迁移到 AWS,这意味着你无论如何都需要学习 AWS 系统。
有了它,让我们了解 AWS 中的不同工具。
AWS 存储工具
这是三个看似相似的类别中的第一个,所以系好安全带!在我们的啤酒厂里,有很多静态资产,它们不会改变,但对于任何类型的酿造来说都是必需的。想想那些机器、装配线或工人们使用的电动工具。你无法拆开它们再重新组合。但它们可以反复使用,仍然有用。
这有点像Amazon S3。S3是一项云服务,允许你存储图片等静态资源。它代表简单存储服务 (Simple Storage Service)。
在这种情况下,“静态资产存储”的概念与你在现实生活中可能想到的略有不同。在现实生活中,存储静态项目可能意味着把东西放在阁楼里然后忘掉它。但在云服务中,这意味着在几毫秒内准备好要使用的对象或图像。
这与数据库存储不同,因为数据库中的数据可以被查询。静态资产只能被请求。
AWS 数据库服务
Amazon 关系数据库服务 (RDS) 允许您在 AWS 中设置和操作关系数据库。一些常见的示例包括 MySQL、PostGreSQL 和 Microsoft SQL Server。
在我们的啤酒厂示例中,这有点像啤酒厂存储瓶子、标签、啤酒花、麦芽以及酿造啤酒所需的任何其他原料的部分。我想它也可能包括你的公司银行账户,因为这是一种动态存储形式。
你可能想知道为什么我们在上一节之后又再次讨论存储。这是因为所有这些元素都更加动态——它们不断地被组合或修改,以处理来自用户/客户的请求。
这是您将要查询的数据类型,而不是像上例中那样请求的数据类型。例如,如果您管理 Facebook 的数据库,那么这些将是稍后会包含在新闻推送中的用户数据和帖子。
最后再补充一点:这些数据(或者说啤酒花/麦芽/酒瓶)仅用于实际向用户提供反馈。如果您想衡量啤酒厂的业绩,则需要为运营团队建立新的流程。
想象一下,如果你的运营团队在啤酒厂里忙得不可开交,试图追踪你的业绩,而普通工人则努力生产和装瓶尽可能多的啤酒。这两个团队有着不同的利益。
这就是数据仓库发挥作用的地方。
AWS 数据仓库工具
这里我们要明确一点:“数据仓库”这个名字对于云服务来说太糟糕了。当然,对于经验丰富的开发者来说,它可能听起来很合理,但对于新手来说……Web 开发中有多少东西与数据仓库类似?很多。
数据仓库产品的一个常见示例是Redshift。这类工具使开发人员能够轻松分析其数据。它们包括来自关系数据库的数据,以及 ERP、CRM 和营销自动化数据。
让我们回到啤酒厂的类比。到目前为止,在我们的啤酒厂里,我们所有的“数据”都不是以一种易于访问的形式存在的。这些数据以瓶子、啤酒花袋以及工厂周围散落的其他原材料的形式存在。如果分析师想要分析工厂的效率,就需要手动统计所有这些实物数量。
您需要一种方法将这些物理数据转换为机器可读的数据,以便您的运营团队能够利用这些数据来提高啤酒厂的效率。您可以将其想象成工厂周围的传感器系统。传感器将原材料的物理运动转换为机器可读的数据,以便日后进行分析。
因此现在,当我们的工厂运营时,数据会自动收集并与工厂运营团队共享,以便他们可以分析效率。
看看这如何减轻工厂和生产团队的压力?生产团队可以专注于现场酿造啤酒,而运营团队则可以在办公室进行分析。这也是使用数据仓库工具的一个很好的理由。它减少了数据库上的查询次数,从而降低了性能。
希望您能理解为什么“数据仓库”工具有点误导。没错,它确实会创建一个新的数据集,专门用于分析。但是,很难说它为什么比系统中的任何其他部分更像“仓库”。
AWS 计算工具
在目前为止的所有图表中,您是否注意到“啤酒厂”位于中间,无论图表显示的是实际的啤酒厂还是云计算环境?
这是因为我们还没有介绍将这一切联系在一起的服务:EC2,即弹性计算云。EC2 允许您启动虚拟实例,这有点像这个比喻中的酿酒厂。
实例是虚拟服务器。与之前的技术不同,以前的技术将您的代码绑定到一台物理服务器上,而虚拟服务器允许您在云中启动您自己的环境,该环境由许多相互连接的服务器组成。这是将所有其他 AWS 服务连接在一起的部分。
这有点像通过复制现有酿酒厂,随时随地在世界任何地方启动或关闭一家新酿酒厂。这在现实生活中或许无法实现,但在 AWS 生态系统中却并非不可能。EC2 为酿酒厂的物理空间和工人提供了类似的功能。
该图可能略有误导,因为虚拟服务器并不占用整台服务器。它存在于服务器网络中。但这太复杂了,无法用一张小图来展示。所以我保留了它。
AWS 管理工具
最后一类工具是管理工具,例如 Elastic Beanstalk 或 CloudWatch。这些工具可以:
- 监控上面列出的其他工具
- 设置流程以帮助多个类别的工具协同工作
在上图中,您可以看到有多少工具可以帮助您部署和维护应用程序。这就是为什么这些工具类似于公司的管理团队。他们不是亲自为您的公司生产啤酒,而是帮助所有部门协同工作。
管理类工具种类繁多,因此我不会深入介绍任何一种工具。它们的级别高于其他讨论的工具。
获取最新的视觉教程
你喜欢这个教程吗?查看CodeAnalogies 博客,获取更多 HTML、CSS 和 JavaScript 的可视化教程。
鏂囩珷鏉ユ簮锛�https://dev.to/kbk0125/amazon-web-services-aws-explained-by-operating-abrewery-2j0