Wordt het Azure Logic Apps, Azure Functions, of…?
Door opIn deze blog doen we een handreiking, om de verschillen in Microsoft Azure uit te leggen tussen Logic Apps en Functions. In de praktijk merken we, dat daar namelijk nog weleens onduidelijkheid of verwarring over bestaat. Na onze uitleg kan de conclusie zijn, dat je ze niet per se hoeft te vergelijken, maar gewoon allebei kunt inzetten…
Azure Logic Apps en Functions in het kort
Als IT verantwoordelijke afdeling (intern of extern) heb je de rol om apps, data, systemen en services in de organisatie te integreren. Dat betekent dat allerlei taken, bedrijfsprocessen en workflows gepland, geautomatiseerd, beheerd en gemanaged moeten worden. Logic Apps is de Azure cloudservice, waarmee je dat bereikt. Met dit platform kun je snel schaalbare integratieoplossingen ontwikkelen voor bedrijfs- en business-to-business-scenario’s.
Azure Functions is een serverloze cloud rekenservice. Het biedt een voortdurend bijgewerkte infrastructuur en resources, die nodig zijn om toepassingen uit te voeren. Je hoeft daarvoor zelf geen infrastructuur in te richten en te beheren; je gebruikt immers het Azure platform. Azure Functions kun je bijvoorbeeld gebruiken om web-API’s te bouwen, te reageren op wijzigingen in databases, IoT-streams te verwerken, wachtrijen van berichten te beheren en nog veel meer. Bovendien kun je bouwen in verschillende talen zoals C#, F#, Node.js & Typescript, Python, Java en Powershell.
Maar wat zijn nu de verschillen?
We hebben vijf belangrijke verschillen beschreven, op het gebied van development, security, monitoring, connectiviteit en het kunnen maken van uitzonderingen:
1: Development verschillen
Logic Apps hebben een “Designer-First” (declaratieve en UX) ervaring voor de gebruiker. Dat wordt gerealiseerd door een visuele workflow ontwerper te bieden, die toegankelijk is via de Azure Portal. Gebruikers krijgen bovendien toegang tot de volledige broncode (JSON-sjabloon), die automatisch wordt gemaakt door deze visuele ontwerper. Je kunt daarnaast ook Logic Apps schrijven via Visual Studio met een ontwerper-plug-in of door de gebruikelijke codering.
Azure Functions zijn anders. Je ontwikkelt op basis van “Code-First” (imperatief). Kennis van coderen is daardoor noodzakelijk. Het betekent bovendien, dat de gebruikerservaring voornamelijk geschreven wordt via Visual Studio of een andere IDE (IDE = Integrated Development Environment, de computersoftware, die een softwareontwikkelaar ondersteunt bij het ontwikkelen van computersoftware). Er is een lichtgewicht, maar beperkte configuratie beschikbaar binnen de Azure Portal. In tegenstelling tot Logic Apps is er dus geen visuele werkstroomontwerper beschikbaar.
2: Security
Hoe zorgen Logic Apps voor veiligheid? Allereerst heeft elke connector zijn eigen beveiliging. Als voorbeeld vereist de Dynamics 365-connector een Dynamics-gebruikersaccount. Daarnaast kunnen
Logic Apps ook worden beveiligd met IP-whitelisting en VNet-integratie via een Integration Service Environment. Tot slot kun je Logic Apps beveiligen door Azure API Management ervoor te plaatsen.
Azure Functions is beveiligd met autorisatiesleutels, die automatisch worden gegenereerd. Ook kun je aangepaste sleutels maken. Net als bij Logic Apps kun je Functions beveiligen met IP-whitelisting en VNet-integratie. Ook kun je er Azure API Management voor plaatsen of de lichtgewicht Azure Functions Proxy-functionaliteit gebruiken. Wil je extra beveiliging of isolatie bereiken? Dan kunnen containers gebruikt worden, een geïsoleerde, dus veilige, resource controlled en draagbaar operating environment. Natuurlijk kun je er ook voor kiezen om een rekenomgeving in eigen beheer te nemen.
Het voordeel van Azure Functions is dat het ook op een on premises server kan draaien, terwijl Logic Apps alleen maar beschikbaar zijn in de public cloudomgeving van Azure. Dat kan bijvoorbeeld voor overheden een belangrijke reden zijn om Azure Functions boven Logic Apps te prefereren.
3: Verschillen op het gebied van monitoring
Logic Apps zijn veel eenvoudiger te beheren dan Functions, zelfs door niet-technische gebruikers. Dat komt, omdat elke uitvoering gecontroleerd kan worden binnen de Azure-portal, inclusief stoppen, starten, annuleren en opnieuw verwerken. Wil je ook een uitgebreide rapportage ontvangen? Dat kan via Azure Monitor-logboeken.
Voor Functions is uitgebreidere technische kennis nodig. Dat komt onder andere omdat functies bewaakt worden op codeniveau via Application Insights. Daarnaast kan Functions beheerd worden via een monitortabblad in de Azure Portal.
4: Connectiviteitsverschillen
Logic Apps hebben een grote verzameling connectoren voor Azure Services, SaaS-toepassingen (Microsoft en anderen), FTP en Enterprise Integration Pack voor B2B-scenario’s. Wil je weten welke connectoren er zijn? Klik dan hier. Als je de juiste niet kunt vinden, is er een mogelijkheid om aangepaste connectoren te bouwen, we helpen er overigens graag bij. Met de bestaande connectoren creëer je een reeks van kant-en-klare acties, die kunnen worden gebruikt. Ze worden geconfigureerd via de visuele ontwerper of in code.
Azure Functions kent daarentegen geen connectors. Ze zijn afhankelijk van triggers en invoer- en uitvoerbindingen, zoals Storage, Event Hubs, Service Bus en Cosmos DB. Bindingen in Azure Functions bieden een manier om declaratief verbinding te maken met gegevens met code. De lijst met bindingen is zeer beperkt in vergelijking met Logic Apps. Azure Functions heeft bindingstypen voornamelijk voor andere Azure-services. Wil je weten hoe je verbindingen kunt beheren in Azure Functions? Dan vind je hier de desbetreffende Microsoft pagina.
5: Het omgaan met uitzonderingen (exception handling)
Logic Apps bieden kant-en-klare functionaliteiten met het bereiken van nieuwe pogingen na de uitvoering van configuraties. Als dit het probleem niet oplost, krijgt de workflow een mislukte status (failed) en kan deze eenvoudig opnieuw worden ingediend na beoordeling in de Azure Portal.
Met Azure Functions moet je, net als bij andere code-first oplossingen, eerst je eigen afhandeling van uitzonderingen bouwen. Als je bijvoorbeeld nieuwe pogingen wilt inschakelen (wat je moet doen als je met andere cloudservices werkt), moet je de logica zelf maken. Kortom er zijn geen mogelijkheden voor opnieuw proberen, hervatten of opnieuw indienen. Tenzij je ze zelf, of met hulp van ons, ontwikkelt.
Onze conclusie
Er spelen verschillende factoren een rol bij de keuze tussen de twee technologieën. Kiezen voor Logic Apps lijkt logischer in situaties waar het ontbreekt aan uitgebreide IT vaardigheden of kennis, bijvoorbeeld rondom coderen. Maar waarom zou je met je handen in het haar moeten zitten, als je ook handen kunt inhuren? Soms wordt de voorkeur gegeven aan ‘kant-en-klare’ oplossingen. Wederom een voordeel van Logic Apps. Maar in situaties van zeer complexe bedrijfs- en/of data transformatie logica, waar eigen beheer mogelijk ook een rol speelt (overheden) zal Functions waarschijnlijk eerder de voorkeur genieten.
Wordt het Azure Logic Apps of Azure Functions of beiden?
We helpen graag met het geven van een advies wat bij jouw organisatie past.