Detalyadong pagtuki sa AWS Lambda

Ang paghubad sa artikulo espesipikong giandam alang sa mga estudyante sa kurso "Mga serbisyo sa panganod". Interesado sa pagpalambo niini nga direksyon? Tan-awa ang master class ni Egor Zuev (TeamLead sa InBit) "Serbisyo sa AWS EC2" ug apil sa sunod nga grupo sa kurso: magsugod sa Septiyembre 26.

Detalyadong pagtuki sa AWS Lambda

Daghang mga tawo ang milalin sa AWS Lambda alang sa scalability, performance, savings, ug ang abilidad sa pagdumala sa milyon-milyon o bisan trilyon nga mga hangyo matag bulan. Aron mahimo kini, dili nimo kinahanglan nga magdumala sa imprastraktura kung diin nagdagan ang serbisyo. Ug ang autoscaling nagtugot kanimo sa pagserbisyo sa libu-libo nga dungan nga mga hangyo matag segundo. Sa akong hunahuna ang AWS Lambda mahimong tawgon nga usa sa labing inila nga serbisyo sa AWS.

AWS Lambda

Ang AWS Lambda usa ka serbisyo sa serverless computing nga gipadagan sa panghitabo nga nagtugot kanimo sa pagpadagan sa code nga walay paghatag o pagdumala sa mga server ug pagpalapad sa ubang mga serbisyo sa AWS gamit ang custom logic. Awtomatikong motubag ang Lambda sa lainlaing mga panghitabo (gitawag nga mga trigger), sama sa mga hangyo sa HTTP pinaagi sa Amazon API Gateway, mga pagbag-o sa datos sa mga balde sa Amazon S3 o mga lamesa sa Amazon DynamoDB; o mahimo nimong ipadagan ang imong code pinaagi sa mga tawag sa API gamit ang AWS SDK ug mga pagbalhin sa estado sa AWS Step Functions.

Ang Lambda nagpadagan sa code sa usa ka magamit kaayo nga imprastraktura sa kompyuter ug hingpit nga responsable sa pagdumala sa nagpahiping plataporma, lakip ang pagmintinar sa server ug operating system, paghatag sa kapanguhaan, auto-scaling, pag-monitor sa code, ug pag-log. Kana mao, kinahanglan nimo nga i-upload ang imong code ug i-configure kung giunsa ug kanus-a kini kinahanglan ipatuman. Sa baylo, ang serbisyo ang mag-atiman sa paglansad niini ug masiguro ang taas nga pagkaanaa sa imong aplikasyon.

Kanus-a mobalhin sa Lambda?

Ang AWS Lambda usa ka kombenyente nga plataporma sa pagkompyuter nga angayan alang sa lain-laing mga kaso sa paggamit, basta ang pinulongan ug runtime sa imong code gisuportahan sa serbisyo. Kung gusto nimo nga ipunting ang imong code ug lohika sa negosyo samtang nag-outsourcing sa pagpadayon sa server, paghatag, ug pag-scale sa makatarunganon nga gasto, ang AWS Lambda siguradong ang paagi nga moadto.

Ang Lambda maayo alang sa paghimo sa mga interface sa programming, ug kung gigamit kauban ang API Gateway, mahimo nimong makunhuran ang mga gasto ug makaadto sa merkado nga mas paspas. Adunay lain-laing mga paagi sa paggamit sa Lambda function ug mga kapilian alang sa pag-organisar sa usa ka serverless arkitektura - ang tanan makapili sa usa ka butang nga angay base sa ilang tumong.

Gitugotan ka sa Lambda sa paghimo sa daghang mga buluhaton. Busa, salamat sa suporta sa CloudWatch, makahimo ka og mga deferred nga buluhaton ug ma-automate ang indibidwal nga mga proseso. Wala’y mga pagdili sa kinaiyahan ug intensity sa paggamit sa serbisyo (gikonsiderar ang pagkonsumo sa memorya ug oras), ug wala’y makapugong kanimo sa sistematikong pagtrabaho sa usa ka hingpit nga microservice nga gibase sa Lambda.

Dinhi mahimo ka makahimo og mga aksyon nga nakabase sa serbisyo nga dili magpadayon. Usa ka tipikal nga pananglitan mao ang pag-scale sa imahe. Bisan sa kaso sa mga gipang-apod-apod nga sistema, ang mga gimbuhaton sa Lambda nagpabilin nga may kalabutan.

Busa, kung dili nimo gusto nga atubangon ang paggahin ug pagdumala sa mga kapanguhaan sa kompyuter, sulayi ang AWS Lambda; kung dili nimo kinahanglan ang bug-at, mga kalkulasyon nga kusog sa kapanguhaan, sulayi usab ang AWS Lambda; kung ang imong code nagdagan matag karon ug unya, husto kana, kinahanglan nimong sulayan ang AWS Lambda.

