Detailléiert Analyse vun AWS Lambda

D'Iwwersetzung vum Artikel gouf speziell fir d'Schüler vum Cours virbereet "Cloud Servicer". Interesséiert an dëser Richtung ze entwéckelen? Kuckt de Masterclass vum Egor Zuev (TeamLead bei InBit) "AWS EC2 Service" a kommt an de nächste Coursgrupp: fänkt de 26. September un.

Detailléiert Analyse vun AWS Lambda

Méi Leit migréieren op AWS Lambda fir Skalierbarkeet, Leeschtung, Spueren an d'Fäegkeet fir Millioune oder souguer Billioune vun Ufroe pro Mount ze handhaben. Fir dëst ze maachen, musst Dir d'Infrastruktur net verwalten, op där de Service leeft. An Autoscaling erlaabt Iech Dausende vu simultan Ufroe pro Sekonn ze déngen. Ech mengen AWS Lambda kann zu Recht ee vun de populäersten AWS Servicer genannt ginn.

AWS Lambda

AWS Lambda ass en Event-driven serverlosen Informatikservice deen Iech erlaabt Code ze lafen ouni Serveren ze versuergen oder ze managen an aner AWS Servicer mat personaliséierter Logik ze verlängeren. Lambda reagéiert automatesch op verschidden Eventer (genannt Ausléiser), wéi HTTP-Ufroen duerch Amazon API Gateway, Ännerungen op Daten an Amazon S3 Eemer oder Amazon DynamoDB Dëscher; oder Dir kënnt Äre Code duerch API-Uriff lafen mat der AWS SDK a Staatsiwwergäng an AWS Step Functions.

Lambda leeft Code op enger héich verfügbarer Informatikinfrastruktur an ass voll verantwortlech fir d'Verwalte vun der Basisdaten Plattform, dorënner Server- a Betriebssystem-Ënnerhalt, Ressourcebestëmmung, Auto-Scaling, Code Iwwerwaachung, a Logbuch. Dat ass, Dir musst just Äre Code eropluede a konfiguréieren wéi a wéini et soll ausgefouert ginn. Am Tour wäert de Service ëm säi Start këmmeren an eng héich Disponibilitéit vun Ärer Applikatioun garantéieren.

Wéini op Lambda ze wiesselen?

AWS Lambda ass eng praktesch Rechenplattform déi gëeegent ass fir verschidde Benotzungsfäll, soulaang d'Sprooch an d'Runtime vun Ärem Code vum Service ënnerstëtzt ginn. Wann Dir wëllt op Äre Code a Geschäftslogik fokusséiere wärend Dir Servererhaltung, Versuergung a Skaléierung zu engem verstännegen Käschte outsourcéiert, ass AWS Lambda definitiv de Wee fir ze goen.

Lambda ass ideal fir Programméierungsinterfaces ze kreéieren, a wann Dir a Verbindung mat API Gateway benotzt, kënnt Dir d'Käschte wesentlech reduzéieren a méi séier op de Maart kommen. Et gi verschidde Weeër fir Lambda Funktiounen an Optiounen ze benotzen fir eng serverlos Architektur ze organiséieren - jidderee kann eppes passend wielen op Basis vun hirem Zil.

Lambda erlaabt Iech eng breet Palette vun Aufgaben ze maachen. Also, dank CloudWatch Support, kënnt Dir ausgestallt Aufgaben erstellen an individuell Prozesser automatiséieren. Et gi keng Restriktiounen op d'Natur an d'Intensitéit vum Gebrauch vum Service (Erënnerungsverbrauch an Zäit gi berücksichtegt), an näischt verhënnert datt Dir systematesch un engem vollwäertege Mikroservice baséiert op Lambda.

Hei kënnt Dir serviceorientéiert Aktiounen erstellen déi net kontinuéierlech lafen. En typescht Beispill ass Bildskaléierung. Och am Fall vun verdeelt Systemer bleiwen Lambda Funktiounen relevant.

Also, wann Dir net wëllt mat der Verdeelung a Verwalte vun Informatikressourcen ëmgoen, probéiert AWS Lambda; wann Dir braucht net schwéier, Ressource-intensiv Berechnungen, probéieren och AWS Lambda; wann Äre Code periodesch leeft, dat ass richteg, Dir sollt AWS Lambda probéieren.

Sécherheet

