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

Serverless Computing Begrijpen: Infrastructuurbeheer Vereenvoudigen

Infrastructuurbeheer voegt een extra laag complexiteit toe aan de moderne softwareontwikkelworkflow. Servers up-and-running houden, zorgen voor beveiligingsupdates en resources schalen kost waardevolle tijd van DevOps-teams. Met serverless computing worden alle infrastructuuroperaties afgehandeld door de serviceprovider. Als zodanig stelt serverless ontwikkelteams in staat om zich te richten op het schrijven van code in plaats van te veel tijd te besteden aan infrastructuurbeheer.

Dit artikel legt uit wat serverless computing is en hoe het zich verhoudt tot verschillende cloudimplementatiemodellen. We verkennen ook de voor- en nadelen van serverless en bespreken enkele veelvoorkomende use cases.

Wat is Serverless Computing?

Serverless computing is een methode om code in de cloud te implementeren en uit te voeren zonder te hoeven omgaan met serverprovisionering en infrastructuurbeheer. Ondanks de naam, vertrouwt serverless nog steeds op cloud of fysieke servers voor code-uitvoering. Echter, ontwikkelaars hoeven zich niet bezig te houden met de onderliggende infrastructuur. Dit wordt overgelaten aan de serverless-provider die dynamisch de benodigde compute-resources toewijst en ze namens de gebruiker beheert.

Voor ontwikkelaars betekent dit nul tijd besteed aan serveradministratie, onderhoud, resourceschaling of capaciteitsplanning. Ze uploaden simpelweg hun code en laten de provider de server-side logica uitvoeren op basis van verschillende events of verzoeken. In tegenstelling tot bekende cloudfactureringsmodellen, worden serverless-services gefactureerd op basis van het aantal keren dat de code wordt uitgevoerd of wanneer een bepaalde event wordt getriggerd.

Hoe Serverless Computing Werkt?

In een serverless-omgeving wordt code getriggerd door events en als een functie uitgevoerd. Dit is waarom serverless vaak geassocieerd wordt met "Functions-as-a-Service" of FaaS, wat een vergelijkbaar concept is. FaaS is een event-driven cloudmodel dat de server-side logica voor code-uitvoering afhandelt zonder enige interventie van de gebruiker. Deze events kunnen alles zijn van een simpele HTTP-request, API-aanroep, tot een databasequery of bestandsupload.

Functies worden uitgevoerd in stateless containers. Dit betekent dat compute-resources voor het draaien van een functie alleen worden geprovisioneerd wanneer deze wordt aangeroepen. Geen data wordt bewaard in RAM of naar de disk geschreven. Eenmaal de request vervuld is, wordt de staat van de app gereset en is er geen geheugen van de transactie. Een nieuw verzoek roept de resources opnieuw te provisioneren vanaf nul en de code wordt uitgevoerd zonder enige referentie naar de vorige aanroep.

Om deze stateless staat te accommoderen, moeten applicaties gearchitecteerd worden als functies die in stateless containers kunnen draaien. Dit wordt meestal bereikt via microservices. Grote monolithische apps worden opgebroken in kleinere segmenten en via een API met elkaar verbonden. Monolithische apps kunnen nog steeds als enkele functies draaien, maar dit is geen gangbare praktijk. Gezien er bij elk verzoek een nieuwe compute-container wordt geprovisioneerd, zullen grote functies de uitvoeringssnelheid en -duur negatief beïnvloeden.

FaaS-functies draaien niet oneindig. Ze worden beëindigd na een bepaalde hoeveelheid tijd na het worden aangeroepen. In de meeste gevallen timeout functies na ongeveer vijf minuten. Dit betekent dat apps die langdurige taken initiëren, herbouwd moeten worden om rekening te houden met beëindigingslimieten.

Provisioneren en initialiseren van containers voor functie-uitvoering kost ook tijd. Dit wordt meestal gemeten in milliseconden. Echter, complexe functies kunnen enkele seconden duren om te initialiseren, wat grotere latentie veroorzaakt.

Er zijn twee gangbare methoden voor het initialiseren van een functie — warm start en cold start. Een warm start herbruikt resources van een vorig event, terwijl een cold start een nieuwe container deployt. De tijd die het kost om een functie te initialiseren en uit te voeren hangt af van de hoeveelheid code, de programmeertaal, het aantal bibliotheken dat het script gebruikt, alsook veel andere factoren. In termen van latentie duurt een cold start langer om een functie te starten.

Hoe Serverless Computing Zich Verhoudt tot BaaS, PaaS en IaaS?

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

Backend-as-a-Service — BaaS stelt ontwikkelaars in staat om zich te richten op het schrijven van frontend-interfaces terwijl alle backend-operaties worden overgedragen aan een serviceprovider. Deze achter-de-schermen-taken omvatten meestal kant-en-klaar gebruikersauthenticatie, opslag, databasemanagement en hosting-services. Ook hoeven ontwikkelaars de servers die hun backend draaien niet te managen, wat snellere app-implementaties mogelijk maakt.

