轻松解释 7 个重要的 AWS 概念
让我们面对现实吧,如果您不了解正在发生的事情,AWS 可能会让您抓狂。
划掉它,这就是一般的编程。
我要与你们分享的内容基本上是我希望四年前就知道的,当时我在一家公司担任唯一的开发人员,他们告诉我这些话:
“嘿 V,我们决定迁移到 AWS,老开发人员已经辞职了,你能帮忙吗?”
这句话看似简单,但接下来却让我压力山大。压力源于我一直以来都做前端和后端工作,对部署基础设施和 DevOps 系统并不完全了解。
因此,这个快速且(我认为)简单的指南旨在为您提供 AWS 的概述(概念上),我希望在开始时就拥有它 - 这不是设置教程(稍后会提供)
部署了 40 个应用程序,维护了数百万个请求,后来又成立了一家AI 初创公司,我们开始吧:
EC2 是什么?它是如何工作的?
这是 AWS 的基石之一。只要你不打算完全使用无服务器(稍后会详细介绍),在 AWS 的旅程中,你肯定会在某个时刻与 EC2 实例进行交互。
EC2 代表弹性云计算 (Elastic Cloud Compute),它是一项 AWS 服务,为您提供一台服务器(例如一台没有屏幕的 MacBook)来运行您的应用程序。您可以自行决定各种配置、内存、机箱大小和功耗。简而言之,它是一台拥有公共 IP 地址(如果您希望将其公开)和 HTTP 地址的服务器。
一旦你搭建了一个 EC2 实例,你就可以通过 SSH 连接到它,相当于通过用户名和密码登录服务器。一旦进入,你就可以在服务器上做任何你想做的事情了。
- 运行节点作业
- 做一个 hello world 应用程序
- 启动服务器
- 使用 NGINX 将服务器 localhost:3000 路由到外部世界
PS:如果你想知道配置是如何设置的,AWS 有一个叫做 Amazon Machine Images 的概念,它基本上是服务器配置的“蓝图”。
您可能想知道,谁来决定哪些数据进出服务器,这取决于您的 EC2 所属的安全组以及 VPC ACL(这将在后续博客中介绍)
附言:使用 EC2,你还可以运行“现货服务器”。假设你想每周执行一次任务,但又不想一直为服务器付费,现货服务器基本上会启动,按运行时间收费,执行任务后就关闭。这样可以帮你省钱。
AWS S3
如果你好好利用 S3,它真的很棒。Amazon S3 是 Amazon Simple Storage Service 的缩写(希望你能从缩写中的数字中体会到它的氛围)。
S3 是一个程序化的 Dropbox。你可以上传照片、视频、JSON、gzip 文件,甚至是整个前端 Web 项目,并通过公共 URL 进行服务。当你尝试使用 GitHub 或 Bitbucket 自动部署服务器时,它还可以用于保存服务器的版本(稍后会详细介绍)——简而言之,它可以托管各种不同的内容。
我使用 S3 最常见的用途有两个。一是托管用户上传的资源(例如,你的客户上传了个人资料照片等),二是服务于我的实际前端网站。
看看 S3 的神奇功能:它允许你将 Vue/React/Angular 项目的 dist 文件(例如)上传到 S3 bucket,并将其提供给你的客户。你可以通过将你的 S3 URL(他们会自动为你创建)与你在 godaddy 或任何主机服务上设置的 CNAME 进行路由来实现这一点。
为了让您“验证”或“保护(放置 https)”您的 S3 存储桶网站 URL,您需要将其与称为 CloudFront(我知道,F 我有很多东西)的东西关联起来,它是 Amazon 的 CDN 网络,此服务允许您通过提供 S3 存储桶作为“来源”将您的实际自定义域“banana.com”连接到 S3 存储桶。
我不会深入讨论 CDN 的好处,所以如果你的 S3 bucket 是面向公众的 bucket,我不明白为什么你不把它作为 CDN 网络(内容交付网络)的一部分来加快资产交付
通过 SQS 的消息队列服务
当然,亚马逊有自己的消息队列服务。如果你还不完全了解消息队列是什么,以下是我的理解。
如果您曾经在麦当劳排队,您会看到一个小小的等候区,里面放着一袋袋食物,等待工作人员分发。
那就是队列,并且消息(即食物)只能被处理一次(即一次制作食物的消息,或者一次将食物交给客户,就是这样)
消息队列是一种异步通信形式,其主要作用是批量处理大量工作、平滑峰值工作负载以及解耦重量级任务(大型 cron 作业处理)
(图片来源:AWS)
队列服务在现代架构中被广泛使用,以加快应用程序构建速度并简化应用程序构建流程。现代构建包含多个彼此隔离的微服务,而 SQS 允许以快速有效的方式将数据从生产者(发送消息的一方)传输到消费者(接收方)。由于它是异步的,因此不会发生“线程阻塞”而导致整个服务停止。
回到麦当劳的例子,想象一下如果一次只能送达一份订单,并且直到一份订单送达后才能开始另一份订单,那么服务会有多糟糕。
该过程通过发送和接收消息信号有效地工作,生产者通过向队列添加任务来发送消息(在麦当劳的送货台上放置订单),消息停留在该表上,直到接收者接收该消息并对其进行处理(将其交给客户)
你可能会问,当有一个生产者和多个接收者时,这是如何工作的,这被称为发布/订阅系统(发布/订阅)
举个例子,如果 Shopify 商店发生一笔销售,就会有多个服务与该“销售主题”挂钩,执行多个不同/独立的任务。例如,向店主发送 Slack 通知、打印订单标签、触发电子邮件序列。
负载均衡器
顾名思义,负载均衡器的工作是位于(本例中)EC2 盒网络之上,并检查每个服务器当前是否处于过载状态。
如果服务器过载,负载均衡器的工作就是将流量转移到下一个最近的可用服务器。
你可能会想,如果我在负载均衡器后面的服务器上有一个打开的套接字,那么这个会话是如何神奇地维护/转移到一个并行运行的全新服务器上的呢?答案是,如果你遇到这种情况,AWS 应用程序负载均衡器足够智能,可以维持正在进行的会话(只需在创建负载均衡器时勾选“使其保持粘性”复选框即可)。
负载均衡器的另一个用例是,它们会为您提供一个经过 SSL 认证的端点(至少在测试期间无需自行添加),您可以通过 CNAME 或 Masked 路由(https://server.myapp.com)公开此路由。此时,您需要确保您的 EC2 实例只能在内部访问(即移除任何外部 IP 访问),这将确保任何安全威胁都被隔离在最少的入口点。
如果你喜欢阅读,欢迎关注我,获取更多精彩内容
API 网关
我在为 EC2 服务器设置 SSL 的过程中了解到了 API 网关。第一次尝试非常痛苦,我尝试在 EC2 实例内进行操作,脑子都快被搞坏了(事后看来,我把事情搞得太复杂了)。但令人惊喜的是,我了解到了 API 网关。
将 API 网关视为代理,即它是接收您的请求的中间人,如果您愿意,可以对其进行某些操作,然后将该请求发送给您不知道的其他人。
API 网关有很多用例,但我特别提到的两个用例是充当 EC2 实例的安全代理,其次,使用身份验证令牌包装请求。
您是否有过这样的经历:您可能需要从前端向第三方服务发出请求,但访问该服务的唯一方式是在请求标头中添加身份验证令牌,而该身份验证令牌是敏感信息。您可能认为需要构建一个完整的服务器来接收这些请求,对其进行修改,然后将其发送给第三方 API。这是一种非常痛苦的方法,一种更简单的方法是使用 API 网关,它允许您在将请求发送给第三方 API 之前(以有限的方式)对其进行修改。
Lambda 函数
AWS Lambda 函数允许您在云端运行“函数”,而无需维护服务器。该函数仅在您需要时(一天中的特定时间,或从某个地方收到请求时)执行您的代码,并且能够快速扩展!
我所见过的常见用途主要是响应数据库中的变化,对从 AWS API 网关接收的 HTTP 请求做出反应。
因此,您可以将 lambda 函数视为“无服务器”架构的一部分。
将代码提供给 lambda 函数,告诉它需要对什么事件做出反应并让它自由运行。
亚马逊 VPC
虚拟私有云是 AWS 公有云中的私有云。你可以把它想象成你在 WeWork(哈哈)里的小办公空间,每个人都可以访问。
在那个房间里,您有自己的系统,设置了自己的流程和通信层,但是,只能通过受限端点(即前门)进行访问。
目前就这些了,以后还会有更多这样的内容以书籍或课程的形式出现
文章来源:https://dev.to/veebuv/7-vital-aws-concepts-easily-explained-n45