Skip to content

云计算工程师带你玩转亚马逊云服务系列——总体介绍第一部分

云计算工程师带你玩转亚马逊云服务系列——总体介绍第一部分

因为最近我所供职的公司正在在从传统软件公司转型成为SaaS类型的公司。越发的感觉到经济学中所说的细致分工乃是必然的结果,serverless将会是绝大部分中小公司的最后出路,一是因为成本低廉,二来确实对运营的效率提升有很大的帮助,而我因为职位的关系,不可避免的接触到了北美地区云计算的霸主,亚马逊的各种云服务,其中包括了大名鼎鼎的EC2和S3,后来因为项目的不断推进,上层决定推荐我进行进一步的培训以便适应更快节奏的serverless的开发工作,我决定开一个系列介绍亚马逊云服务的常用和主要的几个产品。方便大家可以更快更清楚了解每个service的用处,目的是当你看完这一个系列之后应该可以自己在很短的时间内搭建起一个serverless的APP后端。这一系列的定位是入门和介绍,并且有简单的入门实际例子,我参考的难度水平是AWS Training certificate的中等难度,所以说如果你决定要使用aws或者是仅仅有兴趣想要了解,你都可以在一个系列中找到你想要的内容!

这篇文章的主要内容就是大致的给大家介绍亚马逊云服务:AWS,amazon web services的主要和常用的几个服务。

本章摘要:

·EC2

S3

·DynamoDB

·Lambda function

·SQS/SNS

·API gateway

·Cloudfront

·Elastic load balancing

·EBS

·Cloudwatch

·CloudTrail

·Config as code:troposphere/cloudformation/teraform

1.EC2

EC2是我在日常工作中所接触到的最多的一个服务,当然也是我们整个云服务中cost最多的一个部件,我工作中很大一部分的努力就是尽量的减少EC2的用量。

官方介绍:

Amazon Elastic Compute Cloud(Amazon EC2)是一种Web服务,可以在云中提供安全并且可调整大小的计算容量。该服务旨在让开发人员能够更轻松地进行Web规模的云计算。

我理解的重点:

说白了就是public cloud,但是你交给亚马逊帮你托管,每一个ec2都可以选择不同的location,可以在全世界各地选择。Amazon的Image成为AMI:Amazon machine image

你可以在spin up agent的时候选择你想要使用的AMI,亚马逊的官方提供了一些标准的AMI,但是每个公司基本上都有自己的pipeline去produce高度customize的AMI供EC2使用,每一个instance都可以随时terminate,而且同时spin up起来的agent/instance的数量并没有限制,这种灵活性和传统的on-prem的系统形成了鲜明的对比,因为不是所有的service都会二十四小时的运转,所以灵活的terminate或者shut down就位省钱铺平了道路。

使用情况:

美国上千家的各行业龙头公司都在使用,普及程度相当广泛。

2.S3和DynamoDB

官方介绍:

Amazon Simple Storage Service是互联网存储解决方案。该服务旨在降低开发人员进行网络规模级计算的难度。

Amazon S3提供了一个简单Web服务接口,可用于随时在Web上的任何位置存储和检索任何数量的数据。此服务让所有开发人员都能访问同一个具备高扩展性、可靠性、安全性和快速价廉的数据存储基础设施,Amazon用它来运行其全球的网站网络。此服务旨在为开发人员带来最大化的规模效益。

那么什么是DynamoDB呢

Amazon DynamoDB是一种完全托管的NoSQL数据库服务,提供快速且可预测的性能,同时还能够实现无缝扩展。使用DynamoDB,您可以免除操作和扩展分布式数据库的管理工作负担,因而无需担心硬件预置、设置和配置、复制、软件修补或集群扩展等问题。此外,DynamoDB提供了加密静态,这可以消除在保护敏感数据时涉及的操作负担和复杂性。

使用DynamoDB,您可以创建数据库表来存储和检索任意量级的数据,并提供任意级别的请求流量。您可以扩展或缩减您的表的吞吐容量,而不会导致停机或性能下降,还可以使用AWS管理控制台来监控资源使用情况和各种性能指标。

