云計(jì)算工程師帶你玩轉(zhuǎn)亞馬遜云服務(wù)系列——總體介紹第一部分

來(lái)源:知乎
作者:嘿咻
時(shí)間:2020-07-28
3196
這篇文章的主要內(nèi)容就是大致的給大家介紹亞馬遜云服務(wù):AWS,amazon web services的主要和常用的幾個(gè)服務(wù)。


v2-bdbfe81afe77c41e52a0e8365b10151e_1440w.jpg

因?yàn)樽罱宜┞毜墓菊谠趶膫鹘y(tǒng)軟件公司轉(zhuǎn)型成為SaaS類(lèi)型的公司。越發(fā)的感覺(jué)到經(jīng)濟(jì)學(xué)中所說(shuō)的細(xì)致分工乃是必然的結(jié)果,serverless將會(huì)是絕大部分中小公司的最后出路,一是因?yàn)槌杀镜土?lái)確實(shí)對(duì)運(yùn)營(yíng)的效率提升有很大的幫助,而我因?yàn)槁毼坏年P(guān)系,不可避免的接觸到了北美地區(qū)云計(jì)算的霸主,亞馬遜的各種云服務(wù),其中包括了大名鼎鼎的EC2和S3,后來(lái)因?yàn)轫?xiàng)目的不斷推進(jìn),上層決定推薦我進(jìn)行進(jìn)一步的培訓(xùn)以便適應(yīng)更快節(jié)奏的serverless的開(kāi)發(fā)工作,我決定開(kāi)一個(gè)系列介紹亞馬遜云服務(wù)的常用和主要的幾個(gè)產(chǎn)品。方便大家可以更快更清楚了解每個(gè)service的用處,目的是當(dāng)你看完這一個(gè)系列之后應(yīng)該可以自己在很短的時(shí)間內(nèi)搭建起一個(gè)serverless的APP后端。這一系列的定位是入門(mén)和介紹,并且有簡(jiǎn)單的入門(mén)實(shí)際例子,我參考的難度水平是AWS Training certificate的中等難度,所以說(shuō)如果你決定要使用aws或者是僅僅有興趣想要了解,你都可以在一個(gè)系列中找到你想要的內(nèi)容!

這篇文章的主要內(nèi)容就是大致的給大家介紹亞馬遜云服務(wù):AWS,amazon web services的主要和常用的幾個(gè)服務(wù)。

本章摘要:

·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是我在日常工作中所接觸到的最多的一個(gè)服務(wù),當(dāng)然也是我們整個(gè)云服務(wù)中cost最多的一個(gè)部件,我工作中很大一部分的努力就是盡量的減少EC2的用量。

官方介紹:

Amazon Elastic Compute Cloud(Amazon EC2)是一種Web服務(wù),可以在云中提供安全并且可調(diào)整大小的計(jì)算容量。該服務(wù)旨在讓開(kāi)發(fā)人員能夠更輕松地進(jìn)行Web規(guī)模的云計(jì)算。

我理解的重點(diǎn):

說(shuō)白了就是public cloud,但是你交給亞馬遜幫你托管,每一個(gè)ec2都可以選擇不同的location,可以在全世界各地選擇。Amazon的Image成為AMI:Amazon machine image

你可以在spin up agent的時(shí)候選擇你想要使用的AMI,亞馬遜的官方提供了一些標(biāo)準(zhǔn)的AMI,但是每個(gè)公司基本上都有自己的pipeline去produce高度customize的AMI供EC2使用,每一個(gè)instance都可以隨時(shí)terminate,而且同時(shí)spin up起來(lái)的agent/instance的數(shù)量并沒(méi)有限制,這種靈活性和傳統(tǒng)的on-prem的系統(tǒng)形成了鮮明的對(duì)比,因?yàn)椴皇撬械膕ervice都會(huì)二十四小時(shí)的運(yùn)轉(zhuǎn),所以靈活的terminate或者shut down就位省錢(qián)鋪平了道路。

使用情況:

美國(guó)上千家的各行業(yè)龍頭公司都在使用,普及程度相當(dāng)廣泛。

2.S3和DynamoDB

官方介紹:

Amazon Simple Storage Service是互聯(lián)網(wǎng)存儲(chǔ)解決方案。該服務(wù)旨在降低開(kāi)發(fā)人員進(jìn)行網(wǎng)絡(luò)規(guī)模級(jí)計(jì)算的難度。

