ARCHITECTUUR · KOSTENVERGELIJKING EN BUDGET

Kostenvergelijking en budgetplanning voor cloudmigratie

Een migratiebudget mislukt op twee manieren: het vergelijkt prijzen van dingen die niet vergelijkbaar zijn, of het vergeet alles wat geen prijs is. De ontwerpvraag is welke methode u een getal geeft dat u kunt verdedigen. Deze pagina zet vier aanpakken uiteen, laat zien wat een lijstprijsmodel op basis van uw Terraform kan stellen aan de hand van een StackToIT-run die met en zonder aannames is geprijsd, en geeft een regel om te kiezen.

Vier manieren om het budget op te bouwen

Kies er één als ruggengraat en gebruik de andere om die te toetsen. Rijen met de markering praktijk zijn algemene methode, niet iets wat StackToIT berekent.

AanpakWat u ervan krijgtWat u er niet van krijgt
1. Lijstprijsmodel van de beoordeelde omgeving (de run)Een regel per factureerbare resource aan beide kanten, met de status en de aanname erachter; een snel eerste beeld van de dekkingGebruiksafhankelijke kosten, support, licenties, beheer, migratiearbeid; elke besparing over valuta heen zonder wisselkoers
2. Gebruiksmodel op basis van factuurexports en monitoring (praktijk)Echte hoeveelheden voor verkeer, aanvragen en groei van opslagEen doelontwerp; STACKIT-regels totdat het ontwerp is gekozen
3. Pilotgolf, gemeten (praktijk)Gemeten kosten van de run en migratie-inspanning voor één workloadEen getal voor workloads van een andere vorm; de kosten van wachten op de pilot
4. Offerte van de leverancier voor vastgelegde capaciteit (praktijk)Een prijs voor een vastgelegde afnameEen vergelijking zolang de omvang niet is vastgelegd met een van de bovenstaande aanpakken

Aanpak 1 is snel en open over zijn hiaten. Aanpak 2 en 3 vullen de hiaten met metingen.

Wat de run heeft geprijsd en wat open bleef

Op 4 november 2026 beoordeeld door StackToIT: twee applicatieservers, een datavolume, een Multi-AZ PostgreSQL-database en een back-upbucket op AWS. Voor deze pagina geschreven.

Voorbeeldinvoermain.tf
resource "aws_instance" "app" {
  count         = 2
  ami           = "ami-0abcdef1234567890"
  instance_type = "m5.xlarge"

  root_block_device {
    volume_size = 80
    volume_type = "gp3"
  }
}

resource "aws_ebs_volume" "data" {
  availability_zone = "eu-central-1a"
  size              = 500
  type              = "gp3"
}

resource "aws_db_instance" "main" {
  identifier        = "main"
  engine            = "postgres"
  engine_version    = "16.3"
  instance_class    = "db.m5.xlarge"
  allocated_storage = 200
  multi_az          = true
  username          = "app"
  password          = "change-me-at-migration"
}

resource "aws_s3_bucket" "backups" {
  bucket = "acme-app-backups"
}
  • Waarom deze vorm

    Compute, blokopslag, een database en een objectbucket zijn de regels waaruit de meeste budgetten bestaan, en ze tonen alle vier de redenen waarom een regel zonder prijs blijft.

Twee runs: waarom een regel geen prijs heeft

De tabel met prijsstatussen in financial/cost-coverage.md, uit een run zonder aannames en uit een tweede run met het hieronder getoonde aannamebestand.

Run 1: zonder aannamesfinancial/cost-coverage.md
15 lines in all: 6 of the source, 9 of the target.

| State | Lines | Meaning |
|---|---|---|
| AMBIGUOUS | 1 | More than one price fits and none is picked. |
| PRICED | 5 | A price record and a known quantity give an amount. |
| PRICE_SOURCE_ABSENT | 1 | No price source was available for this line. |
| QUANTITY_UNKNOWN | 1 | A price is known and the quantity is not: neither zero nor one. |
| TARGET_NOT_CHOSEN | 7 | The target design does not choose what the price needs. |
Run 2: met het aannamebestandfinancial/cost-coverage.md
15 lines in all: 6 of the source, 9 of the target.

