Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Industrial Internet of Things >> Cloud computing

Wat is serverloos computeren?

Infrastructuurbeheer voegt een extra laag complexiteit toe aan de moderne workflow voor softwareontwikkeling. Het draaiende houden van servers, zorgen voor beveiligingsupdates en het schalen van resources kost DevOps-teams kostbare tijd. Bij serverless computing worden alle infrastructuuractiviteiten afgehandeld door de serviceprovider. Als zodanig stelt serverloos ontwikkelteams in staat zich te concentreren op het schrijven van code in plaats van te veel tijd te besteden aan infrastructuurbeheer.

In dit artikel wordt uitgelegd wat serverloos computergebruik is en hoe het zich verhoudt tot verschillende cloudimplementatiemodellen. We zullen ook de voor- en nadelen van serverloos onderzoeken en enkele veelvoorkomende gebruiksscenario's bespreken.

Wat is Serverless Computing?

Serverloos computergebruik is een methode om code in de cloud te implementeren en uit te voeren zonder serverinrichting en infrastructuurbeheer. Ondanks zijn naam vertrouwt serverless nog steeds op cloud- of fysieke servers voor het uitvoeren van code. Ontwikkelaars houden zich echter niet bezig met de onderliggende infrastructuur. Dit wordt overgelaten aan de serverloze provider die de benodigde computerbronnen dynamisch toewijst en namens de gebruiker beheert.

Voor ontwikkelaars betekent dit dat er geen tijd wordt besteed aan serverbeheer, onderhoud, schalen van resources of capaciteitsplanning. Ze uploaden eenvoudig hun code en laten de provider de server-side logica uitvoeren op basis van verschillende gebeurtenissen of verzoeken. In tegenstelling tot bekende cloud-factureringsmodellen worden serverloze services in rekening gebracht op basis van het aantal keren dat de code wordt uitgevoerd of wanneer een bepaalde gebeurtenis wordt geactiveerd.

Hoe werkt serverloos computeren?

In een serverloze omgeving wordt code getriggerd door gebeurtenissen en uitgevoerd als een functie. Dit is de reden waarom serverless vaak wordt geassocieerd met "Functions-as-a-Service" of FaaS, wat een soortgelijk concept is. FaaS is een gebeurtenisgestuurd cloudmodel dat de server-side logica voor code-uitvoering afhandelt zonder tussenkomst van de gebruiker. Deze gebeurtenissen kunnen van alles zijn, van een eenvoudig HTTP-verzoek, API-aanroep tot een databasequery of bestandsupload.

Functies worden uitgevoerd in staatloze containers. Dit betekent dat rekenresources voor het uitvoeren van een functie alleen worden ingericht wanneer ze worden aangeroepen. Er worden geen gegevens in het RAM bewaard of naar de schijf geschreven. Nadat aan het verzoek is voldaan, wordt de status van de app gereset en is er geen geheugen van de transactie. Als u een nieuw verzoek doet, moeten de resources helemaal opnieuw worden ingericht en wordt de code uitgevoerd zonder enige verwijzing naar de vorige aanroep.

Om deze staatloze toestand te accommoderen, moeten applicaties worden ontworpen als functies die in staatloze containers kunnen worden uitgevoerd. Dit wordt meestal bereikt via microservices. Grote monoliet-apps worden opgesplitst in kleinere segmenten en onderling verbonden via een API. Monolith-apps kunnen nog steeds als afzonderlijke functies worden uitgevoerd, maar dit is niet gebruikelijk. Rekening houdend met het feit dat er bij elk verzoek een nieuwe rekencontainer wordt geleverd, zullen grote functies een negatieve invloed hebben op de uitvoeringssnelheid en -duur.

FaaS-functies werken niet oneindig. Ze worden na een bepaalde tijd beëindigd wanneer ze worden gebeld. In de meeste gevallen treedt een time-out van functies op na ongeveer vijf minuten. Dit betekent dat apps die langdurige taken uitvoeren, opnieuw moeten worden ontworpen om rekening te houden met beëindigingslimieten.