Bis elo ginn et keng Reklamatiounen iwwer Sécherheet. Op der anerer Säit, well vill vun den internen Prozesser an Implementéierungsfeatures vun dësem Modell vum Benotzer vum AWS Lambda verwaltete Runtime Ëmfeld verstoppt sinn, ginn e puer allgemeng akzeptéiert Regele vu Cloud Sécherheet irrelevant.

Wéi déi meescht AWS Servicer gëtt Lambda op enger gemeinsamer Sécherheets- a Konformitéitsbasis tëscht AWS an dem Client geliwwert. Dëse Prinzip reduzéiert d'operativ Belaaschtung vum Client, well AWS d'Aufgaben iwwerhëlt fir Servicekomponenten z'erhalen, ze verwalten an ze iwwerwaachen - vum Hostbetribssystem an der Virtualiséierungsschicht bis zur kierperlecher Sécherheet vun Infrastrukturverméigen.

Speziell iwwer AWS Lambda geschwat, AWS ass verantwortlech fir d'Gestioun vun der Basisdaten Infrastruktur, assoziéiert ënnerierdesch Servicer, Betribssystem, an Applikatiounsplattform. Wärend de Client fir d'Sécherheet vu sengem Code verantwortlech ass, vertraulech Donnéeën ze späicheren, den Zougang dozou kontrolléieren, wéi och zum Lambda Service a Ressourcen (Identity and Access Management, IAM), och bannent de Grenze vun de benotzte Funktiounen.

D'Diagramm hei drënner weist de gemeinsame Verantwortungsmodell wéi et op AWS Lambda gëllt. AWS Responsabilitéit ass orange a Client Responsabilitéit ass blo. Wéi Dir kënnt gesinn, iwwerhëlt AWS méi Verantwortung fir d'Applikatiounen déi um Service ofgesat ginn.

Detailléiert Analyse vun AWS Lambda

Gemeinsam Verantwortung Modell Uwendbar fir AWS Lambda

Lambda Runtime

Den Haaptvirdeel vu Lambda ass datt andeems Dir eng Funktioun am Numm ausféiert, de Service selwer déi néideg Ressourcen verdeelt. Dir kënnt Verschwendung vun Zäit an Effort op Systemverwaltung vermeiden a konzentréieren op Geschäftslogik a Kodéierung.

De Lambda Service ass an zwee Fligeren opgedeelt. Déi éischt ass de Kontroll Fliger. Laut Wikipedia ass de Kontrollfliger deen Deel vum Netz verantwortlech fir den Transport vum Signalverkéier a Routing. Et ass de primäre Bestanddeel deen global Entscheedungen iwwer d'Bestëmmung, d'Servicer an d'Verdeelung vun Aarbechtslaascht mécht. Ausserdeem handelt d'Kontrollplan als d'Netztopologie vum Léisungsprovider, verantwortlech fir d'Routing an d'Gestioun vum Traffic.

Déi zweet Fliger ass den Dateplang. Et, wéi de Kontrollfliger, huet seng eegen Aufgaben. De Kontrollplan bitt APIs fir d'Gestioun vu Funktiounen (CreateFunction, UpdateFunctionCode) a kontrolléiert wéi Lambda mat aneren AWS Servicer kommunizéiert. Den Datefliger kontrolléiert d'Invoke API, déi Lambda Funktiounen leeft. Nodeems eng Funktioun genannt gëtt, allokéiert oder wielt de Kontrollplan en existent Runtime-Ëmfeld dat virbereet ass fir dës Funktioun, an fuert dann de Code dran aus.

AWS Lambda ënnerstëtzt eng Vielfalt vu Programméierungssproochen, dorënner Java 8, Python 3.7, Go, NodeJS 8, .NET Core 2, an anerer, duerch hir jeweileg Runtime-Ëmfeld. AWS aktualiséiert se regelméisseg, verdeelt Sécherheetspatches a mécht aner Ënnerhaltaktivitéiten op dësen Ëmfeld. Lambda erlaabt Iech och aner Sproochen ze benotzen, wann Dir déi entspriechend Runtime selwer implementéiert. An da musst Dir ëm säin Ënnerhalt këmmeren, och seng Sécherheet iwwerwaachen.

Wéi funktionnéiert et alles a wéi wäert de Service Är Funktiounen ausféieren?