Kasegurohan

Sa pagkakaron wala pay reklamo bahin sa kaluwasan. Sa laing bahin, tungod kay daghan sa mga internal nga proseso ug mga bahin sa pagpatuman niini nga modelo gitago gikan sa tiggamit sa AWS Lambda nga gidumala nga runtime environment, ang pipila nga kasagarang gidawat nga mga lagda sa seguridad sa panganod nahimong walay kalabotan.

Sama sa kadaghanan sa mga serbisyo sa AWS, ang Lambda gihatag sa usa ka gipaambit nga seguridad ug pagsunod nga sukaranan tali sa AWS ug sa kustomer. Kini nga prinsipyo nagpamenos sa operational nga palas-anon sa kliyente, tungod kay ang AWS nag-abaga sa mga tahas sa pagmintinar, pagdumala ug pag-monitor sa mga sangkap sa serbisyo - gikan sa host operating system ug ang virtualization layer ngadto sa pisikal nga seguridad sa mga asset sa imprastraktura.

Partikular nga naghisgot bahin sa AWS Lambda, ang AWS ang responsable sa pagdumala sa nagpahiping imprastraktura, kauban nga nagpahiping mga serbisyo, operating system, ug platform sa aplikasyon. Samtang ang kliyente ang responsable sa seguridad sa iyang code, pagtipig sa kompidensyal nga datos, pagkontrol sa pag-access niini, ingon man sa serbisyo ug kahinguhaan sa Lambda (Identity and Access Management, IAM), lakip sa sulod sa mga limitasyon sa mga gimbuhaton nga gigamit.

Ang dayagram sa ubos nagpakita sa gipaambit nga modelo sa responsibilidad ingon nga kini magamit sa AWS Lambda. Ang AWS Responsibility kay orange ug ang Customer Responsibility kay blue. Sama sa imong nakita, ang AWS adunay daghang responsibilidad alang sa mga aplikasyon nga gipakatap sa serbisyo.

Detalyadong pagtuki sa AWS Lambda

Gipaambit nga Modelo sa Responsibilidad nga Magamit sa AWS Lambda

Lambda runtime

Ang nag-unang bentaha sa Lambda mao nga pinaagi sa paghimo sa usa ka function alang kanimo, ang serbisyo mismo naggahin sa kinahanglan nga mga kapanguhaan. Mahimo nimong malikayan ang pag-usik sa oras ug paningkamot sa pagdumala sa sistema ug pag-focus sa lohika ug coding sa negosyo.

Ang serbisyo sa Lambda gibahin sa duha ka eroplano. Ang una mao ang control plane. Sumala sa Wikipedia, ang kontrol nga eroplano mao ang bahin sa network nga responsable sa pagdala sa pagsenyas sa trapiko ug pag-ruta. Kini ang nag-unang bahin nga naghimo sa mga global nga desisyon bahin sa paghatag, pagserbisyo, ug pag-apod-apod sa mga workloads. Dugang pa, ang control plane naglihok isip topology sa network sa solution provider, responsable sa pagruta ug pagdumala sa trapiko.

Ang ikaduhang eroplano mao ang data plane. Kini, sama sa control plane, adunay kaugalingong mga buluhaton. Ang control plane naghatag og mga API alang sa pagdumala sa mga gimbuhaton (CreateFunction, UpdateFunctionCode) ug nagkontrol kung giunsa ang Lambda nakigsulti sa ubang mga serbisyo sa AWS. Gikontrol sa data plane ang Invoke API, nga nagpadagan sa mga function sa Lambda. Human matawag ang usa ka function, ang control plane maggahin o mopili sa usa ka kasamtangan nga runtime environment nga giandam nang daan alang niana nga function, ug dayon ipatuman ang code niini.

Ang AWS Lambda nagsuporta sa lain-laing mga programming language, lakip ang Java 8, Python 3.7, Go, NodeJS 8, .NET Core 2, ug uban pa, pinaagi sa ilang tagsa-tagsa ka runtime environment. Ang AWS kanunay nga nag-update niini, nag-apod-apod sa mga patch sa seguridad, ug nagpahigayon sa ubang mga kalihokan sa pagmentinar niini nga mga palibot. Gitugotan ka sa Lambda nga mogamit usab sa ubang mga lengguwahe, kung ipatuman nimo ang angay nga runtime sa imong kaugalingon. Ug unya kinahanglan nimo nga atimanon ang pagmentinar niini, lakip ang pag-monitor sa kaluwasan niini.

