作者都是各自领域经过审查的专家,并撰写他们有经验的主题. 我们所有的内容都经过同行评审,并由同一领域的Toptal专家验证.
Minhao在Linux上使用PHP和c++开发服务器端应用程序方面有10多年的经验. 他是AWS的忠实用户和云专家.
在过去的几年里,每个人嘴边最热门的词就是“生产力”.“在快速发展的互联网世界里,快速完成某件事总是会得到好评. 尽管需要快速准确地实现真正的业务逻辑,但作为一个 经验丰富的PHP开发人员 我还花了几百个小时在其他任务上,比如 设置数据库 或者缓存、部署项目、监视在线统计信息等等. 许多开发人员多年来一直在与这些所谓的杂项任务作斗争, 浪费时间而不是专注于项目逻辑.
四年前,当一个朋友提到亚马逊网络服务(AWS)时,我的生活发生了变化. 它打开了一扇新的大门,极大地提高了生产力和项目质量. 对于没有使用过AWS的用户, 请阅读这篇文章, 我相信你会觉得值得花时间的.
亚马逊网络服务于2006年正式推出. 很多人可能听说过它,但可能不知道它能提供什么. 所以,第一个问题是:什么是AWS?
亚马逊网络服务(AWS), 是云计算服务的集合吗, 也称为web服务, 组成了亚马逊提供的云计算平台.com.
Wikipedia
根据这个定义, 我们知道两件事:AWS是基于云的, AWS是一系列服务的集合, 而不是单一的服务. 由于这并没有告诉你太多,在我看来,初学者最好将AWS理解为:
There are, of course, 使用AWS有更多的优势, so, 让我们快速了解一下它是如何提高你的工作效率的.
要开始使用任何服务,您需要有一个帐户. 为AWS创建一个帐户应该不超过5分钟. 确保你手头有以下资料:
That’s it. 一旦你有上面列出的信息准备好,访问 AWS web page,并按照简单易懂的说明创建一个帐户.
Note the following:
云服务的好处之一是能够按需获得共享资源. 亚马逊为用户提供了四层服务来访问其服务, 按难易程度排序:
在本文中,我们将使用Management Console. So, after you 登录控制台,您将看到如下所示的屏幕:
有两个方面需要注意:
云资源最基本的需求是虚拟服务器. EC2,即弹性计算云,是Amazon为其虚拟服务器服务选择的名称. 让我们看看让Linux服务器联机是多么容易.
yum
to manage packages:ec2-user
,用你的私钥. ec2-user
AWS默认也有sudo功能吗. 虽然不能更改默认用户名, 您可以创建任何用户,并根据您的偏好分配适当的权限. 您的服务器地址可以在这里找到:上述过程不超过5分钟, 这就是我们如何轻松地建立和运行一个虚拟服务器. 在下一节中,我们将了解AWS如何帮助我们管理刚刚创建的实例.
大多数AWS资源按小时计费,这提供了良好的灵活性. For example, 以我们刚刚创建的EC2实例为例, 有两种方法可以使它停止服务:停止和终止. 这两个操作都将停止计费. 不同之处在于,通过停止一个实例,我们可以稍后重新启动它,同时保存所有的工作. In contrast, 通过终止实例, 我们将实例返回给AWS进行回收,但没有办法恢复信息. 终止实例的需求源于AWS在默认情况下为每个区域每个帐户设置了20个实例的限制, 停止的实例在终止之前仍然计数.
我们可以通过以下方式快速停止实例:
当您停止EC2实例时,您的账单也停止增长. 它在以下场景中特别有用:
AWS的定价信息可在线获取. 在做了一些计算之后,您可能会提出这样的问题:AWS实际上更便宜吗? 通过乘以一个月的小时费率,看起来它根本没有竞争力. 答案是肯定的和否定的.
如果您简单地计算按需资源在一个月内的小时费率,AWS并不便宜. 但是,我们仍然有如下所示的保留实例计费选择:
对于最小的资源需求, 我们可以使用保留实例获得30%到70%的折扣, 以及作为按需实例计费的其他不同资源. In practice, 这将比一年的承诺便宜30%到40%, 使用保留实例的三年承诺甚至更多. 这就是我对上述问题投赞成票的原因. 如果算上安全性和监控方面的好处,AWS甚至会更便宜.
AWS的目标之一是尽可能地减少运营成本. Traditionally, 我们需要一个庞大的系统工程师团队来维护我们基础设施的安全和健康, 无论是在线还是现场. 有经验的团队将编写和部署他们的自动化工具来简化这个过程. 然而,管理服务在实践中也变成了一个复杂的项目. AWS在帮助我们管理资源方面起到了救星的作用. 下面,我列出了一些最常用的AWS服务:
AWS如何在两个独立的层中处理服务的访问控制. 在网络级别,它是通过使用称为“安全组”的思想来实现的.“所有AWS服务都在安全组中. 安全小组决定谁可以通过. 以我们的EC2实例为例,AWS自动为我们创建了一个安全组:
我们可以通过配置入站/出站规则来决定哪些可以进来,哪些可以出去. EC2服务支持TCP、UDP和ICMP规则. 安全组的作用类似于外部硬件级防火墙, 我们永远不需要去修补它.
使用安全组的另一个优点是它是可重用的. 一个安全组可以在许多资源之间共享. In practice, 它消除了为每个资源逐个设置安全策略的麻烦,从而大大提高了维护效率. Also, 安全组的可共享特性使我们能够在一个地方对其进行配置, 并将该安全策略应用于任何其他资源, 没有手动设置的麻烦, 每个资源一个接一个.
AWS提供了另一种处理访问控制的方法 IAM. 当您需要访问RESTful接口时,这是一个应用程序级别的安全控制. 每个REST请求都必须签名,以便AWS知道谁在访问服务. Also, 通过检查预先配置的策略列表, AWS将决定该操作是应该被拒绝还是允许通过.
我们不会在本文中详细介绍IAM. However, 请注意,AWS在安全性方面做了很多考虑,因此您可以确保没有未经授权的访问者可以访问您的机密数据.
CloudWatch AWS是否提供了一项服务,用于从您的AWS资源中收集和跟踪各种指标. 它更强大是因为它有能力对某些事件(或警报)做出反应。. 在CloudWatch的帮助下,我们可以监视新创建的EC2实例的运行状况.
NOTESNS是AWS提供的一种基于主题的通知发送服务. 通知可以通过电子邮件、短信、iOS/Android推送通知和许多其他格式发送.
从监控到通知,CloudWatch试图在几次点击中自动化监控需求. 各种AWS服务预定义了大量的指标. 对于高级用户,您甚至可以为您的应用程序创建自定义指标.
Regarding cost, CloudWatch提供的免费服务通常对初创项目来说已经足够了. However, 即使你的公司在成长, 增加的成本通常不到服务成本的1%. Check detailed pricing 欲知更多资料. 考虑到使用CloudWatch建立监控系统是多么容易, 它已成为最常用的监控工具.
作为开发人员,我们可能经历过以下场景:
而且,正如您可能已经猜到的那样,这是AWS可以提供帮助的另一个重要领域. 有很多应用程序级别的服务可用,因此您不需要考虑其他任何东西.
让我们来介绍其中的一些,给你一个快速的了解.
关系数据库(RDBMS)已经被许多应用程序广泛采用. 在生产环境中,在使用 RDBMS, 从如何设置和配置数据库开始, 然后是何时以及如何创建和恢复备份.
In our team, 我们的数据库管理员(DBA)过去至少花费30%的时间编写设置和维护脚本. 随着 AWS RDS, 我们的DBA有更多的时间进行SQL性能调优, DBA最喜欢投资哪个领域.
那么,RDS能为你提供什么呢? In short:
To conclude, 在设置和维护数据库服务时,RDS节省了大量时间. 作为交换,您将比相应的EC2服务器多支付大约40%的费用. 因此,是选择RDS还是自己部署相应的服务器是一个业务决策. However, 它确实允许您将更多的时间投入到与实际业务相关的工作中,而不是基础设施的稳定性和可伸缩性. 另外,您很快就会注意到这是AWS倡导的业务方式.
近年来,NoSQL已经成为一个热门话题. 因为许多现实生活中的项目并不需要各种关系DBMS的支持, 一系列NoSQL数据库已经被引入市场. 亚马逊在这方面并没有落后. DynamoDB (http://aws.amazon.com/dynamodb)是亚马逊在2012年宣布的键值存储, 这项服务的核心贡献者是Werner Vogels, CTO of Amazon, 超可扩展系统领域的世界顶级专家之一.
众所周知,亚马逊处理着巨大的流量. DynamoDB派生自Dynamo, 它一直是亚马逊许多业务的内部存储引擎, 包括它的购物车服务,每年圣诞节都会处理数十亿个请求. DynamoDB在扩展方面没有限制.
Further, 与其他NoSQL解决方案相比, 例如Cassandra或MongoDB, there is an enormous economic advantage to DynamoDB; it is billed in the unit of reserved throughput (how many write/read per second is allowed), 哪些可以实时增加或减少. 下面是DynamoDB和其他独立NoSQL解决方案的成本比较表:
Business Need | DynamoDB service | DynamoDB cost | 使用其他服务 | 使用其他服务时的成本 |
Small Business (小于1000 DAU, 16GB数据) |
10 write unit 10 read unit | $9.07/month • |
t1.micro •• 16GB EBS ••• | $14.64/month |
Medium Business (小于100k DAU, 160GB数据) |
100 write unit 100 read unit | $101.62/month |
m4.xlarge 160GB EBS | $190.95/month |
Large Business (高达100万DAU, 1TB数据) |
1000 write unit 1000 read unit | $852.58/month | Clustered c4.4xlarge • 512GB EBS • | $1329.24/month |
•公平起见,价格是根据美国东部地区的按需定价计算的
••选择AWS EC2实例来托管其他NoSQL服务
•••EBS是AWS提供的持久化存储服务
我们可以从表中读出, DynamoDB提供开箱即用的服务, 而且与构建自己的键值存储相比,通常成本更低. 这是因为除非您达到MongoDB/Cassandra集群的最大容量, 你在为你从未使用过的东西支付更多的钱.
亚马逊以完全托管的方式提供服务. 这意味着您不必担心如何设置, scale or monitor your DynamoDB; they are all done by AWS. In fact, DynamoDB项目的读写总是以恒定的时间复杂度来衡量, 不管被操作的数据有多大. 因此,一些应用程序在切换到DynamoDB后选择放弃缓存层. Amazing, indeed.
当处理大量数据时,我们经常将计算分配给许多计算节点. 在全球开展业务时, 我们经常需要一个管道来处理从地理分布广泛的节点收集的数据. 为了帮助满足此类事件的需求,AWS引入了SQS,即简单队列服务. 像许多已确认队列服务一样, SQS提供了一种在不同逻辑组件之间传递消息/作业的方法, 以持久的方式.
顾名思义,SQS是在AWS开始时提供的基本服务. However, 亚马逊一直在稳步发展SQS, 根据需要, SQS可能像您需要的那样简单或强大,具有许多可定制的参数. SQS的一些高级功能包括:
队列服务不应该太复杂. 您可能想知道为什么值得用一整节来介绍SQS. Perhaps you have already guessed the reason; like other AWS service, SQS是一个完全托管的服务, which means:
S3代表简单存储服务,就像Dropbox一样,是为最终用户提供的服务, 但这是应用程序. 根据定义,S3是具有简单web界面的基于对象的存储.
S3对用户来说很简单,但也附带了许多高级特性. S3已经成为行业标准,特别是对于使用其他AWS服务的应用程序. 这主要是因为S3非常容易集成,因此它已成为大多数AWS服务的热门外部存储目的地. 此外,许多服务(如DynamoDB、SQS等)在内部大量使用S3.
理解S3可以增强使用其他AWS托管服务的好处. 这是因为大多数服务将备份存储在S3上. Also, S3是服务的常用导出/导入目的地,包括, but not limited to, DynamoDB, RDS, and Redshift.
Finally, S3 is like other AWS services; it’s fully managed so we can simply start using the service without setting up any server or failover mechanisms. 在经济方面,S3也是一种按使用付费的服务,因此,您可以随时试用它,而无需花费太多成本.
还有许多其他AWS服务也值得注意. 由于篇幅有限,我们在这里只列出一些有趣的:
我认为,每当向应用程序引入一些新组件时,检查AWS是一个好习惯. 大多数情况下,AWS会给您一个惊喜,因为它提供了一个现成的SaaS替代方案.
Furthermore, 使访问RESTful接口变得更容易, Amazon已经为几乎所有流行的编程语言提供了sdk. 你应该不难找到你最喜欢的 SDK.
在本文中,我们介绍了一些使用最广泛的AWS服务. 当然,在某些领域,AWS可以帮助您的业务. 您可以选择将现有服务组件迁移到其AWS等效组件, 如MySQL数据库到RDS, for instance. 您可能会问我的软件的这个组件是否有任何AWS服务? 因此,立即获得AWS帐户,并在几分钟内提高您的工作效率.
Minhao在Linux上使用PHP和c++开发服务器端应用程序方面有10多年的经验. 他是AWS的忠实用户和云专家.
世界级的文章,每周发一次.
世界级的文章,每周发一次.
Join the Toptal® community.