De afgelopen jaren heb ik bij heel wat organisaties meegedraaid in mooie projecten om verscheidene integraties te ontwikkelen en realiseren. Hierbij had ik te maken met zowel zeer complexe als de wat simpelere integraties. Heerlijk afwisselend dus. Bij een van mijn laatste opdrachtgevers had ik te maken met een wat simpelere integratie, namelijk bestandsoverdrachten. Wat ik hierbij vaak tegenkom is dat bestandsoverdrachten worden geïntegreerd in producten die niet bedoeld zijn om dergelijke taken uit te voeren. Dit leidt tot een hoop problemen. Waar je dit dan wel gemakkelijk en snel mee kunt implementeren? Het antwoord is met Azure. In mijn vorige blog gaf ik al een introductie over de wondere wereld van Microsoft Azure. In deze blog licht ik toe hoe je in een handomdraai een bestandsoverdracht integratie realiseert aan de hand van een casus bij een van mijn opdrachtgevers in het onderwijs.
De Microsoft Azure oplossingen voor integratie
Bij een functioneel ontwerp voor een bestandsoverdracht integratie staat er ergens een bronbestand dat naar een doellocatie moet worden overgebracht.
Met Azure kan een dergelijk ontwerp geïmplementeerd worden met behulp van verschillende oplossingen.
- Power Automate is een workflow-gebaseerde oplossing voor het automatiseren van bedrijfsprocessen. Het maakt deel uit van het Microsoft Power Platform, samen met Power Apps (mobiele apps) en Power BI (business intelligence). Het is uiterst gebruiksvriendelijk, geïntegreerd in Office 365 en stelt kantoormedewerkers in staat om eenvoudige integraties tot stand te brengen zonder tussenkomst van ontwikkelaars of IT.
- Azure Logic Apps biedt dezelfde gebruiksvriendelijke workflow-ontwerpen als Power Automate, maar met complexere integratiemogelijkheden. Verder is het cloud gebaseerd en maakt het standaard deel uit van het Azure-platform. Hierdoor kun je gebruikmaken van de out-of-the-box capabilities van het Azure-platform zoals logging, monitoring, alerting etc.
- Azure Functions is een event gedreven serverless computing platform waarmee de meest complexe orchestratie problemen kunnen worden opgelost. Het hanteert, in tegenstelling tot Logic Apps, een code-first aanpak. Ook Azure Functions maakt standaard deel uit van het Azure-platform.
Hieronder vind je twee uitgebreide vergelijkingsoverzichten tussen zowel Power Automate en Logic Apps als Logic Apps en Functions.
Azure Power Automate versus Azure Logic Apps
Azure Logic Apps vs Azure Functions
Gebaseerd op het feit dat Power Automate geen deel uitmaakt van het Azure-platform en omdat Logic Apps identiek is aan Power Automate, zullen we de Power Automate oplossing niet meenemen bij de verdere uitwerking van de use-case.
Daarnaast spreken het consumptiemodel (pay-per-use), de workflow-gebaseerde ontwerpervaring en de Visual Studio IDE-ondersteuning van Azure Logic Apps ons erg aan.
Naast Azure Logic Apps zullen we de bestandsoverdracht integratie ook implementeren met behulp van Azure Functions. Want alles wat je met Logic Apps kan, is ook mogelijk met Functions. Het grote verschil is dat Logic Apps op workflows is gebaseerd en Functions een code-first aanpak hanteert.
Het implementatie ontwerp met Logic Apps en Functions
Voor de bestandsoverdracht moeten alle bronbestanden die in een specifieke folder staan, worden overgebracht naar een SharePoint-folder. In het geval van de onderwijsinstelling was het uiteindelijke doel om de bestanden in een Microsoft Teams-folder te tonen. Hieronder een weergave van hoe deze flows eruitzien in de verschillende Azure-oplossingen.
Azure Logic Apps
De beide implementatie ontwerpen kenmerken zich door vier onderdelen.
- Input files
In de casus van de onderwijsinstelling gebruiken we Azure Blob Storage om de input files op te slaan. Azure Blob Storage is Microsoft’s oplossing voor de opslag van objecten in de cloud, die tevens is geoptimaliseerd voor het opslaan van enorme hoeveelheden ongestructureerde data. Als alternatief van Azure Blob Storage kan er ook gekozen worden voor Azure Files. Dit zijn bestandsshares in de cloud die je gemakkelijk kan mounten via SMB op je lokale client.
- Event broker
Dit onderdeel is noodzakelijk, omdat we werken in een cloudlandschap waarin de componenten event-based werken om schaalbaar te zijn. Hiervoor gebruiken we Azure Event Grid. Enerzijds vanwege het pay-per-use model. Daarnaast zijn de events hierin snel en betrouwbaar. We hadden ook kunnen kiezen voor Azure Blob Triggers, maar dit kan leiden tot ongewenste vertragingen als de logica offline gaat.
- Applicatielogica
Voor de integratietielogica maken we ofwel gebruik van Azure Logic Apps of van Azure Functions. Hierbinnen wordt de bestandinhoud en metadata gelezen en opgeslagen op de doellocatie.
- Doellocatie
Binnen de bestandsoverdracht kies je te allen tijde een doellocatie. In het geval van onze casus, betrof dit SharePoint/Microsoft Teams.
In mijn volgende blog ga ik de bestandsoverdracht integratie uitwerken met Azure Logic Apps.