Giunsa kini tanan ug kung giunsa ang serbisyo himuon ang imong mga gimbuhaton?

Ang matag function nagdagan sa usa o daghan pa nga gipahinungod nga mga palibot, nga naglungtad lamang alang sa kinabuhi sa kana nga function ug dayon gilaglag. Ang matag palibot naghimo lamang og usa ka tawag sa usa ka higayon, apan kini gigamit pag-usab kung adunay daghang mga serial call sa parehas nga function. Ang tanan nga runtime nga palibot nagdagan sa mga virtual machine nga adunay virtualization sa hardware - gitawag nga microVMs. Ang matag microVM gi-assign sa usa ka piho nga AWS account ug mahimong magamit pag-usab sa mga palibot aron mahimo ang lainlaing mga gimbuhaton sa sulod sa account. Ang mga MicroVM giputos sa mga bloke sa pagtukod sa Lambda Worker hardware platform, nga gipanag-iya ug gipadagan sa AWS. Ang parehas nga runtime dili magamit sa lainlaing mga gimbuhaton, ni ang mga microVM talagsaon sa lainlaing mga account sa AWS.

Detalyadong pagtuki sa AWS Lambda

AWS Lambda Isolation Model

Ang pag-inusara sa mga runtime nga palibot gipatuman gamit ang daghang mga mekanismo. Sa taas nga lebel sa matag palibot adunay lainlain nga mga kopya sa mga musunud nga sangkap:

  • Function code
  • Bisan unsang Lambda layer nga gipili alang sa function
  • Kalibutan sa pagpatuman sa function
  • Minimal nga wanang sa tiggamit base sa Amazon Linux

Ang mosunud nga mga mekanismo gigamit aron ihimulag ang lainlaing mga palibot sa pagpatuman:

  • cgroups - limitahan ang pag-access sa CPU, memorya, pagtipig ug mga kapanguhaan sa network alang sa matag runtime nga palibot;
  • namespaces - paggrupo sa proseso ID, user ID, network interface ug uban pang mga kapanguhaan nga gidumala sa Linux kernel. Ang matag runtime nagdagan sa kaugalingon nga namespace;
  • seccom-bpf - nagpugong sa mga tawag sa sistema nga magamit sa runtime;
  • iptables ug routing tables - pag-inusara sa execution environment gikan sa usag usa;
  • chroot - naghatag ug limitado nga pag-access sa nagpahiping file system.

Inubanan sa AWS proprietary isolation technologies, kini nga mga mekanismo nagsiguro sa kasaligan nga runtime separation. Ang mga palibot nga nahimulag niining paagiha dili maka-access o makausab sa datos gikan sa ubang mga palibot.

Bisan kung daghang mga runtime sa parehas nga AWS account mahimong modagan sa usa ka microVM, sa bisan unsang mga kahimtang mahimo’g ipaambit ang mga microVM tali sa lainlaing mga account sa AWS. Ang AWS Lambda naggamit lang og duha ka mekanismo aron ihimulag ang mga microVM: EC2 instances ug Firecracker. Ang pag-inusara sa mga bisita sa Lambda base sa EC2 nga mga higayon naglibot sukad 2015. Ang firecracker usa ka bag-ong open source hypervisor nga espesipikong gidisenyo sa AWS alang sa walay server nga mga workloads ug gipaila niadtong 2018. Ang pisikal nga hardware nga nagpadagan sa mga microVM gipaambit tali sa mga workload sa lainlaing mga account.

Pag-save sa mga palibot ug mga estado sa proseso

Bisan kung ang mga runtime sa Lambda talagsaon sa lainlaing mga gimbuhaton, mahimo nilang tawagan ang parehas nga function nga balik-balik, nagpasabut nga ang oras sa pagdagan mahimong mabuhi sa daghang oras sa wala pa malaglag.

Ang matag runtime sa Lambda aduna usab usa ka masulat nga file system nga ma-access pinaagi sa /tmp directory. Ang mga sulod niini dili ma-access gikan sa ubang mga runtime. Kutob sa proseso sa pagpadayon sa estado, ang mga file nga gisulat sa /tmp anaa alang sa tibuok nga siklo sa kinabuhi sa runtime nga palibot. Gitugotan niini ang mga resulta sa daghang mga tawag nga matipon, nga labi ka mapuslanon alang sa mga mahal nga operasyon sama sa pagkarga sa mga modelo sa pagkat-on sa makina.

Pagtawag sa pagbalhin sa datos