| State | Lines | Meaning |
|---|---|---|
| AMBIGUOUS | 1 | More than one price fits and none is picked. |
| PRICED | 9 | A price record and a known quantity give an amount. |
| PRICE_SOURCE_ABSENT | 1 | No price source was available for this line. |
| TARGET_NOT_CHOSEN | 4 | The target design does not choose what the price needs. |
  • Run 1

    Van 15 regels zijn er 5 geprijsd. 7 wachten op een keuze van het doel, zoals een server-flavor, 1 heeft meerdere passende prijzen, 1 heeft geen bronprijs en 1 heeft een prijs maar geen hoeveelheid.

  • Run 2

    Met het aannamebestand zijn 9 van de 15 regels geprijsd. Van de 6 die overblijven, zijn er 4 het bootvolume van de server en het datavolume, waarvan het bestand het doel niet noemt, 1 de AWS-servercompute (besturingssysteem en tenancy niet vermeld) en 1 de bucketopslag van AWS, waarvoor de cache geen prijslijst bevat.

Het aannamebestand

Twee van de vier items van het bestand dat in run 2 met --assumptions is meegegeven. De andere twee noemen een server-flavor en een opslagklasse van PostgreSQL als doelkeuze. Elk item noemt een onderwerp, een variabele, een waarde en een reden. De waarden zijn demogetallen, geen aanbevelingen.

Item voor de overlapassumptions.yaml
schema_version: "1.0"
assumptions:
  - id: cutover
    scenario: STANDARD_730H
    subject: scenario
    variable: parallel_run_months
    value: "2"
    unit: month
    explanation: "Planning figure for this demo: two months of side-by-side running"
Item voor het bucketvolumeassumptions.yaml
  - id: volume-size-stackit-objectstorage-bucket.backups
    scenario: STANDARD_730H
    subject: stackit_objectstorage_bucket.backups
    variable: volume_size
    value: "2000"
    unit: GB
    explanation: "Demo figure: backups hold about 2 TB on average"
  • Alleen wat u opgeeft wordt gebruikt

    De template die de run schrijft, noemt elke waarde waarop het model wacht. Een regel die het bestand niet noemt, blijft zonder prijs. Let op: in run 2 noemt cost-model.json alleen het overlap- en het bucketitem als gebruikt, hoewel de twee doelkeuzes hun regels hebben geprijsd; lees bij elke geprijsde regel de redentekst, die de aanname noemt.

  • Planningsgetal voor de overlap

    parallel_run_months is hoe lang beide omgevingen tegelijk draaien. De run noemt de bedragen per maand van elke kant, vermenigvuldigt ze met uw maanden en houdt het resultaat buiten elk totaal en elke vergelijking. In run 2 was dat 736,47 USD per maand voor de geprijsde bronregels en 1.355,93 tot 1.531,01 EUR voor de geprijsde STACKIT-regels bij de demokeuzes, elk een ondergrens omdat ongeprijsde regels ontbreken.

Hoe het model een regel weergeeft

Gelezen uit de twee runs. De klasse geeft aan hoeveel van een regel feit is.

Status of klasseBetekenisVolgende actie in de run
PRICEDEen prijsrecord en een bekende hoeveelheid geven een bedragGeen; controleer de aanname als de klasse ASSUMPTION is
TARGET_NOT_CHOSENHet concept laat de flavor, het plan of de opslagklasse over aan een variabeleGeef de keuze op in het aannamebestand of in het invoerbestand
AMBIGUOUSMeer dan één prijs past en geen is gekozen, bijvoorbeeld het besturingssysteem van een instanceGeef het ontbrekende feit op
PRICE_SOURCE_ABSENT, CACHE_MISSINGDe prijslijst van het bronaanbod staat niet in de cacheVul de prijscache eenmalig online met stacktoit prices refresh
QUANTITY_UNKNOWN, USAGE_NOT_STATEDEen prijs is bekend en het gebruik van één maand niet; de regel is dus geen 0 en geen 1Geef het gebruik op, bijvoorbeeld gigabytes in een bucket
KNOWN, ESTIMATE, ASSUMPTION, OUT_OF_MODELFeit uit de bron, een genoemde vermenigvuldiger zoals 730 uur, een hoeveelheid of klasse die u aannam, of niet berekendBehandel OUT_OF_MODEL als onbekend, nooit als nul

In run 2 was de vergelijking op omgevingsniveau PARTIAL en noemde die geen besparing, omdat de bronprijzen in USD waren, de STACKIT-prijzen in EUR en er geen wisselkoers was opgegeven.

Wat op het budget hoort en niet in het model zit

