Azure Functions

Azure Functions

​Op de Microsoft Build Conference is een nieuwe dienst aangekondigd: Azure Functions. Momenteel is deze dienst in het Preview stadium. Dit artikel legt in het kort uit wat Azure Functions is en wat je er mee kunt.

Wat is Azure Functions?

Azure Functions is een nieuwe toevoeging aan het Azure Applicatie platform. Het is een service die het mogelijk maakt om, op basis van een trigger, code toe te laten voegen. Zo'n trigger kan vanuit vrijwel ieder systeem komen, vanuit Azure of third-party services maar ook vanuit een lokaal systeem.

WebJobs of Web API?

Azure Functions is gebaseerd op Azure App Service en komt zo in het rijtje van Web Apps, API Apps, Logic Apps en Mobile Apps. Het is ook gebaseerd op de Webjobs SDK. Dus wat is het nu? Zijn het WebJobs of kun je er Web API’s mee maken?Develop your way Het antwoord is: Beide. Azure Functions maakt het mogelijk om eenvoudige functies te schrijven op basis van trigger-input-output patroon. Wanneer een functie getriggerd wordt door bijvoorbeeld een timer of een data-bron, kun je dit ook zien als een webjob. Ook kan de function aangeroepen worden via een http-trigger, ofwel een Web API call. Zodoende kun je ook spreken van Web API. Azure Functions ondersteund al een breed aantal programmeertalen om de functies in te schrijven. Op dit moment Batch, C#, JavaScript, Bash, F#, Php, PowerShell en Python.

Triggers-Input-Output en bindings

De triggers, input en output worden geconfigureerd met bindings. Dit maakt het zeer eenvoudig om de context van de functie te definiëren. De functie heeft dan eenvoudig toegang tot deze bronnen via een context parameter. Dit kan een HTTP trigger zijn, zodat de functie door andere applicaties aangeroepen kan worden. Of bijvoorbeeld een timer. Een functie kan maar één trigger hebben. Er zijn ook webhook triggers voor GitHub en Slack en ‘generic JSON’ voor custom webhooks. En dat allemaal zonder extra code.

Een functie mag één of meerdere input-bindings hebben. Zodoende kan een functie bijvoorbeeld aan de hand van gegevens uit een Azure Storage Queue een Azure DocumentDB document opvragen. Een functie kan ook optioneel één of meerdere output-bindings hebben. Een andere databron. HTTP call of zelfs een bericht via de Notification Hub sturen. Wil je meer weten over bindings en welke er beschikbaar zijn? Dit kun je vinden in de Azure documentatie over triggers en bindings.

Is het allemaal zo simpel?

De kracht van Azure Functions zit in de eenvoud, maar kent mede daardoor wel zijn grenzen. Afgezien van loggen, heeft een Azure Functions geen debug-mogelijkheden. Ook kun je niet je eigen modules importeren om deze vervolgens in je code te gebruiken (Standaard framework modules wel). Azure functies is dan ook bedoeld voor eenvoudige taken, zoals loggen, notifications, data opschonen. Voor complexe taken zijn er andere App Service diensten.

Conclusie

Azure Functions schittert in eenvoudig gebruik met de schaalbaarheid van App Services. Veel is al mogelijk door simpelweg de functie te configureren. Door de beschikbaarheid van function templates wordt het schrijven van een functie nog eenvoudiger gemaakt. Zolang de functie logica niet al te complex is, dan is Azure Functions zeker goed in te zetten voor je oplossing. Bij complexe logica zal de keuze toch nog eerder vallen op Web Apps of API Apps. Echter, zoals gezegd, is Azure Functions nog in het preview stadium. Het zal dus zeker nog uitgebreider en krachtiger worden. Zelf Azure Functions uitproberen? Start hier of bekijk de videos en de documentatie.

Erik Hoogendoorn, Microsoft Cloud Consultant