Amazon DynamoDB提供了按需备份功能。它允许您创建表的完整备份以进行长期保留和存档,从而满足监管合规性需求。

您可以为Amazon DynamoDB表创建按需备份以及启用时间点恢复。时间点恢复有助于保护Amazon DynamoDB表免遭意外写入或删除操作。使用时间点恢复,您可以使该表还原到最近35天中的任何时间点。

我理解的重点:

很多aws的新手在入门的时候,经常没办法搞明白S3和DynamoDB之间的区别和联系

S3本质上是一种File storage然而Dynamo是一种nosql database,其中s3比较适合于你去存储un-structured data,里面的文件系统并没有文件夹的组成形式,所有的存储对象都会变成object,其中所有的组织形式都是flat organization的container被称之为Buckets,作者之前任职于EMC时所参与开发的ECS,elastic cloud storage也是同类产品。每一个object有一个独特的key用于retrive对应的object,每一个object的最大容量为5TB。这就使得s3更适用于存储大的文件。

对于dynamo来说,作为一种nosql database它的出现就是为了高的throughput还有很低的latency,dynamo会非常的适合当开发者需要处理semi structure的数据的时候。比较特殊的是dynamo支持两种primary key一种是Partition key另外一种是partition key和sort key。

同时,dynamo还提供二级的index,LSI和GSI允许开发者query和scan table。同时数据的replication也是可以在dynamo中实现的,每一个value的存储大小被限制在了400k之内,这使得dynamo最合适的应用场景是小的数据的存储。

总的对比下来,s3和dynamo之间在use case,数据的大小,以及价格之间都有很大的区别,在开发的时候谨慎选择,对之后的开发效率和经济上面的影响都很大。

3.lambda function

官方介绍:

