本文概述
在过去的几年中, 每个人的嘴唇上最热门的词是”生产力”。在瞬息万变的Internet世界中, 快速完成工作总是很不愉快。尽管需要快速, 准确地实现真实的业务逻辑, 但作为一名经验丰富的PHP开发人员, 我仍然在其他任务上花费了数百小时, 例如建立数据库或缓存, 部署项目, 监视在线统计信息等等。许多年来, 许多开发人员一直在与这些所谓的杂项任务作斗争, 浪费时间而不是专注于项目逻辑。
四年前, 当一位朋友提到Amazon Web Services(AWS)时, 我的生活发生了变化。它打开了新的大门, 极大地提高了生产率和项目质量。对于没有使用过AWS的任何人, 请阅读这篇文章, 我相信你会发现你值得你花时间。
实际上, Amazon Web Services(AWS)可以在几分钟内提高你的生产力。
鸣叫
AWS背景
Amazon Web Services于2006年正式启动。很多人都听说过它, 但可能不知道它可以提供什么。因此, 第一个问题是:什么是AWS?
Amazon Web Services(AWS)是云计算服务(也称为Web服务)的集合, 这些服务构成了Amazon.com提供的云计算平台。
维基百科
根据此定义, 我们知道两件事:AWS基于云, AWS是服务的集合, 而不是单个服务。由于我认为这不能告诉你太多信息, 因此初学者最好将AWS理解为:
- 顾名思义, AWS是云中服务的集合。
- AWS在线提供了快速的计算资源(例如, 你需要10分钟来设置Linux服务器)。
- AWS提供负担得起的费用。
- AWS提供了开箱即用的易于使用的服务, 从而节省了手动设置数据库, 缓存, 存储, 网络和其他基础架构服务的大量时间。
- AWS始终可用, 并且具有高度可扩展性。
当然, 使用AWS还有更多优势, 因此, 让我们快速了解一下它如何提高你的生产率。
免费创建一个AWS账户
要开始使用任何服务, 你需要拥有一个帐户。为AWS创建一个帐户应该不会超过五分钟。确保手头有以下信息:
- 电子邮件地址, 用于接收确认电子邮件。
- 信用卡, 由于设置过程始终免费, 因此不会收费。
- 一个电话号码, 它将收到一个自动系统呼叫以识别用户
而已。准备好上面列出的信息后, 请访问AWS网页, 并按照易于遵循的说明创建一个帐户。
请注意以下几点:
- 大多数AWS服务每月都会提供大量的免费层资源。也就是说, 测试AWS通常只需花费很少甚至没有。
- 根据我的经验, 电话号码和其他个人信息未被滥用
进行第一个EC2服务器设置
云服务的好处之一是能够按需获取共享资源。亚马逊为用户访问其服务提供了四层服务, 以易用性顺序列出:
- 管理控制台,
- 命令行工具
- SDK,
- RESTful API。
在本文中, 我们将使用管理控制台。因此, 登录到控制台后, 将看到如下屏幕:
有两个要注意的地方:
- 在右上角, 你将找到区域选择器。 AWS在全球11个不同地区提供服务, 并且仍在增长。选择一个区域作为你的选择, 或将其默认保留为美国东部(弗吉尼亚北部)。不同地区的价格可能会有所不同, 随着使用量的增长, 你应该牢记这一点。
- 屏幕的大部分填充了服务列表。我们将在本节中介绍EC2。快速查看AWS提供的内容。如果它们没有意义, 请不要担心, 所有服务都将独立运行。但是, 将它们结合使用将获得更高的生产率。
云资源最基本的需求是虚拟服务器。 EC2或Elastic Compute Cloud是Amazon为其虚拟服务器服务选择的名称。让我们看一下使Linux服务器联机有多么容易。
- 在EC2管理控制台中, 如下所示启动启动过程:
- 选择一个机器映像(简称AMI)开始。这是将运行你的计算机的操作系统。选择你喜欢的任何系统。我建议你从Amazon Linux开始, 它使用yum管理软件包:
- 接下来, 选择一个实例类型。你可以将其理解为虚拟服务器的硬件规格。你可以从t2.micro开始, 因为在第一年中, 此实例每月将获得750小时的免费使用时间。请注意, 这仅在你注册之日起的第一年有效, 并且仅对t2.micro实例有效。如果你只想品尝AWS, 这是一个很好的交易。
- 通过能够更详细地配置服务器, 你可以启动服务器。首次使用EC2时, 你会看到类似于以下屏幕的屏幕。有关安全的警告告诉我们, 亚马逊在安全方面有多重视。但是, 在访问有关托管服务的部分之前, 我们可以忽略此警告。
- 最后, 要访问远程服务器, 我们需要一个身份。 AWS将提示我们选择SSH密钥对, 如下图所示。下载隐私密钥文件, 然后单击启动按钮。是的, 我们完成了;新的虚拟服务器正在配置中, 将在几分钟后准备就绪。
- 实例准备好后, 你可以使用你的隐私密钥以默认用户ec2-user登录到系统。 ec2-user是AWS默认值, 也具有sudo功能。尽管无法更改默认用户名, 但是你可以创建任何用户并根据自己的偏好分配适当的特权。你的服务器地址可以在以下位置找到:
上面的过程需要不到五分钟的时间, 这就是我们启动虚拟服务器并轻松运行它的方式。在下一部分中, 我们将学习AWS如何帮助我们管理刚刚创建的实例。
按需计费
大多数AWS资源按小时计费, 这提供了很好的灵活性。例如, 以我们刚刚创建的EC2实例为例, 有两种方法使其停止服务:停止和终止。这两个操作都会停止计费。区别在于, 通过停止实例, 我们可以在以后保存所有工作的情况下重新启动它。相反, 通过终止实例, 我们将该实例交还给AWS进行回收, 并且无法恢复信息。需要终止实例的原因是, AWS默认将每个帐户的每个区域设置为20个实例的限制, 并且直到实例终止为止, 停止计数的实例仍然有效。
我们可以通过以下方法快速停止实例:
当你停止EC2实例时, 你的账单也将停止增长。在以下情况下特别有用:
- 当你想尝试新事物时, 如果你只需要支付几个小时的费用, 那么它将更加节省成本, 并且你可能不会超出某些服务的免费等级。
- 当你的计算需求在生产环境中扩展时。例如, 过去, 我需要保留通常比高峰使用量多30%到50%的计算资源。使用AWS, 我可以以更灵活的方式配置资源:
AWS的定价信息可在线获得。经过一些计算后, 你可能会提出一个问题:AWS真的便宜吗?通过将一个月的小时费率乘以一个月的时间, 看来它根本没有竞争力。答案是肯定的。
如果你仅计算一个月内按需资源的小时费率, 则AWS并不便宜。但是, 我们仍然具有预留实例的计费选项, 如下所示:
对于最低资源要求, 我们可以使用预留实例以及按需实例计费的其他各种资源来实现30%至70%的折扣。实际上, 如果使用一年的承诺, 则使用预留实例将便宜30%到40%, 如果使用三年的承诺, 则可以节省更多。这就是为什么我对上述问题投赞成票的原因。如果你包括安全性和监视优势, 那么AWS甚至会更便宜。
管理服务
AWS的目标之一是消除尽可能多的运营成本。传统上, 我们需要庞大的系统工程师团队来维护我们基础架构的安全性和健康状况, 这些知识可以在现场在线获取。经验丰富的团队将编写和部署其自动化工具以简化流程。但是, 在实践中, 管理服务也成为一个复杂的项目。 AWS充当了帮助我们管理资源的救星。下面, 我列出了AWS提供的一些最常用的服务:
- AWS安全组,
- IAM, 身份访问管理,
- CloudWatch,
- 以及自动部署服务(例如OpsWorks)的列表(本文将不介绍)。
AWS安全组
AWS如何处理服务的访问控制在两个单独的层中完成。在网络级别, 这是通过使用称为”安全组”的想法来实现的。所有AWS服务都在安全组中。然后, 安全组确定允许谁通过。以我们的EC2实例为例, AWS自动为我们创建了一个安全组:
通过配置入站/出站规则, 我们可以决定可以进来什么和可以出什么。 EC2服务支持TCP, UDP和ICMP规则。安全组的行为就像一个外部硬件级别的防火墙, 我们从不需要考虑对其进行修补。
使用安全组的另一个优点是可重用。一个安全组可以在许多资源之间共享。实际上, 它消除了为每个资源一一设置安全策略的麻烦, 从而大大提高了维护效率。同样, 安全组的可共享性使我们能够在单个位置进行配置, 并将该安全策略应用于其他任何资源, 而无需为每个资源一个一个地手动设置它。
身份和访问管理
AWS提供了另一种使用IAM处理访问控制的方法。当你需要访问RESTful接口时, 这是一个应用程序级别的安全控制。必须对每个REST请求进行签名, 以便AWS知道谁在访问服务。此外, 通过检查预配置的策略列表, AWS将确定是否应拒绝或允许采取措施。
我们将不在本文中详细介绍IAM。但是, 请注意, AWS在安全性方面考虑了很多问题, 因此你可以确保没有未经授权的访问者可以访问你的机密数据。
CloudWatch
CloudWatch是AWS提供的一项服务, 用于从你的AWS资源中收集和跟踪各种指标。它对某些事件(或警报)有反应能力, 因此功能更强大。借助CloudWatch, 我们可以监视新创建的EC2实例的运行状况。
- 我们可以将警报快速添加到我们的EC2实例:
- 可以通过为许多不同目的指定条件来创建警报:
注意:SNS是AWS提供的用于发送通知的基于主题的服务。通知可以通过电子邮件, SMS, iOS / Android推送通知和许多其他格式发送。
从监视到通知, CloudWatch尝试单击几下即可自动执行监视需求。为各种AWS服务预定义了大量指标。对于高级用户, 你甚至可以为应用程序创建自定义指标。
关于成本, CloudWatch提供的免费服务通常足以满足启动项目的需要。但是, 即使你的业务增长, 所增加的成本通常也不到服务成本的1%。查看详细价格以获得更多信息。考虑到使用CloudWatch设置监视系统非常容易, 因此它已成为最常用的监视工具。
无忧的应用程序服务
作为开发人员, 我们可能会遇到以下情况:
- 我们的应用程序需要一个数据库组件, 这意味着我们必须:
- 获取数据库服务器。
- 安装数据库软件。
- 为服务器和数据库配置监视器。
- 计划备份方案。
- 根据需要修补软件。
- 还有许多其他未在此处列出。
- 我们的应用程序需要分布式文件存储, 这意味着我们必须:
- 查找用于分布式文件存储的现有开源(或商业)解决方案。
- 准备所需的服务器。
- 安装并配置所选的解决方案, 通常这并不容易。
- 为服务器和数据库配置监视器
- 还有许多其他未在这里列出
- 我们的应用程序需要一个缓存。
- 我们的应用程序需要一个消息队列。
- 还有许多其他要解决的问题, 此外, 我们还需要进行预配置和后监控工作。
而且, 你可能已经猜到了, 这是AWS可以帮助的另一个重要领域。有很多应用程序级别的服务可用, 因此你无需考虑其他任何事情。
让我们覆盖其中的一些以快速了解一下。
RDS, 数据库由你管理, 但不由你管理
关系数据库(RDBMS)已被许多应用程序广泛采用。在生产环境中, 使用RDBMS部署应用程序时始终需要特别注意, 首先是如何设置和配置数据库, 然后是何时以及如何进行备份和还原。
在我们的团队中, 我们的数据库管理员(DBA)过去至少将30%的时间花在编写设置和维护脚本上。随着AWS RDS的推出, 我们的DBA有更多时间进行SQL性能调整, 这是投资DBA的首选领域。
那么, RDS为你提供什么?简而言之:
- RDS支持大多数流行的数据库引擎, 包括MySQL, SQLServer和PostgreSQL。
- 只需单击几下即可创建节点或群集的数据库。
- RDS在名为”参数组”的服务下提供了对共享数据库参数的内置支持。
- RDS在Security Group的帮助下为访问管理提供了内置支持, 这与我们为EC2所介绍的非常相似。
- 通过一次单击启用多可用区, RDS提供了其他服务。所有监视, 备用和故障转移切换都是自动完成的。
- RDS的维护和备份是自动化的。
总而言之, RDS在设置和维护数据库服务方面节省了大量时间。作为交换, 你将比相应的EC2服务器多付40%的费用。因此, 是否选择RDS或自行部署相应的服务器是业务决策。但是, 它确实使你可以将更多的时间投入到与实际业务相关的工作中, 而不是基础架构的稳定性和可扩展性上。另外, 你很快就会注意到, 这是AWS倡导的业务方式。
Dynamo DB, 键值存储可扩展到数十亿条记录
近年来, NoSQL已成为最受欢迎的话题。由于许多现实生活项目不需要各种关系DBMS的支持, 因此已向市场推出了NoSQL数据库列表。亚马逊在这方面并不落后。 DynamoDB(https://aws.amazon.com/dynamodb)是Amazon于2012年宣布的键值商店, 该服务的核心贡献者是Amazon的CTO Werner Vogels, 他是全球超级数据库顶级专家之一可扩展系统。
亚马逊能够处理大量流量已经不是什么秘密了。 DynamoDB源自Dynamo, Dynamo一直是许多亚马逊业务的内部存储引擎, 包括其购物车服务, 该服务在每个圣诞节都为数十亿个请求提供服务。 DynamoDB在扩展方面没有限制。
此外, 与其他NoSQL解决方案(例如Cassandra或MongoDB)相比, DynamoDB具有巨大的经济优势;它以保留吞吐量为单位计费(允许每秒写入/读取多少次), 可以实时增加或减少。下面是DynamoDB与其他独立NoSQL解决方案之间的成本比较表:
业务需求 | DynamoDB服务 | DynamoDB成本 | 使用其他服务 | 使用其他服务时的费用 |
Small Business (less than 1000 DAU, 16GB data) |
10个写入单元10个读取单元 | $ 9.07 /月• | t1.micro••16GB EBS••• | $ 14.64 /月 |
Medium Business (less than 100k DAU, 160GB data) |
100个写入单元100个读取单元 | $ 101.62 /月 | m4.xlarge 160GB EBS | $ 190.95 /月 |
Large Business (up to 1m DAU, 1TB data) |
1000个写入单元1000个读取单元 | $ 852.58 /月 | 群集c4.4xlarge•512GB EBS• | $ 1329.24 /月 |
•公平地说, 价格是使用美国东部地区的按需定价来计算的
••选择了AWS EC2实例来托管其他NoSQL服务
•••EBS是由AWS提供的持久性存储服务
从表中可以看出, DynamoDB提供了开箱即用的服务, 并且与构建自己的键值存储相比, 价格通常更低。这是因为除非你达到MongoDB / Cassandra群集的最大容量, 否则你将为从未使用过的东西支付更多费用。
亚马逊以完全托管的方式提供服务。这意味着你不必担心如何设置, 扩展或监视DynamoDB。它们都是由AWS完成的。实际上, 无论操作的数据大小如何, 始终以恒定的时间复杂性来衡量DynamoDB项目的读写。因此, 某些应用程序在切换到DynamoDB之后选择丢弃缓存层。的确如此。
SQS, 分布式队列服务
当处理大量数据时, 我们经常将计算分布到许多计算节点。在全球范围内开展业务时, 我们经常需要管道来处理从分布在广泛地理区域的节点收集的数据。为了帮助满足此类事件的需求, AWS引入了SQS(简单队列服务)。像许多公认的队列服务一样, SQS提供了一种以持久的方式在不同逻辑组件之间传递消息/作业的方法。
顾名思义, SQS是一项基本服务, 可在AWS开头使用。但是, Amazon一直在稳定地开发SQS, 并且根据需要, SQS可能具有许多可自定义的参数, 如你所需要的那样简单或强大。 SQS的一些高级功能包括:
- 保留邮件最多14天。
- 避免故障事件中消息丢失的可见性机制。
- 每封邮件的传递延迟。
- 重新驱动策略以处理失败的消息(所谓的死信)。
队列服务应该不会太复杂。你可能想知道为什么值得一整节来介绍SQS。也许你已经猜出了原因;与其他AWS服务一样, SQS是完全托管的服务, 这意味着:
- 队列具有高度可伸缩性;它可能是你正在传递的数十条消息或每秒数百万条消息, 因此SQS可以实时扩展。
- 队列是持久且分布式的, 这意味着关键数据除非过期就不会丢失。
- 你无需设置服务器即可部署队列软件。当然, 你也不需要为服务设置复杂的监控
S3, 文件存储, 而不仅仅是文件存储
S3代表简单存储服务, 与Dropbox一样, 它是面向最终用户的服务, 但这是针对应用程序的。根据定义, S3是具有简单Web界面的基于对象的存储。
S3对用户来说很简单, 但还具有许多高级功能。 I S3已成为行业标准, 尤其是对于使用其他AWS服务的应用程序。这主要是因为S3易于集成, 因此已成为大多数AWS服务的流行外部存储目的地。此外, 许多服务(例如DynamoDB, SQS等)在内部大量使用S3。
了解S3应该可以放大使用其他AWS托管服务的好处。这是因为大多数服务都将其备份存储在S3上。此外, S3是服务的常见导出/导入目标, 包括但不限于DynamoDB, RDS和Redshift。
最后, S3就像其他AWS服务一样。它受到完全管理, 因此我们无需设置任何服务器或故障转移机制即可开始使用该服务。从经济角度考虑, S3也是你使用服务时付费的方式, 因此, 你始终可以在不花太多钱的情况下试用它。
更高级的服务和SDK
还有许多其他AWS服务也值得注意。由于篇幅所限, 我们仅在此处列出一些有趣的内容:
- Redshift:基于列的数据库, 可用于以非常快的方式处理数万亿数据。如果你负责大量数据的ETL, 则必须尝试一下。
- 数据管道:IAllows使你能够在AWS服务之间快速传输数据, 并进一步允许以较小的分片定期处理数据。
- ElastiCache:受管的Memcache服务器, 很简单, 但是可以完美地完成工作。
- Lambda:下一代云计算。 Lambda以事件驱动的方式运行上传的代码, 这为设计分布式应用程序打开了新的大门。
- Route53:强大的DNS解决方案, 在其他工业标准DNS解决方案的基础上, 支持加权响应, 基于地理位置的响应。
- SNS:易于使用的通知服务, 以订阅者/发布者模式设计。
- 还有很多。
我认为, 每当你向应用程序中引入一些新组件时, 检查AWS都是一个好习惯。大多数情况下, AWS会为你提供一个惊喜, 因为它将提供现成的SaaS替代产品。
此外, 为了更轻松地访问RESTful接口, Amazon提供了几乎所有流行编程语言的SDK。找到自己喜欢的SDK应该没有问题。
摘要
我们在本文中介绍了一些最广泛使用的AWS服务。当然, AWS将在某些领域为你的业务提供帮助。例如, 你可能会选择将现有服务组件迁移到其等效的AWS组件, 例如将MySQL数据库迁移到RDS。你可能会发现自己在问我的软件的此组件是否有任何AWS服务?因此, 立即获得一个AWS帐户, 并在数分钟内提高你的生产率。
有关:
- 在云中为云开发:在AWS中使用Docker进行大数据开发
- 做功课:7个AWS认证解决方案架构师考试技巧