Het inrichten en initialiseren van containers voor het uitvoeren van functies kost ook tijd. Dit wordt meestal gemeten in milliseconden. Het kan echter enkele seconden duren voordat complexe functies zijn geïnitialiseerd, waardoor er een grotere latentie ontstaat.

Er zijn twee algemene methoden voor het initialiseren van een functie:warme start en koude start. Bij een waarschuwingsstart worden resources van een eerdere gebeurtenis hergebruikt, terwijl bij een koude start een nieuwe container wordt ingezet. De tijd die nodig is om een ​​functie te initialiseren en uit te voeren, hangt af van de hoeveelheid code, de programmeertaal, het aantal bibliotheken dat het script gebruikt en van vele andere factoren. In termen van latentie kost een koude start meer tijd om een ​​functie te starten.

Hoe verhoudt serverloos computergebruik zich tot BaaS, PaaS en IaaS?

Zoals met elke softwaretrend, is er geen officiële definitie die beschrijft wat serverloos is en wat niet. Daarom wordt serverless computing vaak verward met andere cloudservices en implementatiemodellen. Het concept van serverloos computergebruik draait om twee vergelijkbare gebieden:

Backend-as-a-Service — BaaS stelt ontwikkelaars in staat zich te concentreren op het schrijven van frontend-interfaces terwijl alle backend-activiteiten worden overgedragen aan een serviceprovider. Deze taken achter de schermen omvatten meestal kant-en-klare gebruikersverificatie, opslag, databasebeheer en hostingservices. Ontwikkelaars hoeven ook geen servers te beheren waarop hun backend wordt uitgevoerd, waardoor snellere app-implementaties mogelijk zijn.

Functions-as-a-Service — Dit serverloze cloudservicemodel maakt een einde aan infrastructuurbeheer. De serviceprovider is belast met het on-demand inzetten van computerbronnen om de code van de gebruiker uit te voeren. Dit gebeurt telkens wanneer een gebeurtenis of verzoek wordt geactiveerd. Serverloze functies worden uitgevoerd in staatloze containers, wat betekent dat rekenresources alleen worden ingezet wanneer de functie wordt aangeroepen.

Het belangrijkste punt van verwarring is tussen Backend-as-a-Service en Platform-as-a-Service (PaaS). De eerste is een techniek van serverloos computergebruik, terwijl de laatste een cloudimplementatiemodel is. Hoewel ze enkele basiskenmerken delen, is PaaS niet afgestemd op de vereisten van serverloos.

Platform-as-a-Service — Met PaaS huren gebruikers de hardware- en softwareoplossingen die nodig zijn voor ontwikkelingsworkloads van een serviceprovider tegen een abonnementsprijs. Het stelt ontwikkelaars in staat meer tijd te besteden aan coderen zonder zich zorgen te hoeven maken over infrastructuurbeheer. Aan de andere kant biedt BaaS extra functies, zoals kant-en-klare gebruikersauthenticatie, beheerde databases, e-mailmeldingen en dergelijke. BaaS stelt ontwikkelaars ook in staat zich uitsluitend te concentreren op het bouwen van de frontend terwijl ze verschillende backend-services op aanvraag integreren.

Infrastructure-as-a-Service — IaaS verwijst naar een selfservice-cloudoplossing waarbij de provider namens de gebruiker de infrastructuur host. Alle serverprovisioning- en beheeractiviteiten, inclusief software-installatie, worden afgehandeld door de gebruiker. Sommige IaaS-providers bieden ook serverloze oplossingen, maar als duidelijk verschillende producten.

Veelvoorkomende toepassingen voor serverloze computergebruik

Zoals eerder vermeld, is serverloos niet voor iedereen. Maar als uw behoeften zijn afgestemd op sommige van deze gebruiksscenario's, kunt u profiteren van serverloos.

API's bouwen

Omdat er geen servers hoeven te worden beheerd, is het bouwen van zeer schaalbare en responsieve API's een van de meest populaire gebruiksscenario's voor serverloos. De functie voor automatisch schalen van serverless zorgt ervoor dat API's altijd beschikbaar zijn, zelfs bij veel verkeer. Daarnaast worden er geen kosten in rekening gebracht voor inactieve bronnen wanneer er geen oproepen naar de API zijn.

