Veel bedrijven en organisaties zijn inmiddels naar de cloud gemigreerd. Vaak had dat een technische insteek. Het was dan het een IT project en geen organisatie aangelegenheid. Nu draaien de workloads in de cloud en gaat de aandacht uit naar zaken als governance en Cloud Operations. Inmiddels wordt de organisatie geconfronteerd met hogere kosten dan gedacht. Ook zijn de kosten onvoorspelbaar fluctuerende ze sterk. Hoe kunnen we de kosten verlagen en grip houden hierop? Het is noodzakelijk dat we eerst begrijpen welke aspecten er aan cloud kosten zitten voordat we ze kunnen begrijpen.
Gebruik
De eerste factor die invloed heeft op kosten is het daadwerkelijke gebruik. Hiermee bedoelen we de hoeveelheid resources die in gebruik zijn. Hoe meer resources we afnemen hoe hoger de kosten. Daarom is het is dus belangrijk het gebruik van resources te beperken. Controle op ongebruikte resources is dan voor de hand liggend. Hierbij kan bijvoorbeeld gedacht worden aan EBS block volumes die niet meer gebruikt worden, of database read replica’s zonder master database. Maar ook kunnen er wellicht kleinere EC2 instances gebruikt worden.
Maar ook under-utilisation is verlies. We gebruiken dan namelijk meer resources dan nodig. Daardoor betalen we dus te veel. Hetzelfde geldt ook voor storage tiering (onderscheid maken tussen verschillende kwaliteitsniveaus van opslag). Is de hoge durability (hoe groot is de kans dat we bestanden kwijt raken), availability (de beschikbaarheid van bestanden en gegevens) en performance (hoe snel kan ik bestanden lezen en schrijven) wel echt nodig, of kan het met minder? Een lagere availability, durability en performance leidt tot lagere kosten. Storage classificatie is dan een voorwaarde.
Is meer goedkoper?
AWS hanteert een volumekorting. Simpel gesteld, hoe meer we afnemen, hoe hoger de korting. Dit gaat met staffels, voorbeeld hiervan zijn te vinden op: https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/useconsolidatedbilling-discounts.html Meer algemene informatie over pricing voorbeeld kan je vinden op: https://aws.amazon.com/s3/pricing/.
Hoewel een hogere afname een hogere korting tot gevolg heeft, worden de totale kosten natuurlijk niet lager. Het is daarom verstandig toch niet meer te gebruiken dan noodzakelijk. Met andere woorden, eerst kijken we naar het gebruik, daarna speelt pas volumekorting.
Maar we kunnen nog meer met volumekorting. Vaak hebben organisaties meerdere AWS accounts (een multi account structuur is een AWS best practice https://aws.amazon.com/answers/account-management/aws-multi-account-billing-strategy/). Het is handig om alle kosten van die AWS accounts samen te voegen in een centrale master billing account. Dat is feitelijk niets anders dan een AWS account die alleen gebruikt wordt voor kosten / billing. Hiermee ontstaat inzicht in kosten op een centrale plaats (handig wanneer er veel AWS accounts zijn). Maar belangrijker, de kosten worden daadwerkelijk samengevoegd waardoor de staffelkorting eerder bereikt wordt.
Slimme inkoop
Als organisaties geen commitment willen aangaan over de afname van resources, dan kiezen zij voor “On demand” (pay-as-you-go). Dit wil zeggen dat we resources kunnen afnemen of teruggeven wanneer het de klant uitkomt. Dit geeft AWS de grootste onzekerheid, want de afname is slecht te voorspellen. Klanten van AWS kopen hiermee flexibiliteit. Deze flexibiliteit heeft een prijs.
Reserved Instances
Soms weet een organisatie wel dat ze instance(s) voor langere tijd wil afnemen. Bijvoorbeeld bij continue workloads zoals databases, of ERP systemen. Deze instances kunnen zij Reserved inkopen, de zogenaamde Reserved Instances (RI – https://aws.amazon.com/ec2/pricing/reserved-instances/). Als resources voor dergelijke workloads voor langere tijd worden afgenomen, dan verstrekt AWS korting. We hebben hierbij de keuze voor een commitment van 1 jaar tot 3 jaar. Zijn we daarnaast ook nog bereid de kosten (gedeeltelijk) vooraf te betalen, dan is er nog meer korting (de keuze is hier, no-up front, partially up front en all up front).
Hoe hoger het bedrag dat we bereid zijn upfront te betalen, hoe hoger de korting. Met deze Reserved Instances ligt het commitment bij de klant en levert zij flexibiliteit in, maar daar staat korting tegenover.
Spot Instances
Aanvullend op Reserved Instances kunnen bedrijven ook bieden op de overcapaciteit (Spot Instances https://aws.amazon.com/ec2/spot/) die AWS heeft. Deze overcapaciteit wordt aan de hand van vraag en aanbod verkocht. De verkoopprijs fluctueert dus. De biedprijs is feitelijk de maximale prijs die een organisatie bereid is te betalen voor de instance. Stijgt de verkoopprijs boven de geboden prijs, dan neemt AWS de instance weg. Daalt de verkoopprijs onder de geboden waarden, dan krijg de klant de instance weer. Deze spot instances zijn daardoor geschikt voor tijdelijke workloads, of niet-tijdkritische workloads. De werkelijke kosten van Spot Instances liggen beduidend lager dan de On-Demand prijs.
De On-Demand instances, Reserved Instances en Spot Instances zijn tegelijkertijd en door elkaar heen te gebruiken. Reserved Instances kunnen verder nog verkocht en gekocht worden op de AWS marketplace.
Zoals blijkt, kan slim inkopen van resources de kosten drukken. Zeker wanneer dit voor een grote organisatie wordt gedaan en het om veel van dezelfde instances (types) gaat. Maar ook hier geldt, eerst bepalen of resources echt nodig zijn (en niet overbemeten zijn).
Savings plans
Waar de inkoop van Reserved Instances zich richt op korting op een per instance basis, kan er ook gekozen worden voor Savings Plans (https://aws.amazon.com/savingsplans/pricing/). Dit heeft 2 verschijningsvormen. Er kan gekozen worden voor een Compute Savings Plan waarbij een korting kan worden verkregen op de Compute (EC2) Service ongeacht de instances familie, size, Availability Zone, Regio of Operating System.
Ook bestaat er een EC2 Savings Plan waarbij korting verkregen wordt op alle EC2 instances in een specifieke regio en van een specifieke instance familie, ongeacht de Availability Zone, Size, Operating System of tenancy. Deze keuze geeft je nog steeds de vrijheid om bijvoorbeeld van Windows naar Linux te migreren op dezelfde instance types en te profiteren van de korting van het Savings Plan.
Er kunnen meerdere Savings Plans naast elkaar gebruikt worden en ook Reserved Instances kunnen gebruikt blijven worden. Het advies van AWS is echter, wanneer de termijn van de Reserved Instances is verlopen gebruik te maken van een Savings Plan, het levert dezelfde korting maar kent meer flexibiliteit.
Private Pricing – Enterprise Discount Program
Organisaties die een jaarlijkse AWS spend hebben van meer dan een miljoen dollar kunnen in aanmerking komen voor Private Pricing (https://aws.amazon.com/pricing/enterprise/). Met dit programma kan een klant commitment aangaan voor 1 tot 3 jaar voor de totale spend op AWS. Eventueel kan gekozen worden om een deel (of het geheel) van die spend vooraf te voldoen. Hoe groter het commitment en hoe meer upfront wordt betaald, hoe groter de korting. Het Enterprise Discount programma kent vaste korting percentages. Voorwaarde hiervoor is ook dat de klant Enterprise Support afneemt bij AWS (https://aws.amazon.com/premiumsupport/plans/enterprise/). De kosten voor Enterprise Support zijn afhankelijk van de maandelijkse AWS spend. Het is daarom een afweging (rekensom) of Enterprise Support en Private Pricing tegen elkaar opwegen. De organisatie zal moeten bepalen welke waarde AWS Enterprise Support voor haar heeft.
Maar hoe krijgen we de kosten nu lager?
Organisaties die zich geconfronteerd zien met onverwacht hogere kosten zullen daar actie op willen ondernemen. Het zinvol dat men zich eerst richt op het “Gebruik”. Een “Right Sizing” actie ligt dan voor de hand. Welke resources worden niet (meer) gebruikt, welke instances kunnen periodiek uit? Instances kunnen geautomatiseerd uit- en aangezet worden. Dit scheelt in de kosten. Wellicht handig om ontwikkel- en testsystemen wel geautomatiseerd te stoppen, maar ze niet meer geautomatiseerd aan te zetten. Alleen wanneer ze echt nodig zijn kunnen ze handmatig gestart worden. Een dergelijke “Opschoon” actie kan behoorlijk kosten besparen, maar hoe zorg ik ervoor dat de kosten niet toch later weer oplopen?
Cloud Economics
“The Million Dollar Question” is natuurlijk, hoe houden we de kosten laag? Een eenmalig actie is niet voldoende om de kosten permanent in de grip te houden. De essentie hierbij is dat de organisatie zich gaat realiseren dat “Kosten” een design parameter zijn en dat daarmee de architect, developer, operator verantwoordelijk zijn voor de kosten en het in de hand houden daarvan. Deze verantwoordelijkheid moet duidelijk zijn voor alle betrokkenen en zij hebben daarbij de nodige tooling nodig, zoals bijvoorbeeld inzicht in de kosten per workload. Zonder inzicht, geen grip.
Om Cloud Economics een permanent deel te laten worden van het design en beheerproces kan het Well Architected Framework (https://aws.amazon.com/architecture/well-architected/) van AWS gebruikt worden. Dit framework kent een 5 tal onderwerpen (Pillars) met achterliggende vragen. Worden alle vragen in het ontwerp beantwoord, dan strookt het ontwerp met AWS Design Principles en AWS Best Practices. Niet verwonderlijk is een van de onderwerpen (Pillars) hierin “Cost Optimization”.
Door het Well Architected Framework in de organisatie te adopteren borgt men dat kosten permanent bij de juiste personen op de “agenda” staan. Aardig detail is dat het Well Architected Framework als Service in de AWS console te vinden is. Hiermee kunnen de vragen eenvoudig beantwoord worden en kunnen ook opeenvolgende reviews van dezelfde workload bewaard worden.
Cloud Economics een organisatie aangelegenheid
Zoals uit dit betoog mag geconcludeerd, ligt de verantwoordelijkheid voor kosten in de Cloud (en het in de hand houden daarvan) op de werkvloer. En toch zijn de cloud kosten een organisatie aangelegenheid. Product eigenaren moeten zicht krijgen op de Cloud kosten van de workloads waarvoor zij verantwoordelijk zijn. De CFO moet begrijpen hoe jaarlijkse budgetten en pay-as-you-go met elkaar te verenigen zijn. Een forecast / prognose model kan hier bijvoorbeeld bij helpen. En als laatste, ook AWS kan ons helpen en doet dat ook.