Functions-as-a-Service — Dit serverless-cloudservicemodel doet af met infrastructuurbeheer. De serviceprovider wordt belast met het op aanvraag deployen van compute-resources om de code van de gebruiker uit te voeren. Dit gebeurt telkens wanneer een event of verzoek getriggerd wordt. Serverless-functies draaien in stateless containers, wat betekent dat compute-resources alleen worden geployd wanneer de functie wordt aangeroepen.

Het hoofdverwaringspunt zit tussen Backend-as-a-Service en Platform-as-a-Service (PaaS). De eerste is een techniek van serverless computing, terwijl de laatste een cloudimplementatiemodel is. Hoewel ze enkele basiskenmerken delen, is PaaS niet afgestemd op de vereisten van serverless.

Platform-as-a-Service — Met PaaS huren gebruikers de hardware- en software-oplossingen die nodig zijn voor ontwikkelworkloads van een serviceprovider voor een abonnementsfee. Het stelt ontwikkelaars in staat om meer tijd te besteden aan coderen zonder zich zorgen te maken over infrastructuurbeheer. Aan de andere kant biedt BaaS extra functies zoals kant-en-klaar gebruikersauthenticatie, beheerde databases, e-mailnotificaties, en dergelijke. BaaS stelt ontwikkelaars ook in staat om zich puur te richten op het bouwen van de frontend terwijl diverse backend-services on-demand geïntegreerd worden.

Infrastructure-as-a-Service — IaaS verwijst naar een self-service cloudoplossing waarbij de provider de infrastructuur namens de gebruiker host. Alle serverprovisionering- en beheeroperaties inclusief software-installatie worden door de gebruiker afgehandeld. Sommige IaaS-providers bieden ook serverless-oplossingen aan maar als duidelijk afzonderlijke producten.

Veelvoorkomende Serverless Computing Use Cases

Zoals eerder gezegd, is serverless niet voor iedereen. Maar als uw behoeften afgestemd zijn op een aantal van deze use cases, kunt u wellicht profiteren van serverless.

API's Bouwen

Met geen servers te beheren, is het bouwen van hoog schaalbare en responsieve API's een van de populairste use cases voor serverless. De auto-scaling-functie van serverless zorgt ervoor dat API's altijd beschikbaar zijn, zelfs onder zwaar verkeer. Naast dit wordt de gebruiker niet gefactureerd voor idle resources wanneer er geen calls naar de API zijn.

Websites en Applicaties

Het implementeren van websites en web-based apps op een serverless-platform vereist geen voorafgaande infrastructuursetup. Dit verkort de tijd die het kost om een volledig functionele web-app te lanceren aanzienlijk. De auto-scaling-functie speelt hier ook een significante rol omdat de gebruiker zich geen zorgen hoeft te maken over het provisioneren van meer servers om toename in vraag te ondersteunen. Als resultaat is het veel makkelijker om 100% uptime te behouden.

Multi-Taal Applicaties

Met serverless kan een enkele app in diverse talen geschreven worden. Serverless stelt ontwikkelaars in staat om een monolithische app op te breken in kleinere delen en ze als microservices te draaien. Die microservices communiceren dan met elkaar via een API. Elk segment van een app kan geschreven worden met een andere programmeertaal.

CI/CD Pipelines

Automatisering is de sleutel tot het draaien van succesvolle ontwikkeling, test- en integratiepipelines. Serverless stelt ontwikkelaars in staat om code automatisch te testen en bugs sneller te fixen. Aangezien serverless event-based is, kunnen gebruikers events instellen die geautomatiseerde tests triggeren zonder handmatige interventie.

Wat Zijn de Voordelen van Serverless Computing?

In vergelijking met traditionele server-georiënteerde cloudcomputing, abstraheert serverless computing infrastructuuroperaties weg. Alles werkt out-of-the-box wat op zijn beurt zorgt voor snellere codereleases en geautomatiseerde schaalbaarheid tegen een lager prijspunt.

Dit zijn de drie meest voorkomende voordelen van serverless:

Auto-Scaling

De serverless-provider schaalt infrastructuurresources op basis van vraag. Schaaloperaties worden dynamisch en automatisch uitgevoerd zonder enige interventie van ontwikkelaars.

Snellere Time-to-Market

Zonder de noodzaak om complexe serverclusters te provisioneren, kunnen ontwikkelaars zich meer richten op het bereiken van hogere release-velocity. Dit versnelt de tijd die het kost om code naar productie te releasen of incrementele codewijzigingen te implementeren, wat resulteert in snellere levering van apps aan klanten.

Geoptimaliseerde Kosten

Omdat alles on-demand geprovisioneerd wordt, hoeven organisaties nooit te betalen voor ongebruikte opslagruimte, computertijd of netwerken. Verbruik van serverless-services wordt typisch gemeten in milliseconden en dienovereenkomstig gefactureerd.

Wat Zijn de Nadelen van Serverless Computing?

Net als bij elke softwareoplossing, heeft serverless ook enkele nadelen. Maar afhankelijk van de app die u bouwt, bent u misschien niet zo geïnteresseerd in enkele van deze nadelen van serverless.

Latentie

