Het serverloze computerconcept is een up-and-coming uitvoeringsmodel dat de behoeften van moderne, op de cloud gebaseerde software probeert aan te pakken.
In deze video van mijn cursus, Introduction to Serverless, laat ik je kennismaken met de serverloze architectuur. We zullen het hebben over de belangrijkste punten en het vergelijken met andere modellen voor het abstraheren van serverfunctionaliteit naar de cloud.
Allereerst zijn er in een serverloos systeem servers. Hopelijk is dat geen grote verrassing voor jou. Het draait allemaal om wie ze beheert.
Laten we eens kijken naar een heel gebruikelijk diagram dat verschillende soorten services laat zien.
Aan de linkerkant hebt u uw traditionele lokale systeem. Alles wordt door u beheerd, tot en met de fysieke machine en het netwerk. Dan heb je verschillende niveaus van abstractie.
Het eerste niveau van abstractie is infrastructuur als een service. Hier bent u verantwoordelijk voor alles vanaf het besturingssysteem. Voorbeelden hiervan zijn DigitalOcean of Amazon's EC2. De provider biedt een instantie voor u, en vanaf dat moment staat u er alleen voor.
De volgende abstractielaag is container als een service. Het is ook een vrij nieuwe speler die veel tractie heeft gekregen vanwege de populariteit van Docker. In een AWS-wereld zou dit EC2 Container Services zijn.
Dan hebben we platform as a service, waarbij u niet verantwoordelijk bent voor het beheer van een besturingssysteem of containers. U bent als enige verantwoordelijk voor uw aanvraag. Prominente voorbeelden uit deze categorie zijn Heroku, AWS Elastic Beanstalk en Google Compute Engine.
Een paar jaar geleden zou de grafiek hier zijn geëindigd. Maar tegenwoordig hebben we een nieuwe terminologie, dat wil zeggen, functioneert als een service. In plaats van een toepassing uit te voeren die staat heeft, wat geldt voor alle traditionele webframeworks, ook al gebruik je REST en andere dingen, heb je een systeem dat stateloze containers gebruikt die worden geactiveerd door gebeurtenissen, efemeraal zijn en volledig worden beheerd door de service. leverancier.
Dit is wat serverless wordt genoemd. Er is nog een concept genaamd back-end als een service dat soms ook wordt beschouwd als onderdeel van de serverarchitectuur. Maar naar mijn mening behoort het meer tot software als een service, wat in essentie is wat je probeert te bouwen.
Laten we het dus eens hebben over functies als een service.
Zoals de naam doet vermoeden, bent u als ontwikkelaar verantwoordelijk voor het schrijven van uitvoerbare functies die door gebeurtenissen worden geactiveerd en uitgevoerd. Dit kan een voltooide bestandsupload naar S3 of een verzoek via een API-eindpunt zijn. Tot nu toe, zo eenvoudig. Om het concept volledig te begrijpen, ga ik het echter hebben over enkele sleutelgebieden die functies definiëren als een service.
De eerste is staat. Functies zijn zeer beperkt als het gaat om het behoud van de staat. Over het algemeen moet je ervan uitgaan dat je het helemaal niet kunt doen. Functies volgen meer vuur en vergeten principe. Als u iets wilt opslaan, doet u het met een externe service, zoals bestandsopslag of een database- of cacheserver.
De tweede is de uitvoeringsduur. U hebt mogelijk een servertoepassing die uren of dagen draait zonder opnieuw op te starten, afhankelijk van uw implementatieproces. Hetzelfde geldt voor achtergrondverwerking. Met functies is de uitvoeringstijd beperkt. Er wordt niet verwacht dat de functie meer dan een paar seconden wordt uitgevoerd, en AWS Lambda beëindigt bijvoorbeeld elke functie die na vijf minuten nog niet is uitgevoerd. Als u een zeer langlopende taak hebt, werkt de functie als service mogelijk niet zo goed.
Dan hebben we opstartlatentie. Dit kan alles zijn tussen een paar milliseconden en minuten. Dit is natuurlijk afhankelijk van de taal en het systeem dat u gebruikt. Doorgaans begint een Python- of JavaScript-functie op AWS binnen milliseconden, maar als u de Java Virtual Machine gebruikt, kan het even duren voordat de machine is gecentrifugeerd, vooral als uw functie in de laatste tien minuten niet is uitgevoerd, of je ervaart een plotselinge toename in uitvoering.
Dit leidt tot vragen over de schaalbaarheid en uitvoeringskosten en het antwoord dat u zoekt is: maak u er geen zorgen over. Schalen wordt beheerd door de serviceprovider en de kosten zijn eenvoudig.
Als je tien keer een functie uitvoert, betaal je precies voor deze tien aanroepingen. Als je 1000 keer loopt, betaal je voor 1.000. Het is natuurlijk wat ingewikkelder dan dat, maar dat is de kern van het verhaal.
Het hebben van een serverloos systeem kan erg voordelig zijn. Het is geweldig als je inconsistent verkeer hebt, bijvoorbeeld een piek aan het begin van het uur, of heel weinig gelegenheidsverzoeken, omdat je geen middelen hoeft toe te wijzen die het grootste deel van de tijd inactief zijn.
Om samen te vatten, serverloze systemen hebben servers, maar ze worden volledig beheerd door cloudproviders. Functies vormen de kern van een serverloze architectuur en ze worden uitgevoerd met behulp van triggers. Schaling en hoge beschikbaarheid worden al door de cloudaanbieders verzorgd. Als u heel af en toe vraag hebt, of een grote maar korte zoektocht, helpt serverloos u om uw kosten laag te houden.
In de volledige cursus, Introduction to Serverless, laat ik je zien hoe je Amazon Web Services kunt gebruiken om een "serverloze" web-app te maken, compleet met een REST API back-end. Je zult ook zien hoe om te gaan met een aantal geavanceerde scenario's zoals het integreren van andere AWS-services en het orkestreren van statusbewuste functies. Onderweg bouw je een coole webservice om tekst naar spraak te converteren.
Je kunt deze cursus meteen volgen met een abonnement op Envato Elements. Voor een enkel laag maandelijks bedrag krijg je niet alleen toegang tot deze cursus, maar ook tot onze groeiende bibliotheek met meer dan 1000 videocursussen en toonaangevende e-boeken over Envato Tuts+.
Bovendien krijgt u nu onbeperkte downloads van de enorme Envato Elements-bibliotheek met meer dan 400.000 creatieve items. Creëer met unieke lettertypen, foto's, afbeeldingen en sjablonen en lever sneller betere projecten.