All Funktioun leeft an engem oder méi dedizéierten Ëmfeld, déi nëmme fir d'Liewe vun där Funktioun existéieren an dann zerstéiert ginn. All Ëmfeld mécht nëmmen een Uruff gläichzäiteg, awer et gëtt erëmbenotzt wann et e puer Serien Uriff op déiselwecht Funktioun sinn. All Runtime Ëmfeld lafen op virtuelle Maschinnen mat Hardwarevirtualiséierung - sougenannte microVMs. All microVM gëtt zu engem spezifeschen AWS Kont zougewisen a ka vun Ëmfeld weiderbenotzt ginn fir verschidde Funktiounen bannent deem Kont auszeféieren. MicroVMs ginn a Bausteng vun der Lambda Worker Hardware Plattform verpackt, déi vun AWS gehéiert a bedriwwe gëtt. Déi selwecht Runtime kann net vu verschiddene Funktiounen benotzt ginn, an och MicroVMs sinn eenzegaarteg fir verschidden AWS Konten.

Detailléiert Analyse vun AWS Lambda

AWS Lambda Isolatioun Modell

Isolatioun vu Runtime Ëmfeld gëtt mat verschiddene Mechanismen implementéiert. Um Top-Niveau vun all Ëmfeld ginn et separat Kopie vun de folgende Komponenten:

  • Funktioun Code
  • All Lambda Schichten ausgewielt fir d'Funktioun
  • Funktioun Ausféierung Ëmfeld
  • Minimal Benotzerraum baséiert op Amazon Linux

Déi folgend Mechanismen gi benotzt fir verschidden Ausféierungsëmfeld ze isoléieren:

  • cgroups - limitéieren Zougang zu CPU, Erënnerung, Stockage an Ressourcen Ressourcen fir all Runtime Ëmfeld;
  • Nummraim - Gruppéierungsprozess IDen, Benotzer IDen, Netzwierkschnëttplazen an aner Ressourcen, déi vum Linux Kernel geréiert ginn. All Runtime leeft a sengem eegene Nummraum;
  • seccomp-bpf - beschränkt d'Systemappellen déi an der Runtime benotzt kënne ginn;
  • iptables a Routing Dëscher - Isolatioun vun Ausféierung Ëmfeld vun all aner;
  • chroot - bitt limitéiert Zougang zum Basisdaten Dateiesystem.

Kombinéiert mat AWS propriétaire Isolatiounstechnologien, garantéieren dës Mechanismen zouverlässeg Runtime Trennung. Ëmfeld op dës Manéier isoléiert kënnen net Zougang zu Daten aus aneren Ëmfeld kréien oder änneren.

Och wa verschidde Runtime vum selwechten AWS Kont op engem eenzegen MicroVM lafen kënnen, kënnen ënner kengen Ëmstänn MicroVMs tëscht verschiddenen AWS Konten gedeelt ginn. AWS Lambda benotzt nëmmen zwee Mechanismen fir MicroVMs ze isoléieren: EC2 Instanzen a Firecracker. Gaaschtisolatioun zu Lambda baséiert op EC2 Instanzen ass zënter 2015 ronderëm. Firecracker ass en neien Open Source Hypervisor speziell entworf vun AWS fir serverlos Aarbechtslaaschten an agefouert an 2018. Déi kierperlech Hardware, déi microVMs lafen, gëtt tëscht Aarbechtslaaschten iwwer verschidde Konten gedeelt.

Spueren Ëmfeld a Prozess Staaten

Och wann d'Lambda Runtime fir verschidde Funktiounen eenzegaarteg sinn, kënnen se déiselwecht Funktioun ëmmer erëm nennen, dat heescht datt d'Runtime e puer Stonnen iwwerliewe kann ier se zerstéiert ginn.

All Lambda Runtime huet och e schreiwenbare Dateiesystem zougänglech iwwer den /tmp Verzeichnis. Säin Inhalt kann net vun anere Runtimes zougänglech sinn. Wat d'Persistenz vum Prozess ubelaangt, existéieren Dateien, déi op /tmp geschriwwe sinn, fir de ganze Liewenszyklus vum Runtime Ëmfeld. Dëst erlaabt d'Resultater vu multiple Uriff ze sammelen, wat besonnesch nëtzlech ass fir deier Operatiounen wéi Luede Maschinn Léieren Modeller.

Call Daten Transfert