Websites en applicaties

Het implementeren van websites en webgebaseerde apps op een serverloos platform vereist geen voorafgaande infrastructuurconfiguratie. Dit verkort aanzienlijk de tijd die nodig is om een ​​volledig functionele web-app te starten. De functie voor automatisch schalen speelt hier ook een belangrijke rol, omdat de gebruiker zich geen zorgen hoeft te maken over het inrichten van meer servers om de toenemende vraag te ondersteunen. Als gevolg hiervan is het veel gemakkelijker om 100% uptime te behouden.

Meertalige toepassingen

Met serverless kan één app in verschillende talen worden geschreven. Met Serverless kunnen ontwikkelaars een monoliet-app opsplitsen in kleinere delen en deze als microservices uitvoeren. Die microservices communiceren vervolgens met elkaar via een API. Elk segment van een app kan worden geschreven met een andere programmeertaal.

CI/CD-pijplijnen

Automatisering is de sleutel tot succesvolle ontwikkelings-, test- en integratiepipelines. Met Serverless kunnen ontwikkelaars automatisch code testen en bugs sneller oplossen. Omdat serverloos op gebeurtenissen is gebaseerd, kunnen gebruikers gebeurtenissen instellen om geautomatiseerde tests te activeren zonder handmatige tussenkomst.

Wat zijn de voordelen van serverloos computergebruik?

Vergeleken met traditionele servergeoriënteerde cloudcomputing, abstraheert serverless computing infrastructuuractiviteiten. Alles werkt out-of-the-box, wat op zijn beurt zorgt voor snellere code-releases en geautomatiseerde schaalbaarheid tegen een lagere prijs.

Dit zijn de drie meest voorkomende voordelen van serverloos:

Automatisch schalen

De serverloze provider schaalt infrastructuurbronnen op basis van de vraag. Schaalbewerkingen worden dynamisch en automatisch uitgevoerd zonder tussenkomst van ontwikkelaars.

Snellere time-to-market

Zonder complexe serverclusters te hoeven inrichten, kunnen ontwikkelaars zich meer richten op het bereiken van een hogere releasesnelheid. Dit versnelt de tijd die nodig is om code vrij te geven voor productie of om incrementele codewijzigingen door te voeren, wat resulteert in snellere levering van apps aan klanten.

Geoptimaliseerde kosten

Omdat alles on-demand wordt geleverd, hoeven organisaties nooit te betalen voor ongebruikte opslagruimte, rekentijd of netwerken. Het verbruik van serverloze services wordt doorgaans gemeten in milliseconden en dienovereenkomstig gefactureerd.

Wat zijn de nadelen van serverloos computergebruik?

Zoals bij elke software-oplossing, heeft ook serverloos een aantal nadelen. Maar afhankelijk van de app die je aan het bouwen bent, maak je je misschien niet zo druk om een ​​aantal van deze nadelen van serverless.

Latentie

Bij het uitvoeren van een functie zetten serverloze providers automatisch de benodigde bronnen in bij elke aanroep. Afhankelijk van de grootte van de werklast, worden containers doorgaans in milliseconden ingericht, maar het kan zelfs enkele seconden duren. Latentie kan worden verminderd door middel van "waarschuwing starts", waarbij instanties van een eerdere uitvoering worden hergebruikt.

Uitvoeringsduur

De uitvoeringstijd van een serverloze functie is beperkt en wordt na een bepaalde periode afgebroken. Dit is meestal ongeveer vijf minuten na het aanroepen, maar verschilt per provider. Uitvoeringslimieten zijn een groot nadeel voor apps die langdurige processen initiëren. Dit probleem verhelpen is mogelijk door de code in kleinere stukjes te segmenteren en deze als microservices uit te voeren.

Vendor Lock-In

