Cloud SolutionsKosten beheren in Azure

Hartstikke leuk die Cloud en die self-service en self-provision die het biedt, zodat de diverse afdelingen in je organisatie zelf van alles in Azure kunnen aanmaken en gebruiken. Maar ja, wat kost dat nu allemaal? Wie moet wat betalen en wat gaat het in de toekomst allemaal kosten? In het verleden moesten afdelingen eerst aankloppen bij de IT-afdeling als er een nieuwe applicatie moest komen. Hierbij werd om servers, software en resources gevraagd om de nieuwe applicatie in de lucht te krijgen. Hierdoor kon je de kosten redelijk inzichtelijk en controleerbaar houden. Nu kloppen afdelingen alleen nog bij IT aan voor toegang tot Azure. Vervolgens kunnen ze zelf daarin hun nieuwe omgeving op (laten) bouwen. Bij een tiental resource groups met elk wat resources is het nog wel te doen. Maar wat als je meerdere subscripties met honderden of duizenden resources hebt, waarvan sommige resources maar een paar uur bestaan, om alvorens weer verwijderd te worden? Goede tooling is dan essentieel om grip te houden op de kosten. Gelukkig biedt Microsoft in Azure een aantal tools/middelen om die kosten beter te beheren.

Een stukje historie

 

In de begintijd van Azure waren de kosten inzichtelijk via de maandelijkse factuur die je ontving voor het gebruik. Daarnaast kon je het gebruik van de diverse services als een .CSV-bestand downloaden. Dit was een spaghetti aan cijfers en om er chocola van te maken moest je er bijvoorbeeld nog wat Excel macro’s overheen gooien. Microsoft bood voor Enterprise klanten op een gegeven moment een PowerBI oplossing. Tevens waren er wat bedrijven die tools/services boden om de kosten inzichtelijk te maken, eventueel zelfs multi-cloud. Cloudyn was zo’n bedrijf en Microsoft besloot in 2017 om dit bedrijf over te nemen, om zodoende de tooling van Cloudyn gratis voor zijn klanten aan te kunnen bieden. Microsoft heeft vervolgens de PowerBI en Cloudyn oplossingen samen laten komen in Azure Cost Management en deze geïntegreerd in de Azure Portal.

Azure Cost Management - Azure Portal

Azure Cost Management

In september 2018 heeft Microsoft de public preview van Azure Cost Management aangekondigd. Inmiddels is Cost Management algemeen beschikbaar voor Enterprise, Pay-as-you-Go en Government subscripties. Voor Azure-CSP subscripties komt deze functionaliteit ergens in de tweede helft van 2019 beschikbaar.

Azure Cost Management

Kostenbeheer is een continu Proces

Kostenbeheer is een continu process dat bestaat uit drie onderdelen:

  • Visibility: Wat kost het allemaal?
  • Accountability: Wie moet wat betalen?
  • Optimization: Kunnen we de kosten omlaag brengen?

Azure Cost Management - cost optimization

Visibility

Voor het inzichtelijk maken heeft Microsoft nu dus Azure Cost Management. Deze dienst is geïntegreerd in de Azure Portal en hoeft niet eerst geactiveerd of geconfigureerd te worden. Het is direct beschikbaar en gratis te gebruiken voor je Azure subscriptie. De data wordt ongeveer elke 4 uur bijgewerkt en geeft een overzicht van alle resources waarbij je gebruik kunt maken van in te stellen periode, filters, groeperingen op basis van bijvoorbeeld type resource, resource groups of gebruikte tags. Je kunt verschillende grafieken laten tonen en je kunt op de grafieken klikken om verder in te zoomen op specifieke kosten. Het biedt ook de mogelijk om een export te maken van alle gegevens. Deze export kun je plannen om bijvoorbeeld wekelijks de gegevens van de afgelopen week op te slaan in een storage account.

Azure Cost Management - analysis

Accountability