AWS Lambda是一项计算服务,可使您无需预配置或管理服务器即可运行代码。AWS Lambda只在需要时执行您的代码并自动缩放,从每天几个请求到每秒数千个请求。您只需按消耗的计算时间付费–代码未运行时不产生费用。借助AWS Lambda,您几乎可以为任何类型的应用程序或后端服务运行代码,并且不必进行任何管理。AWS Lambda在可用性高的计算基础设施上运行您的代码,执行计算资源的所有管理工作,其中包括服务器和操作系统维护、容量预置和自动扩展、代码监控和记录。您只需要以AWS Lambda支持的一种语言(目前为Node.js、Java、C#、Go和Python)提供您的代码。

您可以使用AWS Lambda运行代码以响应事件,例如更改Amazon S3存储桶或Amazon DynamoDB表中的数据;以及使用Amazon API Gateway运行代码以响应HTTP请求;或者使用通过AWS SDK完成的API调用来调用您的代码。借助这些功能,您可以使用Lambda轻松地为Amazon S3和Amazon DynamoDB等AWS服务构建数据处理触发程序,处理Kinesis中存储的流数据,或创建您自己的按AWS规模、性能和安全性运行的后端。

您也可以构建由事件触发的函数组成的无服务器应用程序,并使用CodePipeline和AWS CodeBuild自动部署这些应用程序。

有关AWS Lambda执行环境的更多信息,请参阅Lambda执行环境和可用库。

我的理解:

lambda function可以说是在serverless的过程中标志性的一环,不仅仅是提供了一个可以后端处理的工具,其重要性其实很大,开发者不需要自己管理计算资源,不需要执行计算资源,没有管理的成本,简直就是serverless的典型代表,不仅仅开发的效率会有质的提升,整个应用的开发成本也会下降很多。

4.SQS和SNS

官方介绍:

Amazon Simple Queue Service(Amazon SQS)提供安全、持久且可用的托管队列,可让您集成和分离分布式软件系统和组件。Amazon SQS提供常见的构造,例如死信队列和成本分配标签。它提供了一个通用Web服务API,并且可通过AWS开发工具包支持的任何编程语言访问。

Amazon SQS支持标准队列和FIFO队列。

主要的特性有哪些?

·安全性–您可以控制谁能向Amazon SQS队列发送消息以及谁能从队列接收消息。

利用服务器端加密(SSE),可以使用AWS Key Management Service(AWS KMS)中托管的密钥保护队列中消息的内容,从而通过此方式传输敏感数据。

·持久性–为确保消息的安全,Amazon SQS将消息存储在多个服务器上。标准队列支持至少一次消息传送,而FIFO队列支持仅一次消息处理。

·可用性–Amazon SQS使用冗余基础设施为生成和使用消息提供高度并发的消息访问和高可用性。

·可扩展性–Amazon SQS可独立处理各个缓冲的请求,并可透明扩展以处理任何负载增加或峰值,无需任何预配置指令。

·可靠性–Amazon SQS在处理期间锁定消息,以便多个生成者可同时发送消息,多个使用者可同时接收消息。

·自定义–您的队列不必完全相同—例如,您可以设置队列的默认延迟。可以使用Amazon Simple Storage Service(Amazon S3)或Amazon DynamoDB存储大于256 KB的消息的内容,Amazon SQS保留指向Amazon S3对象的指针,您也可以将一个大消息拆分为几个小消息。

我的理解:

作为message queue的一种具体产品,在aws的生态中,sqs起到了至关重要的作用,不仅仅弥补了从lambda function或者api gateway之间的裂缝和短板,同时还起到了一个信息延迟和传输的作用。

那么sqs和sns的区别是什么呢?

简单的概括起来,sns是broadcasting称为发布,订阅的消息收发范式,而相对应的sqs则是单通道的传输。

5.API Gateway

官方介绍:

mazon API Gateway是一项AWS服务,能让您创建、发布、维护、监控和保护您自己的任何规模的REST和WebSocketAPI。您可以创建可靠、安全且可扩展的API,用以访问AWS、其他Web服务以及存储在AWS云中的数据。您可以创建API以在您自己的客户端应用程序(应用)中使用。或者,您可以将您的API提供给第三方应用程序开发人员。

API Gateway的优势

Amazon API Gateway具备下列优点:

·支持有状态(WebSocket)和无状态(REST)API

·与AWS服务(如AWS Lambda、Amazon Kinesis和Amazon DynamoDB)集成

·能够使用IAM角色和策略、AWS Lambda授权方或Amazon Cognito用户池来授权对您的API的访问

·用于将API作为SaaS销售的使用计划和API密钥

·用以安全地推出更改的金丝雀版本部署

·API使用情况和API更改的CloudTrail日志记录和监控

·CloudWatch访问日志记录和执行日志记录,包括设置警报的能力

·能够使用AWS CloudFormation模板以支持创建API

·支持自定义域名

我的理解:

当我第一次接触到API gateway的时候,我感到了前所未有的喜悦,以为之前自己在做web开发的时候,写api都是一个非常枯燥无谓的过程,总是感觉到自己的时间浪费了不少,但是自从开始在aws上面开发自己的网站,直接使用现成的api gateway确实能够让开发的效率提升不少,并且因为其本身和lambda以及s3等服务的紧密结合,使得在aws里面使用起来非常的方便。

相关推荐: 【运营干货】亚马逊运营过程中最常见的一些问题及解决办法!

亚马逊退货率多高会触发listing冻结? 一般的是10%以上会引发冻结,有些特殊类目可能稍有宽限。 如果你的SKU比较多,其他SKU都正常的话,通常不会因为这个就被关店;相反如果这个SKU是卖得比较多的一款,SKU又少的话,可能会引发问题。 退货率太高,建议…

    码刀科技(www.lekshop.cn)是国内知名企业级电商平台提供商,为企业级商家提供最佳的电商平台搭建(多种模式电商平台搭建:B2B/B2B2C/B2C/O2O/新零售/跨境等)、平台管理系统开发及互联网采购解决方案服务, 联系客服了解更多.

    电子商务网站建设的重要性和好处