Azure Integration Services
Eerst een stukje achtergrond. Want wat houdt Azure Integration Services precies in?
De Azure Integration Services is een verzameling services voor het verbinden van cloud-gebaseerde applicaties en on-premise applicaties. Deze services maken synchrone en asynchrone communicatie tussen applicaties mogelijk en daarnaast biedt het ondersteuning voor workflows. Hiervoor zijn verschillende oplossingen, waarin Azure Integration Service allerlei mogelijkheden biedt.
Azure Service Bus is een betrouwbare messaging service binnen Azure. Hiermee zijn applicaties te ontkoppelen van elkaar en kunnen schaalbare architecturen worden gerealiseerd.
Azure Functions is een serverless compute platform binnen Azure. De focus bij serverless ligt op het schrijven van de code, Azure zorgt voor een snelle en schaalbare uitvoering. Azure Functions kunnen eenvoudig gekoppeld worden aan Azure Service Bus en reageren op nieuwe berichten die binnenkomen.
Asynchrone berichten verwerken
Cloud Adventures is een fictief bedrijf wat reizen verkoop naar de maan en verder. Deze reizen worden uitgevoerd door een derde partij. De webshop van Cloud Adventures kent dan ook een integratie met deze partij en tijdens het kopen van een reis wordt de geboekte reis doorgestuurd. Wanneer dit succesvol is gebeurd, dan ontvangt de gebruiker een email met de bevestiging van zijn boeking. Voor het versturen van deze email wordt ook weer geïntegreerd met een derde partij.
Overview of relevant Azure Resources
Met behulp van Azure Service Bus en Azure Functions wordt de integraties met de derde partijen gerealiseerd. Bij iedere geboekte reis wordt een bericht op een queue in de Service Bus geplaatst met alle relevante informatie over de reis. De datum van vertrek, hoeveel personen mee gaan en voor welke aanbieder is gekozen.
De berichten op de Service Bus worden asynchroon afgehandeld door een Azure Function. Wanneer de hoeveelheid berichten groeit en de afhandeling dit niet bij kan werken, zullen er meer instanties van de Azure Function worden gestart om gezamenlijk de berichten af te handelen. Op deze manier schaalt de oplossing automatisch, volgens ingestelde richtlijnen.
Bij het afhandelen van het bericht wordt een api van de derde partij aangeroepen. Alle communicatie met deze partij vindt daarmee plaats op één plek in de applicatie. Iets wat vanuit architectuur oogpunt wenselijk is. Wanneer de aanroep van de api succesvol is geweest, wordt een nieuw bericht geplaatst op een tweede queue in de Service Bus. Er is een tweede Azure Function die dit bericht uitleest en de bevestiging van de boeking naar de gebruiker mailt. Hiervoor wordt gecommuniceerd met de derde partij die het versturen van de email voor zijn rekening neemt.
Kosten
Naast de voordelen van een ontkoppelde integratie met derde partijen, kent het gebruik van serverless oplossingen ook een kostenvoordeel. Er wordt alleen betaald voor het daadwerkelijke gebruik. Dus wordt je code niet uitgevoerd, omdat er geen berichten zijn om af te handelen, dan worden er ook geen kosten in rekening gebracht. Overigens zijn hier meerdere modellen van hosting mogelijk.
Nadelen
Het gebruik van Azure Functions en Azure Service Bus kent ook uitdagingen. Door het gebruik van diverse kleinere services is het bijvoorbeeld uitdagender om inzicht te blijven houden in de werking. Wanneer fouten optreden is het zoeken van de oorzaak complexer. Zoals altijd met Cloud Native software is het bouwen voor Observability dus iets om vanaf de start rekening mee te houden.
Conclusie
In dit artikel hebben we je meegenomen in hoe je jouw applicaties met elkaar kunt laten communiceren. Door het gebruik van Azure Integration Services is het mogelijk om applicaties simpel met elkaar te verbinden. Of deze applicaties nu in de Cloud draaien of on-premise maakt niet uit. We hebben laten zien dat Azure Functions en Azure Service Bus krachtige en schaalbare oplossinggen zijn voor het asynchroon communiceren met api’s.