Amazon S3提供了一個(gè)簡(jiǎn)單Web服務(wù)接口,可用于隨時(shí)在Web上的任何位置存儲(chǔ)和檢索任何數(shù)量的數(shù)據(jù)。此服務(wù)讓所有開(kāi)發(fā)人員都能訪問(wèn)同一個(gè)具備高擴(kuò)展性、可靠性、安全性和快速價(jià)廉的數(shù)據(jù)存儲(chǔ)基礎(chǔ)設(shè)施,Amazon用它來(lái)運(yùn)行其全球的網(wǎng)站網(wǎng)絡(luò)。此服務(wù)旨在為開(kāi)發(fā)人員帶來(lái)最大化的規(guī)模效益。

那么什么是DynamoDB呢

Amazon DynamoDB是一種完全托管的NoSQL數(shù)據(jù)庫(kù)服務(wù),提供快速且可預(yù)測(cè)的性能,同時(shí)還能夠?qū)崿F(xiàn)無(wú)縫擴(kuò)展。使用DynamoDB,您可以免除操作和擴(kuò)展分布式數(shù)據(jù)庫(kù)的管理工作負(fù)擔(dān),因而無(wú)需擔(dān)心硬件預(yù)置、設(shè)置和配置、復(fù)制、軟件修補(bǔ)或集群擴(kuò)展等問(wèn)題。此外,DynamoDB提供了加密靜態(tài),這可以消除在保護(hù)敏感數(shù)據(jù)時(shí)涉及的操作負(fù)擔(dān)和復(fù)雜性。

使用DynamoDB,您可以創(chuàng)建數(shù)據(jù)庫(kù)表來(lái)存儲(chǔ)和檢索任意量級(jí)的數(shù)據(jù),并提供任意級(jí)別的請(qǐng)求流量。您可以擴(kuò)展或縮減您的表的吞吐容量,而不會(huì)導(dǎo)致停機(jī)或性能下降,還可以使用AWS管理控制臺(tái)來(lái)監(jiān)控資源使用情況和各種性能指標(biāo)。

Amazon DynamoDB提供了按需備份功能。它允許您創(chuàng)建表的完整備份以進(jìn)行長(zhǎng)期保留和存檔,從而滿(mǎn)足監(jiān)管合規(guī)性需求。

您可以為Amazon DynamoDB表創(chuàng)建按需備份以及啟用時(shí)間點(diǎn)恢復(fù)。時(shí)間點(diǎn)恢復(fù)有助于保護(hù)Amazon DynamoDB表免遭意外寫(xiě)入或刪除操作。使用時(shí)間點(diǎn)恢復(fù),您可以使該表還原到最近35天中的任何時(shí)間點(diǎn)。

我理解的重點(diǎn):

很多aws的新手在入門(mén)的時(shí)候,經(jīng)常沒(méi)辦法搞明白S3和DynamoDB之間的區(qū)別和聯(lián)系

S3本質(zhì)上是一種File storage然而Dynamo是一種nosql database,其中s3比較適合于你去存儲(chǔ)un-structured data,里面的文件系統(tǒng)并沒(méi)有文件夾的組成形式,所有的存儲(chǔ)對(duì)象都會(huì)變成object,其中所有的組織形式都是flat organization的container被稱(chēng)之為Buckets,作者之前任職于EMC時(shí)所參與開(kāi)發(fā)的ECS,elastic cloud storage也是同類(lèi)產(chǎn)品。每一個(gè)object有一個(gè)獨(dú)特的key用于retrive對(duì)應(yīng)的object,每一個(gè)object的最大容量為5TB。這就使得s3更適用于存儲(chǔ)大的文件。

對(duì)于dynamo來(lái)說(shuō),作為一種nosql database它的出現(xiàn)就是為了高的throughput還有很低的latency,dynamo會(huì)非常的適合當(dāng)開(kāi)發(fā)者需要處理semi structure的數(shù)據(jù)的時(shí)候。比較特殊的是dynamo支持兩種primary key一種是Partition key另外一種是partition key和sort key。

同時(shí),dynamo還提供二級(jí)的index,LSI和GSI允許開(kāi)發(fā)者query和scan table。同時(shí)數(shù)據(jù)的replication也是可以在dynamo中實(shí)現(xiàn)的,每一個(gè)value的存儲(chǔ)大小被限制在了400k之內(nèi),這使得dynamo最合適的應(yīng)用場(chǎng)景是小的數(shù)據(jù)的存儲(chǔ)。

總的對(duì)比下來(lái),s3和dynamo之間在use case,數(shù)據(jù)的大小,以及價(jià)格之間都有很大的區(qū)別,在開(kāi)發(fā)的時(shí)候謹(jǐn)慎選擇,對(duì)之后的開(kāi)發(fā)效率和經(jīng)濟(jì)上面的影響都很大。