Ang Invoke API mahimong gamiton sa duha ka mode: event mode ug request-response mode. Sa mode nga panghitabo, ang tawag idugang sa usa ka pila para sa ulahi nga pagpatuman. Sa request-response mode, ang function gitawag dayon uban sa gihatag nga payload, pagkahuman ang tubag gibalik. Sa duha nga mga kaso, ang function nagdagan sa usa ka palibot sa Lambda, apan adunay lainlaing mga agianan sa payload.

Atol sa hangyo-tubag nga mga tawag, ang payload moagos gikan sa usa ka request processing API (API Caller), sama sa AWS API Gateway o AWS SDK, ngadto sa load balancer, ug dayon ngadto sa Lambda call service (Invoke Service). Ang ulahi nagtino sa angay nga palibot alang sa pagpatuman sa function ug gipasa ang payload didto aron makompleto ang tawag. Ang load balancer makadawat ug TLS-protected nga trapiko sa Internet. Ang trapiko sulod sa serbisyo sa Lambda—human sa load balancer—moagi sa internal nga VPC sa usa ka partikular nga rehiyon sa AWS.

Detalyadong pagtuki sa AWS Lambda

Modelo sa Pagproseso sa Tawag sa AWS Lambda: Mode sa Paghangyo-Pagtubag

Ang mga tawag sa panghitabo mahimo dayon o idugang sa usa ka pila. Sa pipila ka mga kaso, ang pila gipatuman gamit ang Amazon SQS (Amazon Simple Queue Service), nga nagpasa sa mga tawag sa serbisyo sa pagtuman sa tawag sa Lambda pinaagi sa internal nga proseso sa poller. Ang gipasa nga trapiko gipanalipdan sa TLS, ug walay dugang nga pag-encrypt sa datos nga gitipigan sa Amazon SQS.

Ang mga tawag sa panghitabo wala magbalik sa mga tubag-ang Lambda Worker wala magtagad sa bisan unsang kasayuran sa pagtubag. Ang mga tawag nga nakabase sa panghitabo gikan sa Amazon S3, Amazon SNS, CloudWatch, ug uban pang mga gigikanan giproseso sa Lambda sa mode sa panghitabo. Ang mga tawag gikan sa Amazon Kinesis ug DynamoDB streams, SQS queues, Application Load Balancer, ug API Gateway nga mga tawag giproseso sa paagi sa pagtubag sa hangyo.

Pagbantay

Mahimo nimong bantayan ug i-audit ang mga gimbuhaton sa Lambda gamit ang lainlaing mga mekanismo ug serbisyo sa AWS, lakip ang mosunod.

amazoncloudwatch
Pagkolekta lain-laing mga estadistika sama sa gidaghanon sa mga hangyo, ang gidugayon sa mga hangyo, ug ang gidaghanon sa mga hangyo nga napakyas.

Amazon CloudTrail
Nagtugot kanimo sa pag-log, padayon nga pag-monitor, ug pagpadayon sa kasayuran sa kalihokan sa account nga may kalabotan sa imong imprastraktura sa AWS. Adunay ka kompleto nga kasaysayan sa mga aksyon nga gihimo gamit ang AWS Management Console, AWS SDK, command line tool, ug uban pang serbisyo sa AWS.

AWS X-Ray
Naghatag bug-os nga visibility sa tanan nga mga yugto sa pagproseso sa hangyo sa imong aplikasyon base sa usa ka mapa sa mga internal nga sangkap niini. Nagtugot kanimo sa pag-analisar sa mga aplikasyon sa panahon sa pag-uswag ug sa mga palibot sa produksiyon.

AWS Config
Mahimo nimong masubay ang mga pagbag-o sa configuration sa function sa Lambda (lakip ang pagtangtang) ug mga runtime, mga tag, mga ngalan sa handler, gidak-on sa code, alokasyon sa memorya, mga setting sa timeout ug mga setting sa concurrency, ingon man ang Lambda IAM execution role, subnetting, ug security group bindings .

konklusyon

Ang AWS Lambda nagtanyag usa ka kusgan nga hugpong sa mga himan alang sa paghimo og luwas ug masukod nga mga aplikasyon. Daghan sa mga gawi sa seguridad ug pagsunod sa AWS Lambda parehas sa ubang mga serbisyo sa AWS, bisan kung adunay mga eksepsiyon. Sa Marso 2019, ang Lambda nagsunod sa SOC 1, SOC 2, SOC 3, PCI DSS, Health Insurance Portability and Accountability Act (HIPAA) pagsunod, ug uban pang mga regulasyon. Mao nga, kung naghunahuna ka bahin sa pagpatuman sa imong sunod nga aplikasyon, hunahunaa ang serbisyo sa AWS Lambda - tingali kini ang labing angay alang sa imong buluhaton.

Source: www.habr.com

Idugang sa usa ka comment