D'Invoke API kann an zwee Modi benotzt ginn: Event Modus an Ufro-Äntwert Modus. Am Eventmodus gëtt den Uruff an eng Schlaang bäigefüügt fir spéider Ausféierung. Am Ufro-Äntwert Modus gëtt d'Funktioun direkt mat der geliwwerter Notzlaascht opgeruff, duerno gëtt d'Äntwert zréck. A béide Fäll leeft d'Funktioun an engem Lambda Ëmfeld, awer mat verschiddene Notzlaaschtweeër.

Wärend Ufro-Äntwert Uruff fléisst d'Notzlaascht vun enger Ufroveraarbechtungs-API (API Caller), wéi AWS API Gateway oder AWS SDK, an de Lastbalancer, an dann an de Lambda Call Service (Invoke Service). Déi lescht bestëmmt dat entspriechend Ëmfeld fir d'Funktioun auszeféieren a passéiert d'Notzlaascht dohinner fir den Uruff ofzeschléissen. De Lastbalancer kritt TLS-geschützte Traffic iwwer Internet. Traffic am Lambda Service - nom Lastbalancer - passéiert duerch en internen VPC an enger spezifescher AWS Regioun.

Detailléiert Analyse vun AWS Lambda

AWS Lambda Call Processing Model: Ufro-Äntwert Modus

Event Uruff kënnen direkt gemaach ginn oder an eng Schlaang bäigefüügt ginn. A verschiddene Fäll gëtt d'Schlaang mat Amazon SQS (Amazon Simple Queue Service) implementéiert, deen Uruff un de Lambda Call Erfüllungsservice duerch en internen Pollerprozess passéiert. Den iwwerdroenen Traffic ass geschützt vun TLS, an et gëtt keng zousätzlech Verschlësselung vun Daten, déi an Amazon SQS gespäichert sinn.

Event Uruff ginn keng Äntwerten zréck - de Lambda Worker ignoréiert einfach all Äntwertinformatioun. Event-baséiert Uriff vun Amazon S3, Amazon SNS, CloudWatch, an aner Quelle gi vu Lambda am Eventmodus veraarbecht. Uriff vun Amazon Kinesis an DynamoDB Streamen, SQS Schlaangen, Application Load Balancer, an API Gateway Uruff ginn op eng Ufro-Äntwert Manéier veraarbecht.

Iwwerwaachung

Dir kënnt Lambda Funktiounen iwwerwaachen an iwwerpréiwen mat enger Vielfalt vun AWS Mechanismen a Servicer, dorënner déi folgend.

Amazon CloudWatch
Sammelt verschidde Statistike wéi d'Zuel vun den Ufroen, d'Dauer vun den Ufroen an d'Zuel vun den Ufroen déi gescheitert sinn.

Amazon CloudTrail
Erlaabt Iech ze loggen, kontinuéierlech ze iwwerwaachen an z'erhalen Kontoaktivitéitsinformatioun verbonne mat Ärer AWS Infrastruktur. Dir wäert eng komplett Geschicht vun Aktiounen hunn mat der AWS Management Console, AWS SDK, Kommandozeil Tools, an aner AWS Servicer.

AWS Röntgen
Bitt komplett Visibilitéit an all Etappe vun der Ufroveraarbechtung an Ärer Applikatioun baséiert op enger Kaart vun hiren internen Komponenten. Erlaabt Iech Uwendungen während der Entwécklung an a Produktiounsëmfeld ze analyséieren.

AWS Config
Dir wäert fäeg sinn Ännerungen un der Lambda Funktiounskonfiguratioun ze verfollegen (inklusiv Läschen) a Runtimes, Tags, Handlernimm, Codegréisst, Erënnerungsallokatioun, Timeout-Astellungen a Concurrency Astellungen, souwéi Lambda IAM Ausféierung Roll, Subnetting, a Sécherheetsgruppbindungen .

Konklusioun

AWS Lambda bitt e mächtege Set vun Tools fir sécher a skalierbar Uwendungen ze bauen. Vill vun de Sécherheets- a Konformitéitspraktiken an AWS Lambda sinn déiselwecht wéi an aneren AWS Servicer, obwuel et Ausnahmen sinn. Zënter Mäerz 2019 ass Lambda konform mat SOC 1, SOC 2, SOC 3, PCI DSS, Health Insurance Portability and Accountability Act (HIPAA) Konformitéit, an aner Reglementer. Also, wann Dir denkt drun Är nächst Applikatioun ëmzesetzen, betruecht den AWS Lambda Service - et ass vläicht déi bescht fit fir Är Aufgab.

Source: will.com

Setzt e Commentaire