3.lambda function

官方介紹:

AWS Lambda是一項(xiàng)計(jì)算服務(wù),可使您無(wú)需預(yù)配置或管理服務(wù)器即可運(yùn)行代碼。AWS Lambda只在需要時(shí)執(zhí)行您的代碼并自動(dòng)縮放,從每天幾個(gè)請(qǐng)求到每秒數(shù)千個(gè)請(qǐng)求。您只需按消耗的計(jì)算時(shí)間付費(fèi)–代碼未運(yùn)行時(shí)不產(chǎn)生費(fèi)用。借助AWS Lambda,您幾乎可以為任何類(lèi)型的應(yīng)用程序或后端服務(wù)運(yùn)行代碼,并且不必進(jìn)行任何管理。AWS Lambda在可用性高的計(jì)算基礎(chǔ)設(shè)施上運(yùn)行您的代碼,執(zhí)行計(jì)算資源的所有管理工作,其中包括服務(wù)器和操作系統(tǒng)維護(hù)、容量預(yù)置和自動(dòng)擴(kuò)展、代碼監(jiān)控和記錄。您只需要以AWS Lambda支持的一種語(yǔ)言(目前為Node.js、Java、C#、Go和Python)提供您的代碼。

您可以使用AWS Lambda運(yùn)行代碼以響應(yīng)事件,例如更改Amazon S3存儲(chǔ)桶或Amazon DynamoDB表中的數(shù)據(jù);以及使用Amazon API Gateway運(yùn)行代碼以響應(yīng)HTTP請(qǐng)求;或者使用通過(guò)AWS SDK完成的API調(diào)用來(lái)調(diào)用您的代碼。借助這些功能,您可以使用Lambda輕松地為Amazon S3和Amazon DynamoDB等AWS服務(wù)構(gòu)建數(shù)據(jù)處理觸發(fā)程序,處理Kinesis中存儲(chǔ)的流數(shù)據(jù),或創(chuàng)建您自己的按AWS規(guī)模、性能和安全性運(yùn)行的后端。

您也可以構(gòu)建由事件觸發(fā)的函數(shù)組成的無(wú)服務(wù)器應(yīng)用程序,并使用CodePipeline和AWS CodeBuild自動(dòng)部署這些應(yīng)用程序。

有關(guān)AWS Lambda執(zhí)行環(huán)境的更多信息,請(qǐng)參閱Lambda執(zhí)行環(huán)境和可用庫(kù)。

我的理解:

lambda function可以說(shuō)是在serverless的過(guò)程中標(biāo)志性的一環(huán),不僅僅是提供了一個(gè)可以后端處理的工具,其重要性其實(shí)很大,開(kāi)發(fā)者不需要自己管理計(jì)算資源,不需要執(zhí)行計(jì)算資源,沒(méi)有管理的成本,簡(jiǎn)直就是serverless的典型代表,不僅僅開(kāi)發(fā)的效率會(huì)有質(zhì)的提升,整個(gè)應(yīng)用的開(kāi)發(fā)成本也會(huì)下降很多。

how-amazon-web-services-makes-the-most-of-the-cloud.jpg

4.SQS和SNS

官方介紹:

Amazon Simple Queue Service(Amazon SQS)提供安全、持久且可用的托管隊(duì)列,可讓您集成和分離分布式軟件系統(tǒng)和組件。Amazon SQS提供常見(jiàn)的構(gòu)造,例如死信隊(duì)列和成本分配標(biāo)簽。它提供了一個(gè)通用Web服務(wù)API,并且可通過(guò)AWS開(kāi)發(fā)工具包支持的任何編程語(yǔ)言訪問(wèn)。

Amazon SQS支持標(biāo)準(zhǔn)隊(duì)列和FIFO隊(duì)列。

主要的特性有哪些?

·安全性–您可以控制誰(shuí)能向Amazon SQS隊(duì)列發(fā)送消息以及誰(shuí)能從隊(duì)列接收消息。

利用服務(wù)器端加密(SSE),可以使用AWS Key Management Service(AWS KMS)中托管的密鑰保護(hù)隊(duì)列中消息的內(nèi)容,從而通過(guò)此方式傳輸敏感數(shù)據(jù)。

·持久性–為確保消息的安全,Amazon SQS將消息存儲(chǔ)在多個(gè)服務(wù)器上。標(biāo)準(zhǔn)隊(duì)列支持至少一次消息傳送,而FIFO隊(duì)列支持僅一次消息處理。

·可用性–Amazon SQS使用冗余基礎(chǔ)設(shè)施為生成和使用消息提供高度并發(fā)的消息訪問(wèn)和高可用性。

·可擴(kuò)展性–Amazon SQS可獨(dú)立處理各個(gè)緩沖的請(qǐng)求,并可透明擴(kuò)展以處理任何負(fù)載增加或峰值,無(wú)需任何預(yù)配置指令。

·可靠性–Amazon SQS在處理期間鎖定消息,以便多個(gè)生成者可同時(shí)發(fā)送消息,多個(gè)使用者可同時(shí)接收消息。

·自定義–您的隊(duì)列不必完全相同—例如,您可以設(shè)置隊(duì)列的默認(rèn)延遲??梢允褂肁mazon Simple Storage Service(Amazon S3)或Amazon DynamoDB存儲(chǔ)大于256 KB的消息的內(nèi)容,Amazon SQS保留指向Amazon S3對(duì)象的指針,您也可以將一個(gè)大消息拆分為幾個(gè)小消息。

我的理解:

作為message queue的一種具體產(chǎn)品,在aws的生態(tài)中,sqs起到了至關(guān)重要的作用,不僅僅彌補(bǔ)了從lambda function或者api gateway之間的裂縫和短板,同時(shí)還起到了一個(gè)信息延遲和傳輸?shù)淖饔谩?/span>

