Azure gebruikers kunnen op verschillende manieren hun kosten optimaliseren. Een van de mogelijkheden is het aanschaffen van reservations voor Azure VMs.
Bij de aankoop van een reservation ga je een financiële verplichting voor het afnemen van capaciteit voor één of drie jaar. Onder voorwaarden kun je reservations annuleren.
In dit artikel gaan we hier wat dieper op in.
Wat zijn Azure reservations?
Voordat we ingaan op het wijzigen en voortijdig opzeggen van reservations, vatten we kort samen wat Azure reservations zijn.
Een Azure reservation is een financiële verplichting voor het afnemen van een gespecificeerde hoeveelheid capaciteit voor een termijn van één of drie jaar. In ruil voor die verplichting krijg je korting op het on-demand tarief voor die capaciteit.
Reservations zijn beschikbaar voor verschillende Azure diensten. De meest gebruikte zijn Azure VMs, Azure SQL Database vCores, SQL Managed Instance reserved vCores, Azure Database for MySQL en Azure Database for PostgreSQL.
Wanneer je een reservation koopt, dan ga je betalen voor de gereserveerde capaciteit vanaf de startdatum van de reservation. Stel, je koopt een reservation voor 3 Azure VMs van type F2s_v2 in de Azure regio West Europe (Nederland). Dan moet je – los van die aankoop – 3 VMs van dat type starten in West Europe om gebruik te maken van het lagere tarief. Als je dat niet doet, dan betaal je wel – je immers bent een verplichting aangegaan – ook al gebruik je niets.
Een reservation aankopen geeft geen garantie dat er capaciteit beschikbaar is wanneer je die vraagt. Om op het vorige voorbeeld aan te haken: het kan voorkomen dat er geen VMs van type F2s_v2 beschikbaar in West Europe zijn wanneer je er een creëert, ook al heb je een reservation gekocht voor 3 VMs van dit type in die regio. Om capaciteit te reserveren gebruik je on-demand capacity reservations.
Reservations wijzigen
Ook al ga je een verplichting aan voor één of drie jaar, er zijn mogelijkheden om reservations te wijzigen. Om een reservation te wijzigen moet je toegang hebben tot de reservation order. Standaard heeft niet alleen degene die de reservation heeft gekocht toegang tot de reservation order. Standaard heeft ook de account administrator voor de subscriptie die is gebruikt voor de aankoop toegang en, hebben de enterprise billing administrators toegang.
Er zijn verschillende soorten wijzigingen mogelijk voor reservations. Hieronder bespreken we die in meer detail.
De scope van een reservation wijzigen
Elke reservation heeft een zgn. scope. De scope van een reservation bepaalt op welke resources de korting wordt toegepast. Er zijn vier scopes mogelijk:
- Resource group – korting wordt toegepast op resources van het type van de reservation in een enkele RG.
- (Single) Subscription – korting wordt toegepast op resources van het type van de reservation in een enkele subscription.
- Management group – korting wordt toegepast op resources van het type van de reservation in de subscripties die onderdeel zijn van de management group.
- Shared – korting wordt toegepast op resources van het type van de reservation in subscription binnen de billing context. Voor de contractvorm die SURFcumulus heeft, betekent dit dat de korting wordt toegepast op resources binnen het enrollment.
Veel instellingen die SURFcumulus gebruiken zitten in een gedeelde enrollment, d.w.z. een enrollment met meerdere instellingen erin. Elke instelling heeft een eigen department en een (of meerdere) eigen tenants. Omdat het enrollment gedeeld is, moeten SURFcumulus gebruikers geen reservations aankopen met Shared scope.
De scope van reservations kan onbeperkt worden gewijzigd.
Reservations splitsen
Een reservation voor meer dan 1 resource instance, zoals 2 or meer VMs, kan worden gesplitst. Daarmee kun je een reservation met scope Subscription opdelen in twee kleinere reservations en die als scope twee verschillende subscripties geven. Binnen de bestaande reservation order worden dan twee nieuwe reservations gemaakt; de oorspronkelijke reservation verdwijnt.
Een reservation splitsen kan alleen via PowerShell, de Azure CLI of de API. Het kan niet in de Azure portal.
Er is geen beperking op het splitsen van reservations.
Reservations samenvoegen
Reservations met dezelfde eigenschappen kunnen worden samengevoegd. Ook dit kan niet via de Azure portal, maar alleen via PowerShell, de Azure CLI of de API. Microsoft heeft geen documentatie pagina die uitleg geeft over het samenvoegen van reservations. De API referentie pagina Reservation – Merge laat zien dat reservations binnen een enkele reservation order kunnen worden samengevoegd. De preconditie is dat de reservations die worden samengevoegd dezelfde eigenschappen hebben. Welke eigenschappen dat zijn, is ongespecificeerd.
Het effect van een succesvolle samenvoeging is dat er een nieuwe reservation wordt gemaakt onder de reservation order, en dat de samen te voegen reservations worden geannuleerd.
Optimize instelling voor reserved VMs wijzigen
Reservations met scope Subscription hebben een configuratie optie die aangeeft waar prioriteit aan moet worden gegeven: beschikbaarheid van capaciteit, of flexibiliteit van de instance grootte. De standaardinstelling voor VM reservations is flexibiliteit van de instance grootte.
Bij de standaardinstelling wordt de reserveringskorting toegepast op VMs die in dezelfde instance grootte flexibiliteitsgroep zitten. Instance grootte flexibiliteitsgroepen zijn groepen van VM typen van dezelfde familie, bv. Dasv5 of FSv2. Ieder van de VM typen in een groep heeft een instance grootte flexibiliteitsratio.
Grosso modo kun je stellen dat het kleinste type in een groep ratio 1 heeft en dat de ratio’s van de grotere VM typen in de groep gelijk zijn aan het aantal vCPUs gedeeld door het aantal vCPUs van het kleinste type in de groep.
Hier is een voorbeeld. In de Dv5 familie heeft het VM type Standard_D2_v5 (2 vCPUs) een flexbiliteitsratio van 1 en het VMtype Standard_D32_v5 (32 vCPUs) heeft een flexibiliteitsratio van 16. Als je een reservation voor één Standard_D32_v5 hebt aangeschaft, dan kun je die volledig uitnutten als er 16 instances van type Standard_D2_v5 actief zijn binnen de scope van de reservation.
Er zijn uitzonderingen op deze vuistregel. Soms zitten niet alle typen uit een instance familie in dezelfde flexibiliteitsgroep, zoals bv. bij de MSv2 familie. Raadpleeg daarom de volledige lijst van instancegrootte flexibiliteitsratio’s als de flexibiliteit belangrijk is voor je capaciteitsplanning. Deze lijst is beschikbaar als CSV bestand op https://aka.ms/isf.
Wanneer de Optimize instelling wordt gewijzigd naar het prioriteren van beschikbare capaciteit, dan belooft Microsoft “better access”, maar tekent daarbij aan dat er geen garantie wordt gegeven en dat er geen SLA geldt, zie https://learn.microsoft.com/en-us/azure/virtual-machines/capacity-reservation-overview#difference-between-on-demand-capacity-reservation-and-reserved-instances.
Wanneer gegarandeerde beschikbaarheid van capaciteit belangrijk is, dan kan dat bereikt worden door gebruik te maken van zgn. On-demand capacity reservations, eventueel in combinatie met de aankoop van reservations.
Wat kan niet gewijzigd worden voor een reservation?
Betalingswijze
Als je een reservation aankoopt, dan kies je voor betaling vooraf, of betaling in maandelijkse termijnen gedurende de looptijd. Na de aankoop is dit niet meer te veranderen. De betalingswijze kan worden aangepast bij het hernieuwen van de reservation na afloop van de termijn van de reservation.
Billing subscriptie
Een aankoop van een reservation is gekoppeld aan een subscriptie, de billing subscriptie. Dit is het geval voor alle scopes. Het is niet mogelijk om de billling subscriptie te wijzigen na de aankoop. En als je een subscriptie verhuist naar een andere enrollment, dan worden reservations niet meeverhuisd (zie https://learn.microsoft.com/en-us/azure/cost-management-billing/reservations/manage-reserved-vm-instance#change-billing-subscription-for-an-azure-reservation). Als reservations mee moeten worden verhuisd, dan moet gebruik worden gemaakt van het uitwisselproces beschreven in de paragraaf Reservations uitwisselen hieronder.
Reservations inruilen
Reservations kunnen ook worden ingeruild, d.w.z. een reservation voor VMs, dedicated hosts of App Service kan worden omgezet in een Savings Plan aankoop.
Reservations uitwisselen
De meeste reservations kunnen worden uitgewisseld voor reservations van hetzelfde type: VM reservation voor VM reservation, database reservation voor database reservation, etc. Hier zijn beperkingen op van toepassing; deze beschrijven we hieronder.
Sommige reservations kunnen niet worden uitgewisseld. Op het moment van schrijven van dit artikel is dat het geval voor
- Gereserveerde capaciteit voor Azure Databricks,
- Azure OpenAI provisioned throughput,
- Synapse Analytics-abonnement vooraf aanschaffen (pre-purchase plan),
- Red Hat-abonnementen, en
- SUSE Linux-abonnementen.
Microsoft heeft aangekondigd te gaan stoppen met de mogelijkheid tot uitwisselen van reservations voor Azure VMs, Azure Dedicated Hosts en Azure App Service. Gebruikers die flexibiliteit nodig hebben wordt geadviseerd om Azure Savings Plans for Compute te gaan gebruiken.
Microsoft heeft een datum gepubliceerd wanneer de uitwisselmogelijkheid stopt en heeft later die datum ingetrokken. Er is nog geen nieuwe datum gepubliceerd wanneer Microsoft daadwerkelijk stopt met de mogelijkheid om reservations voor VMs, dedicated hosts en App Service uit te wisselen. Er wordt ten minste zes maanden vantevoren aangekondigd wanneer uitwisselmogelijkheid stopt. Tot die tijd kunnen deze typen reservations nog worden uitgewisseld voor nieuwe reservations van hetzelfde type.
Een uitwisseling van een of meer reservations is feitelijk een annulering, terugbetaling en nieuwe aankoop ineen. De restwaarde van de bestaande reservation(s) wordt in terugbetaald en de nieuwe aankoop wordt als nieuwe reservation order geregistreerd en gefactureerd volgens het gekozen betaalschema.
Bij het uitwisselen van een reservation kunnen de volgende eigenschappen worden gewijzigd.
- De periode (van één jaar naar drie jaar of omgekeerd).
- Het betaalschema (van vooraf naar maandelijkse termijnen of omgekeerd).
- De Azure regio (bv. van West Europe naar Noord Europa).
- De VM familie (bv. van Dasv5 naar FSv2).
Er is een aantal regels van toepassing op het uitwisselen van reservations. De belangrijkste regels zijn de volgende.
- De bestaande en nieuwe reservations moeten van hetzelfde type zijn (bv. VM reservations, of dedicated host reservations).
- De financiële commitment van de nieuwe reservation moet groter zijn dan de restwaarde van de reservations die worden uitgewisseld.
- De nieuwe reservation heeft als startdatum de datum van de uitwisseling, en is vanaf die datum één of drie jaar geldig.
Er is geen boete voor het uitwisselen van reservations en er is geen maximumbedrag van toepassing op uitwisselingen.
Bij het uitwisselen van reservations via de Azure portal zit in het formulier een sectie waarin je het product kiest om aan te kopen. Hier kun je de gewenste billing subscriptie kiezen.
Reservations voortijdig beëindigen (annuleren)
De meeste reservations kunnen voortijdig worden beëindigd (geannuleerd). Het restbedrag wordt dan terugbetaald.
De volgende type reservations kunnen niet worden geannuleerd.
- Azure Databricks gereserveerde capaciteit
- Synapse Analytics-abonnement vooraf aanschaffen (pre-purchase plan),
- Azure VMware oplossing door CloudSimple,
- Red Hat-abonnementen, en
- SUSE Linux-abonnementen.
Er is een belangrijke beperking op het annuleren van reservations. Het totale geannuleerde bedrag over de afgelopen twaalf maanden mag niet meer dan USD 50.000 bedragen. Dit wordt berekend over de billing scope. Dat betekent dat per enrollment binnen het SURF contract met Microsoft niet meer dan USD 50.000 aan reservations per 12 maanden mogen worden geannuleerd.
Het is in 2024 bij SURFcumulus voor het eerst voorgekomen dat VM reservations niet konden worden geannuleerd door deze grens. Dat was het gevolg van het samenvoegen van de Azure omgevingen van twee instellingen, waarbij een groot aantal reservations is geannuleerd en nieuwe reservations zijn aangekocht in een andere tenant, met een andere billing subscription.
We vragen aan instellingen die een groot aantal reservations willen annuleren om eerst contact op te nemen het het SURFcumulus team (surfcumulus-beheer@surf.nl) om te bespreken wat de beste manier is, en waar nodig het te bespreken met Microsoft.
Bij het annuleren van reservations heeft Microsoft contractueel het recht om 12% kosten in rekening te brengen. Deze worden momenteel niet in rekening gebracht, maar dit beleid kan in de toekomst veranderen.