Als je weleens gebruik maakt van worker roles in Azure dan weet je dat het nogal een hoofdpijn geeft om die dingen te deployen. Een deployment tijd van 10 tot 20 minuten is niet ongewoon en in een wereld van continuous delivery en snelle feedback cycles is dat niet bepaald optimaal te noemen. Welke opties geeft Azure nog meer om dit probleem op te lossen?
Web App
Als je webapplicaties wilt ontwikkelen voor de Cloud zou ik adviseren om altijd voor een web app oplossing te gaan tenzij er een dwingende reden is dat er een web role nodig zou zijn (en virtuele machines alleen te gebruiken als het echt niet anders kan). Op die manier heb je de beste mogelijkheden voor ontwikkeling, deployment en debugging van je applicatie.
Web Job
Met de komst van de web jobs is er een goede mogelijkheid om ook achtergrond processen uit te voeren op Azure zonder dat je een worker role gebruikt. Wanneer je een taak hebt die kan draaien op het Azure websites platform (dus zonder registry, Com+, GDI, custom software etc) en niet al te intensief gebruik maakt van de CPU of het geheugen dan is de web job de ideale oplossing.
Worker roles
Wanneer je een achtergrond taak hebt die intensief is of niet wordt ondersteund door het Azure websites platform (en dus ook niet als web job kan draaien) dan is het tijd om te kijken naar worker roles. Ben je bewust dat een worker role meer te vergelijken is met een stuk infrastructuur als met een stuk software, zeker qua deployment. Wanneer je cloud services gebruikt als schaalbare en stateless onderdelen van je infrastructuur zul je weinig deployments van de rol zelf uitvoeren.
Uitrollen van software naar een Azure role
Blijft natuurlijk de vraag hoe je de achtergrond processen in de worker role kunt laden. Er zijn globaal gezien twee opties om te overwegen: De Azure web farm met background processing of met OctopusDeploy. Beide technologieën maken gebruik van web roles en niet van worker roles. In 99% van de gevallen is dat prima. Op deze manier hoef je de web role zelf niet om de haverklap te deployen en laad je de software in een bestaande rol.
Wanneer dan toch worker roles
Alleen wanneer je een van de volgende eisen hebt is een worker role een must:
- Je moet de rol opnieuw kunnen opstarten als er een fout optreedt.
- Je moet de server zelf kunnen starten en stoppen.
- Je moet gebruik kunnen maken van de RoleEnvironment
Ik hoop dat dit artikel je wat input geeft om achtergrond taken op te nemen in Azure. Ik heb hier alleen uitgegaan een scenario waarin je een taak zou willen onderbrengen in een worker role. Azure biedt ook andere mogelijkheden voor achtergrondtaken zoals Hadoop. Laat het je inspireren om verschillende technologieën uit te proberen en kennis te maken met de kracht van de cloud.
Auteur: Menno Jongerius, Bergler Competence Center 2016