Providers gebruiken meestal eigen technologieën om hun serverloze services mogelijk te maken. Dit kan problemen veroorzaken voor gebruikers die hun workloads naar een ander platform willen migreren. Bij het overstappen naar een andere provider zijn wijzigingen in de code en de architectuur van de app onvermijdelijk.

Beveiliging

Gebruikers hebben weinig controle over de instantieconfiguratie die hun code uitvoert. Dit is voor de gebruiker verborgen en valt in het domein van de dienstverlener. Als zodanig vallen ook de beveiligingsoperaties in handen van de provider. De gebruiker is hulpeloos als er een aanval plaatsvindt en vertrouwt uitsluitend op de provider om de schade te beperken en het systeem te herstellen. Applicaties met meerdere toegangspunten in een serverloze omgeving zijn vatbaarder voor kwetsbaarheden vanwege een groter aanvalsoppervlak.

Wat is de toekomst voor serverloos computergebruik?

Serverless computing is nog steeds een relatief nieuwe technologie. De toekomst hangt af van het vermogen van serviceproviders om enkele van de hierboven genoemde nadelen op te lossen - het belangrijkste, koude starts. Providers moeten de tijd verkorten die nodig is om een ​​functie uit te voeren nadat deze een tijdje in de inactieve toestand heeft gestaan. Door dit probleem op te lossen, wordt de latentie verminderd en wordt een naadloze gebruikerservaring gegarandeerd.

Serverless vertrouwt momenteel op staatloze containers voor het uitvoeren van functies. De toekomst van serverloos gaat in de richting van het mogelijk maken van stateful-apps om de voordelen van serverloos te benutten. Hierdoor kunnen ontwikkelaars stateful-apps bouwen zonder zich zorgen te maken over backend-gegevensbeheer.

In termen van DevOps zal serverless leiden tot de uitbreiding van NoOps. Deze trend zal ertoe leiden dat serverloze providers alle infrastructuuractiviteiten namens de klant afhandelen. In een dergelijke omgeving hoeven bedrijven geen interne operationele teams te hebben.

De verwachting is dat Kubernetes de komende jaren de basis wordt van serverless. Met ondersteuning voor netwerken, flexibele automatische schaling en multi-cloud-implementaties, verbetert Kubernetes-portabiliteit serverloos computergebruik op meer dan één manier. Het is onpraktisch om bepaalde soorten apps serverloos uit te voeren, omdat serviceproviders hun gedrag soms beperken. Met Kubernetes kunnen ontwikkelaars die beperkingen overwinnen en serverloze platforms bouwen op basis van hun specifieke behoeften.

Conclusie

Hoewel de naam suggereert dat er geen servers zijn, is serverless computing nog steeds afhankelijk van cloud- of fysieke servers. Het is een computermodel dat infrastructuuractiviteiten elimineert, waardoor ontwikkelaars zich kunnen concentreren op het schrijven en implementeren van apps. Het serverloze model draait om twee hoofdgebieden:Backend-as-a-Service en Functions-as-a-Service.

De eerste biedt gebruikers een kant-en-klare backend-architectuur, terwijl de laatste het uitvoeren van apps in staatloze containers mogelijk maakt. Deze containers worden automatisch ingericht op basis van gebeurtenissen of triggers. Als zodanig is serverless geen wondermiddel voor alle huidige ontwikkelingsproblemen. Het is vooral gericht op niet-monolithische apps die gebruikmaken van een op microservices gebaseerde architectuur.


Cloud computing

  1. Serverless Computing:het nieuwste "as a Service"-aanbod
  2. Wat zijn de beste Cloud Computing-cursussen?
  3. Wat is cloudcomputing en hoe werkt de cloud?
  4. Wat is de relatie tussen big data en cloud computing?
  5. De grootste obstakels voor bredere serverloze adoptie
  6. Cloud computing versus on-premise
  7. Wat is codering:werken, talen en zijn uitdagingen
  8. Wat is A2 Steel?
  9. Wat is edge computing en waarom is het belangrijk?
  10. Wat is kwantumcomputing?
  11. Wat is de HS-code voor een hydraulische pomp?