Bij het uitvoeren van een functie, deployen serverless-providers automatisch de benodigde resources bij elke aanroep. Afhankelijk van de grootte van de workload, worden containers typisch in milliseconden geprovisioneerd, maar kunnen zelfs enkele seconden duren. Latentie kan verminderd worden door "warm starts" die instanties van een eerdere uitvoering hergebruiken.

Uitvoeringstijd

De uitvoeringstijd van een serverless-functie is beperkt en wordt afgebroken na een bepaalde periode. Dit is meestal rond de vijf minuten na aanroep, maar varieert per provider. Uitvoeringslimieten zijn een groot nadeel voor apps die langdurige processen initieren. Dit probleem te mitigeren is mogelijk door de code in kleinere stukken te segmenteren en ze als microservices te draaien.

Vendor Lock-In

Providers gebruiken meestal proprietaire technologieën om hun serverless-services te enable. Dit kan problemen veroorzaken voor gebruikers die hun workloads naar een ander platform willen migreren. Bij het verplaatsen naar een andere provider zijn wijzigingen aan de code en de app-architectuur onvermijdelijk.

Beveiliging

Gebruikers hebben weinig controle over de instantieconfiguratie die hun code draait. Dit is verborgen voor de gebruiker en valt in het domein van de serviceprovider. Als zodanig vallen beveiligingsoperaties ook in handen van de provider. De gebruiker is machteloos als een aanval plaatsvindt, vertrouwend op de provider om de schade te mitigeren en het systeem te herstellen. Applicaties die meerdere entry-points hebben in een serverless-omgeving zijn kwetsbaarder voor vulnerabilities door een verhoogd aanvalsoppervlak.

Wat is de Toekomst voor Serverless Computing?

Serverless computing is nog een relatief nieuwe technologie. De toekomst ervan hangt af van de capaciteit van serviceproviders om enkele van de bovenstaande nadelen op te lossen — het belangrijkste, cold starts. Providers moeten de tijd verkorten die het kost om een functie uit te voeren nadat deze een tijdje in de idle-state is geweest. Dit oplossen zal latentie verminderen en een naadloze gebruikerservaring garanderen.

Serverless vertrouwt momenteel op stateless containers voor functie-uitvoering. De toekomst van serverless beweegt in de richting van het mogelijk maken van stateful apps om de voordelen van serverless te benutten. Dit zal ontwikkelaars in staat stellen stateful apps te bouwen zonder zich zorgen te maken over backend-databeheer.

In termen van DevOps, zal serverless leiden tot de expansie van NoOps. Deze trend zal leiden tot serverless-providers die alle infrastructuuroperaties namens de klant afhandelen. In zo een setting is er geen behoefte aan in-house operatieteams voor bedrijven.

In de komende jaren wordt verwacht dat Kubernetes de fundering wordt van serverless. Met ondersteuning voor networking, agile auto-scaling en multi-cloud deployments, verbetert Kubernetes-portabiliteit serverless computing op meer dan één manier. Het draaien van bepaalde klassen van apps in serverless is impractisch omdat serviceproviders hun gedrag soms beperken. Met Kubernetes zullen ontwikkelaars in staat zijn die beperkingen te overwinnen en serverless-platforms te bouwen gebaseerd op hun specifieke behoeften.

Conclusie

Hoewel de naam het afwezigheid van servers suggereert, vertrouwt serverless computing nog steeds op cloud of fysieke servers. Het is een computermodel dat infrastructuuroperaties elimineert, waardoor ontwikkelaars zich kunnen richten op het schrijven en deployen van apps. Het serverless-model draait om twee kerngebieden: Backend-as-a-Service en Functions-as-a-Service.

De eerste biedt gebruikers een kant-en-klaar backend-architectuur, terwijl de tweede het draaien van apps in stateless containers mogelijk maakt. Deze containers worden automatisch geprovisioneerd op basis van events of triggers. Als zodanig is serverless geen zilveren kogel-oplossing voor alle huidige ontwikkelproblemen. Het is meestal gericht op niet-monolithische apps die een microservices-gebaseerde architectuur hanteren.

Cloud computing

  1. Wat is Kwantumcomputing? Een Beginnersgids
  2. HS-code voor hydraulische pompen: classificatie en toepassing
  3. Wat Is Coderen? Een Praktische Gids voor Talen, Workflows en Veelvoorkomende Uitdagingen
  4. Serverless Computing: De Volgende Generatie "As a Service" Innovatie
  5. Top Cloudcomputing Cursussen Voor 2026: Van AWS Fundamentals Tot Maryland's MicroMasters
  6. Cloudcomputing Begrijpen: Hoe Het Werkt En Waarom Het Belangrijk Is
  7. Big Data en Cloud Computing: Hoe Ze Samenwerken
  8. Top Uitdagingen die Serverless Adoption Beperken – Wat U Moet Weten
  9. Cloud Computing vs On-Premise: Welke Infrastructuur Past Bij Uw Bedrijf?
  10. Edge Computing Uitgelegd: Waarom Het Belangrijk Is Voor Modern Business
  11. Wat is A2 staal? Een veelzijdige, kosteneffectieve gereedschapsstaalkwaliteit voor industriële en houtbewerkingstoepassingen