Serverloze computing
- 6 minuten
In het begin van cloud-computing waren cloudserviceproviders zoals Amazon en Microsoft gericht op het aanbieden van een breed assortiment IaaS-services aan hun klanten. Dit versnelde de groei van openbare clouds, omdat klanten nu in staat waren om workloads die on-premises op fysieke servers of in virtuele machines werden uitgevoerd, redelijk eenvoudig naar virtuele machines in de cloud te verplaatsen. Maar IaaS kent ook verantwoordelijkheden. Een organisatie die een virtuele machine in de cloud uitvoert, neemt ook de verantwoordelijkheid op zich voor het onderhouden van wat zich in de virtuele machine bevindt, zoals het besturingssysteem, alle vereiste runtimes, toepassingen die gebruikmaken van deze runtimes, enzovoort.
Met PaaS wordt een deel van die verantwoordelijkheid verplaatst naar de cloudserviceprovider; dit heeft op zijn beurt aangezet tot verdere investeringen in de cloud. Met services zoals AWS Elastic Beanstalk en Azure App Service kunnen klanten virtuele webservers inrichten waarop populaire runtimes zoals Java, node.js en Microsoft.NET zijn geïnstalleerd en in een paar minuten software uitvoeren. Omdat virtuele machines op de achtergrond het zware werk doen, zal de aanwezigheid van deze virtuele machines grotendeels ook niet zichtbaar zijn. Met PaaS kunnen klanten zich richten op de toepassingen die ze schrijven om zakelijke problemen op te lossen, in plaats van dat ze veel tijd kwijt zijn aan het beheren van VM's en ervoor te zorgen dat patches en updates op platformen worden doorgevoerd.
Serverloze computing is een relatief recente innovatie in cloud-computing die dergelijke abstracties nog verder in beslag neemt. Stel dat uw organisatie code schrijft en onderhoudt waarmee 's nachts back-ups van bedrijfskritieke gegevens worden gemaakt, wekelijkse factureringsuitvoeringen worden uitgevoerd of steeds een elektronische betaling wordt verzonden zodra een factuur naar de cloudopslag wordt geüpload. In dit geval is het overkoepelende doel om deze code op het juiste moment uit te voeren. Al het andere is bijzaak, dus ook de locatie waar de code wordt opgeslagen en hoe en wanneer de code wordt uitgevoerd.
U kunt een IaaS-benadering gebruiken door een of meer VM's te maken om uw code uit te voeren en de vereiste platformen en bibliotheken te installeren. U kunt een Elastic Beanstalk- of App Service-instantie inrichten en daar de code hosten. U kunt ook een functieruntime zoals AWS Lambda of Azure Functions gebruiken om uw code op elk gewenst moment uit te voeren, zonder rekening te houden met waar of hoe deze wordt gehost. AWS Lambda en Azure Functions zijn beide voorbeelden van serverloze computing (met name van serverloze functies), net als Google Cloud Functions. Alle drie zijn de volgende stap in de natuurlijke evolutie van cloud-computing van IaaS (waarbij u verantwoordelijk bent voor alles) tot serverloze computing, waarbij u zich richt op de acties die u in de cloud wilt uitvoeren (de code die u wilt uitvoeren) en de cloudserviceprovider alle andere zaken mag beheren.
Serverloze functies die door functieruntimes in de cloud worden uitgevoerd, zijn de meest voorkomende, maar niet de enige, vorm van serverloze computing. Amazon, Microsoft en Google bieden serverloze versies van een aantal van hun andere PaaS-services, waaronder serverloze databases. Sommige providers bieden ondersteuning voor serverloze werkstromen, waarmee u zakelijke werkstromen in de cloud kunt definiëren en deze kunt uitvoeren als reactie op externe gebeurtenissen, zoals facturen die worden geüpload naar cloudopslag, timers die op opgegeven intervallen worden geactiveerd of e-mailberichten die een Postvak IN raken, vaak zonder één regel code te schrijven. Ten slotte komen veel van de containerservices die cloudserviceproviders bieden, zoals Azure Container Instances en de AWS Elastic Container Service, in aanmerking als voorbeeld van serverloze computing, omdat u hiermee containers in de cloud kunt uitvoeren, terwijl de onderliggende infrastructuur naar de achtergrond wordt verplaatst.
Voordelen van serverloze computing
Serverloze computing biedt organisaties die gebruikmaken van cloud-computing drie primaire voordelen:
Lagere rekenkosten: klanten betalen doorgaans maandelijkse kosten voor virtuele IaaS-machines en PaaS-services, zoals Elastic Beanstalk en Azure App Service. De facturering wordt voortgezet, zelfs als de services niet actief zijn. De meeste serverloze computingservices bieden echter ondersteuning voor verbruiksprijzen, waarbij u alleen wordt gefactureerd voor het moment dat uw code wordt uitgevoerd. Stel dat u een VM van 100 dollar per maand toewijst voor het uitvoeren van code waarmee elke nacht een back-up van essentiële gegevens wordt gemaakt, en dat de code elke nacht gedurende 30 minuten wordt uitgevoerd. U betaalt 100 dollar per maand om code uit te voeren voor 1/48e van een maand, of minder dan één dag. Als u dezelfde code als een serverloze functie implementeert, kost dit u slechts een paar euro per maand. Met prijzen voor verbruik betaalt u niet voor niet-actieve tijd.
Automatische schaalbaarheid: cloudproviders bieden mechanismen voor het schalen van IaaS-services in producten zoals automatisch schalen van AWS en virtuele-machineschaalsets in Azure. Ze bieden ook handmatige en automatische schaalaanpassingsopties voor PaaS-services. Maar zelfs als schaalaanpassing automatisch wordt uitgevoerd, moet een cloudbeheerder de functie voor automatische schaalaanpassing inschakelen en zo configureren dat de cloudprovider weet hoe en wanneer schaalaanpassing moet worden uitgevoerd. Een van de onderliggende overwegingen waarmee beheerders rekening moeten houden, is dat omdat u betaalt voor afzonderlijke exemplaren van IaaS- en PaaS-services, u de service wilt configureren om voldoende te schalen terwijl u niet te veel schaalt. Serverloze computing biedt de mogelijkheid om automatisch en op transparante wijze uit te schalen om aan de verhoogde vraag te voldoen en weer in te schalen wanneer de vraag afneemt. Een cloudbeheerder voert doorgaans geen andere configuratie uit dan het inschakelen van deze optie in de service. Als u in één keer 100 aanvragen te verwerken krijgt om een serverloze functie uit te voeren, zorgt de cloudserviceprovider ervoor dat de aanvragen parallel kunnen worden uitgevoerd (of meestal parallel). De kosten worden niet beïnvloed omdat het met prijzen per gebruik hetzelfde kost om een functie honderd keer uit te voeren, of u dit nu serieel of parallel uitvoert.
Lagere beheerkosten: met serverloze servers kunt u zich richten op het uitvoeren van code en werkstromen terwijl u de verantwoordelijkheid overdraagt voor al het andere, inclusief het onderhouden van het onderliggende platform, naar de cloudserviceprovider.
Serverloze computing heeft ook nadelen. Enkele van de beperkingen die u moet overwegen:
In sommige functieruntimes geldt een limiet voor de hoeveelheid tijd waarin een functie mag worden uitgevoerd.
Sommige functieruntimes garanderen niet dat een functie onmiddellijk wordt uitgevoerd, tenzij u bereid bent daarvoor te betalen. Als Azure Functions is geconfigureerd voor het gebruik van prijzen op basis van verbruik, is het bijvoorbeeld mogelijk dat een functie niet wordt uitgevoerd tot 10 minuten nadat deze is geactiveerd. Dit is mogelijk geen probleem voor een nachtback-up; Het maakt u waarschijnlijk niet uit of de back-up wordt uitgevoerd om 1:00 uur of om 1:10 uur. Maar het kan een deal-breaker zijn voor functies die tijdkritiek zijn: functies die in realtime moeten worden uitgevoerd (of bijna realtime).
Serverloze functies zijn in het algemeen staatloos; dat wil zeggen dat ze niet in staat zijn om gegevens intern op te slaan en verwachten dat ze van de ene functieaanroep naar de volgende behouden kunnen blijven. Ze kunnen externe cloudopslagservices zoals Amazon S3 en Azure Storage gebruiken om gegevens tussen aanroepen vast te houden, maar hierdoor wordt de code van de functie complexer.
Sommige cloudserviceproviders bieden ondersteuning voor stateful functies (Azure noemt dit 'duurzame functies'), maar functies die de status behouden, zijn een relatief recente aanvulling op serverloze computing en worden niet universeel ondersteund.
Serverloze functies
Het meest voorkomende voorbeeld van serverloze computing is serverloze functies. U uploadt code naar de cloud en geeft aan wanneer deze moet worden uitgevoerd. De code kan worden geschreven in verschillende talen, waaronder Java en C#.
In afbeelding 11 ziet u een lijst met de programmeertalen die door serverloze functies in Azure, AWS en GCP worden ondersteund op het moment waarop deze tekst is geschreven:
| Taal | Azure Functions | AWS Lambda | Google Cloud Functions |
|---|---|---|---|
| C# | x | x | |
| F# | x | ||
| Ga | x | x | |
| Java | x | x | |
| JavaScript (node.js) | x | x | x |
| Powershell | x | x | |
| Python | x | x | x |
| Robijn | x | ||
| TypeScript | x |
Afbeelding 11: Programmeertalen die worden ondersteund door populaire serverloze functieruntimes.
Wanneer u een functie maakt en de code opgeeft die daarmee wordt uitgevoerd, identificeert u ook de externe gebeurtenis die ervoor zorgt dat de functie wordt uitgevoerd. Populaire cloudplatforms ondersteunen triggers van verschillende typen, waaronder timers, gebeurtenissen die plaatsvinden in andere cloudservices (zoals een document dat wordt geüpload naar cloudopslag) en HTTP-aanroepen. Het is eenvoudig om factureringscode naar een functieruntime te uploaden en deze code zo te configureren dat deze één keer per dag, één keer per week of eenmaal per maand wordt uitgevoerd. Het is net zo eenvoudig om steeds een functie te activeren wanneer een factuur naar de cloudopslag (bijvoorbeeld Amazon S3 of Azure Storage) wordt geüpload als wanneer een aanroep wordt geplaatst naar een REST-eindpunt dat aan de functie is gekoppeld.
Serverloze functies worden vaak gebruikt voor het uitvoeren van zelfstandige taken, zoals nachtelijke back-ups en facturering. Ze worden ook gebruikt om verbinding te maken met andere cloudservices en om uitgebreide oplossingen te ontwikkelen met behulp van cloudservices als bouwstenen. In afbeelding 12 ziet u een dergelijke oplossing die wordt gebruikt om verschillende Azure-services te combineren zodat de activiteit van ijsberen in het noordpoolgebied kan worden bijgehouden. Een Azure-functie speelt een belangrijke rol in de architectuur door de uitvoer van Azure Stream Analytics (geactiveerd door een HTTP-aanroep) te nemen, een foto op te halen uit Azure Blob Storage en de foto in te dienen bij een model dat is getraind met Azure Custom Vision Service, dat gebruikmaakt van kunstmatige intelligentie (AI) om te bepalen of er een ijsbeer op de foto staat. De functie is de lijm die Stream Analytics, Blob Storage en de Custom Vision Service samen verbindt.
Afbeelding 12: Een Azure-functie gebruiken om verbinding te maken met andere Azure-services.
Serverloze werkstromen
Met sommige services voor serverloze computing kunnen klanten zakelijke werkstromen automatiseren zonder code te hoeven schrijven. Azure Logic Apps biedt bijvoorbeeld meer dan 100 ingebouwde connectors voor communicatie met gegevensbronnen, variërend van Oracle-databases tot services voor sociale media, zoals X. Ze bieden triggers voor het definiëren wanneer werkstromen moeten worden uitgevoerd, bijvoorbeeld wanneer een bestand wordt geüpload naar Box.com of iets wordt getweet met een opgegeven hashtag. Ze bieden ook honderden vooraf gedefinieerde acties die definiëren wat er gebeurt wanneer een trigger wordt geactiveerd en die kunnen worden gekoppeld om complexe werkstromen te vormen, en voorwaarden waarmee acties voorwaardelijk kunnen worden uitgevoerd. En ze zijn onbeperkt uitbreidbaar omdat met een van de acties die door Azure Logic Apps worden ondersteund, een Azure-functie wordt aangeroepen. Als een werkstroom aangepaste logica omvat die niet in een actie is ingekapseld, kunt u de code opgeven waarmee de logica wordt geïmplementeerd, en deze in de werkstroom opnemen alsof het een vooraf gedefinieerde actie is.
Afbeelding 13 toont een dergelijke werkstroom in de Ontwerpfunctie van Azure Logic Apps1. Wanneer een e-mailbericht binnenkomt, wordt de logische app geactiveerd en wordt gecontroleerd op een sleutelwoordgroep in de onderwerpregel van het e-mailbericht en de aanwezigheid van een bijlage. Als aan beide voorwaarden wordt voldaan, roept de logische app een Azure-functie aan om HTML uit de hoofdtekst van het e-mailbericht te verwijderen. Vervolgens worden het opgeschoonde e-mailbericht en eventuele bijlagen bij Azure Blob Storage gestort en wordt er een e-mailbericht verzonden met koppelingen naar de relevante documenten in Blob Storage, waarin belanghebbenden kunnen lezen dat de informatie beschikbaar is en nog moet worden gecontroleerd. In dit voorbeeld worden twee serverloze paradigma's gecombineerd: een logische app die acties uitvoert zonder code (in ieder geval geen code die u of iemand in uw organisatie heeft geschreven) en een Azure-functie die code bevat die u hebt opgegeven om de werkstroom aan te passen- en is representatief voor de verschuiving die plaatsvindt in cloudcomputing van do-it-uzelf virtuele machines tot abstracties op een hoger niveau waarmee organisaties zich kunnen concentreren op het oplossen van zakelijke problemen in plaats van virtuele machines te beheren machines en het installeren en onderhouden van runtimes.
Afbeelding 13: Een werkstroom definiëren in Azure Logic Apps.
Amazon biedt een vergelijkbare service in de vorm van AWS Step Functions. Met Step Functions kunt u visuele werkstromen samenstellen waarin andere services worden gecombineerd, zoals AWS Lambda en AWS ECS. Werkstromen bestaan uit een reeks stappen, waarbij de uitvoer van de ene stap geldt als invoer voor de volgende stap. Net als Azure Logic Apps biedt AWS Step Functions basiselementen voor branches en parallelle uitvoering, waardoor u geen code hoeft te schrijven om hetzelfde te doen. In feite wordt een zakelijke werkstroom een status-machinediagram die eenvoudig kan worden begrepen, aan anderen worden uitgelegd en aangepast.
Serverloze databases
In het begin van cloud-computing betekende het hosten van een database in de cloud dat er een virtuele machine moest worden ingericht en een databaseproduct zoals MySQL, PostgreSQL of SQL Server moest worden geïnstalleerd. Door de komst van PaaS is dit veranderd, omdat databases nu als een service worden aangeboden. Met Azure SQL Database of de Amazon Relational Database Service (RDS) kunt u bijvoorbeeld simpelweg een instantie inrichten en in slechts enkele minuten over een in de cloud gebaseerde database beschikken die u meteen in clients kunt gebruiken. Daarnaast houdt de cloudserviceprovider het databaseplatform up-to-date door software-updates en patches toe te passen.
Een recentere innovatie op het gebied van cloud-computing zijn serverloze databases, die een geoptimaliseerd prijs-prestatiemodel bieden dat ideaal is voor afzonderlijke databases met onregelmatige gebruikspatronen. Azure biedt bijvoorbeeld een serverloze versie van Azure SQL Database. Met de algemene versie van Azure SQL Database kiest u een prijs-prestatieniveau op basis van de maximale belasting die u verwacht met de database te verwerken. Als de belasting in pieken komt of onregelmatig is, zal het vaak gebeuren dat u betaalt alsof de database continu een hoge belasting heeft gehad.
De serverloze versie van Azure SQL Database verkleint dit probleem door indien nodig de schaal van de database aan te passen aan de actuele belasting, met kosten op basis van de som van de rekenkosten en opslagkosten. Net als bij serverloze functies die gebruikmaken van een verbruiksmodel betaalt u alleen voor wat u gebruikt. Amazon biedt een vergelijkbare service in de vorm van AWS Aurora Serverless, een serverloze versie van de Aurora-databaseservice van Amazon, terwijl Google de klanten een serverloze NoSQL-databaseservice biedt met de naam Google Cloud Firestore.
Verwijzingen
- Microsoft (2019). Automatiseer het verwerken van e-mailberichten en bijlagen met Azure Logic Apps. https://learn.microsoft.com/azure/logic-apps/tutorial-process-email-attachments-workflow.
Kennis testen
Feedback
Is deze pagina nuttig?
No
Hulp nodig bij dit onderwerp?
Wilt u Ask Learn gebruiken om iets te verduidelijken of u door dit onderwerp te leiden?