AWS

Hvad er serverfri? AWS Lambda og andre FaaS

Hvad er serverfri? AWS Lambda og andre FaaS
For at forstå serverfri, AWS Lamda og lignende funktion-som-en-service-tilbud, vil vi starte med en historie og et landskab af computing og derefter sætte disse nye tjenester i kontekst. Lad os komme igang.

Fysiske computere

Vi er kommet langt fra de massive servere fra dotcom-æraen. Tilbage i disse dage var serverinfrastruktur for det meste på stedet. En virksomhed kørte sine løsninger på en fysisk server. Folk brugte hele separate servere til forskellige formål (sikkerhedskopier, mailserver, webserver osv.). Når en bestemt server ikke fulgte med virksomhedens voksende behov, blev den erstattet af en nyere hurtigere server. Du skaleres ved at få bedre hardware. Du skaleres lodret.

Hypervisorer

Så kom en periode med hypervisorer. Det fik fart med stigningen i VMWare, og folk indså, at de kan få et rack til at styre dem alle. Et rack til at køre alle de forskellige brugssager og give hver af dem deres egen separate virtuelle maskine. Dette gav også anledning til cloud computing, og virksomheder stoppede direkte med at investere i serverhardware og valgte i stedet at 'leje' virtuelle servere.

Kæmpe og dyre datacentre blev administreret af cloud-udbydere over hele verden. Virksomheder udnyttede dette ved at levere deres tjenester globalt ved hjælp af det bredest mulige udvalg af datacentre. Dette blev primært gjort for at reducere ventetid, forbedre kundeoplevelsen og målrette mod et større marked.

Dette fik også softwareforfattere til at tænke i form af distribuerede systemer. De skrev software til ikke at køre på en eneste kæmpe computer, men på mange middelmådige på en konsekvent og pålidelig måde. Du skaleres vandret.

Du kan stadig skalere lodret. Faktisk på grund af virtualisering blev tilvejebringelsen af ​​flere ressourcer lettere. Du slukkede VM, justerede dens ressourcer og betalte din skyudbyder lidt ekstra. Et stykke kage.

De underliggende fysiske servere er ikke forsvundet. Cloududbydere er nu ansvarlige for at styre kompleksiteten af ​​netværksgrænseflader, OS-kompatibilitet og andre skræmmende patologier.

Beholdere

Så kom containerne. Containere var denne fantastiske lette abstraktion. Et virtuelt miljø med et operativsystem, der tillader, at software pakkes og implementeres som en enkelt enhed. Ligesom virtuelle maskiner kørte hver container uvidende om andre containere, men de delte den samme kerne af operativsystemet.

Dette tillod folk at distribuere software på servere (fysisk eller virtuelt betyder det ikke noget) på et endnu højere abstraktionsniveau. Du var ligeglad med produktionsoperativsystemet. Så længe det understøttede din containeriseringsteknologi, ville den køre din software. Også containere er lettere at spinde op, hvilket gjorde tjenesterne mere skalerbare end nogensinde.

Dette øgede fleksibiliteten i distribuerede systemer yderligere. Med teknologier som Kubernetes kan du have legioner af containere, der kører en kompleks vifte af tjenester. Distribuerede systemer tilbyder mange fordele høj tilgængelighed, robusthed og evnen til at helbrede sig selv fra en knudefejl.

På samme tid, fordi de er så komplekse, er de også sværere at designe, implementere, vedligeholde, overvåge og debugge. Dette er i modstrid med den oprindelige tendens til at abstrakte kompleksiteten ud af din software og uddelegere dette ansvar til din skyudbyder. Det er her serverløs arkitektur kommer ind.

Serverløs eller Function-as-a-Service (FaaS)

Ideen om serverløs har fået trækkraft hovedsagelig på grund af AWS Lambda, og her vil jeg bruge det som en model til at tale om serverløs. De principper, som FaaS er baseret på, er:

Når ingen har adgang til dine tjenester, er tjenesterne ikke aktive. Dette var ikke tilfældet i de traditionelle hostingløsninger, hvor du betaler for en VPS, der altid er i gang, selvom den sad inaktiv og ikke gjorde noget mere nyttigt end at lytte efter en ny anmodning.
I serverløs arkitektur kører din tjeneste ikke, medmindre nogen rent faktisk vil bruge den. Når en anmodning kommer ind, oprettes der en tjeneste i farten for at håndtere den.

Hvordan virker det?

Din funktion (for eksempel et Python-, Go- eller Java-program) sidder som en fil på AWS Lambda. Med denne funktion forbinder du visse triggerhændelser, som en API-gateway eller et nyt objekt, der kommer ind i din S3-bucket. Og visse ressourcer som en database eller et andet objektlager eller en EC2-forekomst.

Som svar på nogen af ​​de tilknyttede triggerhændelser opretter AWS Lambda en container med din funktion inde i den. Funktionen udfører og giver et svar. For eksempel, hvis et nyt billede kommer ind i din S3-skovl, kan AWS Lambda have en maskinlæringskode inde i den, som ville analysere dette billede og skrive dets output til en DynamoDB (en af ​​AWS 'datalagertjeneste).

Du har ikke betalt for en hel server, men kun for den mængde hukommelse, du har tildelt din funktion, antallet af anmodninger, du får, og hvor længe din funktion kører.

Desuden behøver du ikke bekymre dig om skalering af containere som reaktion på en tung indgående arbejdsbyrde. Hvis der sker mange triggerhændelser samtidigt, vil AWS sørge for at spinde nye containere op og planlægge arbejdsbelastninger mellem dem og alle de andre kompleksiteter.

Ikke en komplet løsning

Da virtuelle maskiner kom sammen, ophørte de fysiske servere ikke med at eksistere. Da containere ankom, brugte vi stadig VM'er. FaaS er en abstraktion på et højere niveau, og den passer rigtig godt sammen med det moderne design af RESTful API'er, statsløse tjenester og lette sprog som Node.js eller Python.

Kører dog stadig på en fysisk server (administreret af f.eks. AWS), den lytter stadig efter indgående anmodninger (du betaler bare ikke direkte for det), og du skal stadig gemme data på en vedvarende måde, hvorfor det har integrationer til S3, EC2 og andre tjenester. Det er ikke desto mindre en nyttig abstraktion.

Bedste Linux Distros til spil i 2021
Linux-operativsystemet er kommet langt fra dets originale, enkle, serverbaserede udseende. Dette operativsystem er forbedret enormt i de senere år og ...
Sådan registreres og streames din gaming-session på Linux
Tidligere blev spil kun betragtet som en hobby, men med tiden oplevede spilindustrien en enorm vækst med hensyn til teknologi og antallet af spillere....
Bedste spil at spille med håndsporing
Oculus Quest introducerede for nylig den gode idé om håndsporing uden controllere. Med et stadigt stigende antal spil og aktiviteter, der udfører supp...