那么sqs和sns的區(qū)別是什么呢?

簡(jiǎn)單的概括起來(lái),sns是broadcasting稱(chēng)為發(fā)布,訂閱的消息收發(fā)范式,而相對(duì)應(yīng)的sqs則是單通道的傳輸。

5.API Gateway

官方介紹:

mazon API Gateway是一項(xiàng)AWS服務(wù),能讓您創(chuàng)建、發(fā)布、維護(hù)、監(jiān)控和保護(hù)您自己的任何規(guī)模的REST和WebSocketAPI。您可以創(chuàng)建可靠、安全且可擴(kuò)展的API,用以訪問(wèn)AWS、其他Web服務(wù)以及存儲(chǔ)在AWS云中的數(shù)據(jù)。您可以創(chuàng)建API以在您自己的客戶(hù)端應(yīng)用程序(應(yīng)用)中使用?;蛘?,您可以將您的API提供給第三方應(yīng)用程序開(kāi)發(fā)人員。

API Gateway的優(yōu)勢(shì)

Amazon API Gateway具備下列優(yōu)點(diǎn):

·支持有狀態(tài)(WebSocket)和無(wú)狀態(tài)(REST)API

·與AWS服務(wù)(如AWS Lambda、Amazon Kinesis和Amazon DynamoDB)集成

·能夠使用IAM角色和策略、AWS Lambda授權(quán)方或Amazon Cognito用戶(hù)池來(lái)授權(quán)對(duì)您的API的訪問(wèn)

·用于將API作為SaaS銷(xiāo)售的使用計(jì)劃和API密鑰

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

·API使用情況和API更改的CloudTrail日志記錄和監(jiān)控

·CloudWatch訪問(wèn)日志記錄和執(zhí)行日志記錄,包括設(shè)置警報(bào)的能力

·能夠使用AWS CloudFormation模板以支持創(chuàng)建API

·支持自定義域名

我的理解:

當(dāng)我第一次接觸到API gateway的時(shí)候,我感到了前所未有的喜悅,以為之前自己在做web開(kāi)發(fā)的時(shí)候,寫(xiě)api都是一個(gè)非??菰餆o(wú)謂的過(guò)程,總是感覺(jué)到自己的時(shí)間浪費(fèi)了不少,但是自從開(kāi)始在aws上面開(kāi)發(fā)自己的網(wǎng)站,直接使用現(xiàn)成的api gateway確實(shí)能夠讓開(kāi)發(fā)的效率提升不少,并且因?yàn)槠浔旧砗蚻ambda以及s3等服務(wù)的緊密結(jié)合,使得在aws里面使用起來(lái)非常的方便。

原文鏈接:點(diǎn)擊前往 >
版權(quán)說(shuō)明:本文內(nèi)容來(lái)自于知乎,本站不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。文章內(nèi)容系作者個(gè)人觀點(diǎn),不代表快出海對(duì)觀點(diǎn)贊同或支持。如有侵權(quán),請(qǐng)聯(lián)系管理員(zzx@kchuhai.com)刪除!
優(yōu)質(zhì)服務(wù)商推薦
更多
個(gè)人VIP
小程序
快出海小程序
公眾號(hào)
快出海公眾號(hào)
商務(wù)合作
商務(wù)合作
投稿采訪
投稿采訪
出海管家
出海管家