Het model berekent geen kosten voor gebruik, verkeer, support, licenties, beheer of migratiearbeid. Zet die zelf op het budget.

  • Dataoverdracht en aanvragen

    Het model prijst gebruik alleen waar het bestand één maand ervan noemt. Uw broncloud bepaalt wat die rekent voor het lezen en uitgaand overdragen van objecten; vraag naar de kosten voor de volumes die u verplaatst.

  • Versiegeschiedenis

    Amazon S3 rekent de normale tarieven voor elke versie van een object, elk een heel object. Het kopiëren van geschiedenis vermenigvuldigt het volume dat u leest en opslaat, dus bepaal of u die verplaatst.

  • Instellingen voor redundantie

    Azure-opties voor redundantie wegen lagere kosten af tegen hogere beschikbaarheid. STACKIT Object Storage heeft volgens de run geen beheerde cross-region replicatie, dus een tweede kopie is een syncjob met eigen opslag en overdracht.

  • Parallel draaien

    Beide omgevingen kosten geld terwijl u overschakelt. De run noemt dit apart als eenmalig item, per maand overlap en voor uw aangenomen maanden, in geen enkel totaal.

  • Mensen en tijd

    Migratiearbeid, bijscholing en de pilot schat u zelf met aanpak 3.

  • Moment van de besparing (praktijk)

    Een besparing telt vanaf de dag dat de bron wordt uitgefaseerd, niet vanaf de dag dat het doel draait. Plan de uitfasering als eigen mijlpaal.

Hoe u beslist

Een regel die u in een stuurgroep kunt toepassen.

  • Begin bij elke omgeving met aanpak 1

    Die is goedkoop en toont hoeveel van de omgeving überhaupt te prijzen is. Een dekking van 5 van de 15 regels is een bevinding, geen mislukking.

  • Doelkeuzes afronden met de architecten

    Regels met TARGET_NOT_CHOSEN zijn ontwerpvragen. Beantwoord ze in het invoerbestand en prijs daarna opnieuw.

  • Gemeten hoeveelheden toevoegen voor de duurste regels

    Gebruik aanpak 2 voor opslag en verkeer waar de regel wel een prijs heeft en geen hoeveelheid.

  • Een pilotgolf gebruiken als workloads verschillen

    Heeft de omgeving meerdere vormen, meet dan van elk één voordat u extrapoleert.

  • Bandbreedtes en dekking tonen, geen enkel getal

    Toon het aandeel geprijsde regels, de aannames erachter en de items die erbuiten zijn gehouden. Run 2 geeft voor de STACKIT-kant al een bandbreedte in plaats van één getal.

Vragen van finance en architectuur

Zegt StackToIT hoeveel we besparen?

Alleen wanneer beide kanten voor dezelfde eenheden in één valuta zijn geprijsd. Run 2 noemde geen besparing en zei waarom. Een besparingspercentage vereist een volledige vergelijking met een wisselkoers waarvan bron en datum zijn genoemd.

Zijn de prijzen actueel?

Ze komen uit een prijscache met een ophaaldatum die in de run staat (hier 26 oktober 2026). Beide runs toonden het ontbrekende AWS S3-aanbod in de cache en noemden het commando om te verversen. De demoruns waren offline; zonder --offline kan een assessment ontbrekende openbare prijzen zelf ophalen.

Is de uitvoer een factuur?

Nee. De run noemt zijn getallen een eerste raming van de infrastructuurkosten onder uitdrukkelijke aannames, geen rekening: lijstprijzen, geen kortingen, geen Spot, geen savings plans.

En de kosten van de migratie zelf?

Niet berekend. Het enige eenmalige item dat het model noemt, zijn de kosten van het parallel draaien van beide omgevingen, los van elk totaal.

Welke valuta moeten we gebruiken?

Gebruik er één voor de beslissing. Het model houdt elke kant in zijn eigen valuta en vergelijkt alleen met een wisselkoers die u opgeeft.

Bronnen

Uw volgende stap: STACKIT.

Vertel ons over uw omgeving, dan laten wij zien wat StackToIT daarvoor oplevert: doelarchitectuur, Terraform-artefacten en een gestructureerd migratieplan.

Laat uw gegevens achter, onze specialisten nemen contact met u op.

Liever zelf een e-mail sturen? connect@stacktoit.com

Wij gebruiken uw gegevens alleen om dit verzoek te beantwoorden en een mogelijke pilot te bespreken. Privacyverklaring