Maar wie gaat nu wat betalen? Doordat je met Cost Management de kosten bijvoorbeeld per resource group of aan de hand van een bepaalde tag kunt groeperen, kun je dus zien wie welke kosten maakt. Als je in Azure alle resources welke bij een bepaalde applicatie hoort in een resource group plaatst, kun je dus inzichtelijk maken hoeveel die applicatie kost. Heeft een applicatie meerdere omgevingen (test, acceptatie, productie), dan is het verstandig om deze elk in een eigen resource group te plaatsen. Het is ook mogelijk om resources te voorzien van labels (tags). Tags kun je aan alle resources hangen en zijn een combinatie van een naam en waarde. Voorbeelden van tags zijn:
  • costallocation: LP5534GB
  • department: finance
  • Environment: production
Nadeel van tags is, dat ze wel geconfigureerd moeten worden door de diverse personen. Of automatisch processen die resources aanmaken in Azure. Hoe zorg je ervoor dat alles de juiste tags heeft? Hiervoor kun je in Azure gebruik maken van policies. Je kunt diverse policies aanmaken die controleren op de aanwezigheid van bepaalde tags en kunnen zelf afdwingen dat resources niet aangemaakt kunnen worden als er geen tags worden meegegeven. Er is ook een policy die bepaalde tags welke op een resource group gezet zijn automatisch overgenomen worden op de resources welke daar binnen vallen.

Optimization

Nu hebben we alles inzichtelijk en weten we wie wat moet betalen, maar kunnen we het nog beter in de hand krijgen? Jazeker, middels Budgets kun je een budget hangen aan een subscriptie, resource group of management group. Bij zo’n budget configureer je bepaalde condities (bijvoorbeeld 75% van budget bereikt) en wat te doen indien deze conditie optreedt. Dit laatste gebeurt aan de hand van zogenoemde action groups. Hierin kun je bepaalde activiteiten instellen zoals het versturen van een e-mail, of het aanroepen van een automation runbook, azure function, webhook, etc. Je kunt dus eventueel alles stoppen in een resource group indien het budget bereikt is. Of dit verstandig is om dit in te stellen voor bijvoorbeeld de publieke website van een bedrijf? Wellicht toch maar een melding geven en onderzoeken of het budget nog toereikend is of dat er ergens in de kosten gesneden kan worden.
 
Een ander middel om de boel nog beter in de hand te krijgen, is om policies in te stellen voor wat er aangemaakt mag worden. Het is bijvoorbeeld mogelijk om in te stellen welke type virtual machines aangemaakt mogen worden. Hiermee kun je die hele dure, die meestal alleen nodig zijn voor specifieke doeleinden, uitsluiten. Indien nodig kun je hiervoor altijd nog een uizondering maken.
 
Een tool om je te adviseren in de kosten is Azure Advisor. Deze tool geeft allerlei aanbevelingen op het gebied van verhoogde beschikbaarheid, beveiliging, maar ook over de kosten. Deze kijkt bijvoorbeeld naar virtuele machines die weinig of niets doen en die wellicht wat teruggeschaald kunnen worden. Daarnaast checkt Advisor of je geen resources hebt die helemaal niet gebruikt worden. Bijvoorbeeld publieke IP-adressen die niet gekoppeld zijn aan bijvoorbeeld een VM of gateway. Ook deze Advisor is voor elke subscriptie gratis beschikbaar.

De cirkel rond

Het beheren van de kosten is niet een eenmalig iets, maar een continu proces dat bijvoorbeeld maandelijks of wekelijks rond blijft gaan. De verschillende afdelingen en ontwikkelteams zitten namelijk niet stil en je zult er continu mee bezig moeten blijven. Gelukkig heeft Azure allerlei automation mogelijkheden, zodat het werk voor een groot deel uit handen genomen kan worden.
 
Lees voor meer tips ook mijn blog Kosten besparen in Azure.
 
Erik Kooijman, Cloud Infrastructure Architect