AWS → STACKIT · CASESTUDY

Het AWS Retail Store-voorbeeld, van begin tot eind beoordeeld

De Retail Store Sample App van AWS Containers is een openbare omgeving met vijf services op Amazon ECS en daarachter vijf managed dataservices. StackToIT las die ongewijzigd: 282 resources, 44 migratie-eenheden, geen enkele DIRECT. Deze doorloop volgt het pakket van het eerste getal tot de beslissingen die het project bepalen, en benoemt helder wat de run niet vaststelt.

Bewezen op een echte AWS-omgeving

De AWS Retail Store Sample App, een openbaar Terraform-project van AWS, door StackToIT beoordeeld en volledig gepubliceerd, precies zoals de run het heeft opgeleverd.

Casestudy bekijken (Engels)
282
Terraform-resourcedeclaraties geanalyseerd
44
migratie-eenheden geïdentificeerd
38
doeleenheden gegenereerd, van de 52 onderzochte eenheden
331
planstappen uitgeschreven

Zo leest u het pakket

Dit is de volgorde waarin een architect de bestanden zou openen. Paden zijn relatief ten opzichte van de uitvoermap van de gepubliceerde run.

  1. Begin met de samenvatting en de eerste blokkade

    index.html en executive/brief.md noemen de cijfers en de eerste vereiste actie: aanroepen naar STACKIT-API's toestaan die niet algemeen beschikbaar zijn. Vier stappen wachten op dat antwoord.

  2. Lees de klassen

    assessment.json bevat elke eenheid met klasse, zekerheidsniveau en reden. Van de 44 eenheden zijn er 34 RECONFIGURE, 9 REPLATFORM en 1 REDESIGN. Geen enkele eenheid heeft zekerheidsniveau HIGH, omdat de bronprovider niet is vastgezet.

  3. Neem de beslissingen

    executive/decisions.md telt 16 te nemen beslissingen: 9 planbeslissingen met benoemde opties, 5 handmatige acties en 2 planverklaringen; decisions.json bevat de records. Onder de planbeslissingen vallen dataverplaatsing, het verlagen van de engineversie, het ingresspad en podsegmentatie.

  4. Volg de volgorde

    migration/technical-sequencing.md ordent eenheden op afhankelijkheid in golven; migration/data-movement.md noemt de zes stateful eenheden die een methode nodig hebben.

  5. Open het concept

    terraform/ bevat 38 gegenereerde eenheden. Elk blok bevat opmerkingen over wat niet is overgenomen, met een verwijzing naar het engineeringspoor.

  6. Werk de handmatige stappen af

    execution/manual/actions.md groepeert het handwerk in pakketten met een eigenaar, een voorwaarde voor gereed en een rollbackregel.

Wat de 44 eenheden werden

Alleen aanwezige eenheden; nog eens acht eenheden hangen af van waarden die OpenTofu pas tijdens de planfase bepaalt en worden apart geteld.

AWS-bronSTACKIT-doelKlasse
Amazon ECS-cluster en vijf servicesSKE-cluster (STACKIT Kubernetes Engine)REPLATFORM (6 eenheden)
Aurora-clusters voor catalog en ordersMariaDB (catalog) en PostgreSQL Flex (orders)REPLATFORM (2 eenheden)
OpenSearch-domeinSTACKIT OpenSearchReplatforming
DynamoDB-tabel voor cartsMongoDB Flex, of PostgreSQL JSONB als andere optieRedesign
ElastiCache-replicatiegroepKey Value Store (Valkey)Herconfiguratie
Amazon MQ-brokerSTACKIT RabbitMQHerconfiguratie
Application Load BalancerSTACKIT Application Load BalancerHerconfiguratie
10 IAM-rollenService accounts met roltoewijzingen op projectniveauRECONFIGURE (10 eenheden)
12 security groups, VPC, NAT gateway, elastic IPSecurity groups, netwerken, impliciet uitgaand padRECONFIGURE (15 eenheden)
4 secrets, één KMS-sleutel, één loggroepSecrets Manager, KMS, een Logs-instanceRECONFIGURE (6 eenheden)

Per domein zijn de 44 eenheden: 16 netwerk, 15 identiteit, 6 compute, 5 data, 1 observability en 1 messaging.

Twee dataservices, naast elkaar uitgewerkt

Blokken uit terraform/data.tf van de gepubliceerde run, zonder de commentaarregels erboven. Links: de database orders, een Aurora-cluster dat naar PostgreSQL Flex is verplaatst. Rechts: de tabel carts, een DynamoDB-tabel die naar MongoDB Flex is verplaatst als alternatief, niet als equivalent.

Database ordersterraform/data.tf
resource "stackit_postgresflex_instance" "dependencies_orders_rds_this" {
  project_id = var.project_id
  name       = "retail-store-ecs-orders"
  version    = "15"
  flavor_id  = "2.4"
  storage = {
    class = var.postgresflex_storage_class
    size  = var.orders_rds_storage_size
  }
  backup_schedule = "0 2 * * *"
  network = {
    acl          = coalescelist(var.orders_rds_allowed_cidrs, stackit_ske_cluster.retail_app_ecs_cluster.egress_address_ranges)
    access_scope = var.orders_rds_access_scope == "SNA" ? "SNA" : null
  }
  retention_days = 32
}
Tabel cartsterraform/data.tf
resource "stackit_mongodbflex_instance" "dynamodb_tables" {
  project_id = var.project_id
  name       = "dynamodb-tables"
  acl        = var.dynamodb_tables_allowed_cidrs
  version    = var.dynamodb_tables_version
  flavor = {
    cpu = var.dynamodb_tables_cpu
    ram = var.dynamodb_tables_ram
  }
  replicas = 3
  storage = {
    class = var.mongodbflex_storage_class
    size  = var.dynamodb_tables_storage_gb
  }
  backup_schedule = "0 2 * * *"
  options = {
    type                       = "Replica"
    point_in_time_window_hours = var.dynamodb_tables_pitr_hours
  }
}
  • Afmetingen afgeleid van de bron

    Het plan en de flavor volgen uit de omvang van de bron. De run opent daarvoor een beslissing, met de standaardwaarde gemarkeerd als niet bevestigd.

  • Toegangslijsten

    De database orders laat de uitgaande adresbereiken van het cluster toe, tenzij u CIDR's opgeeft. Het databaseblok hangt daarom af van de clusterresource.

  • DynamoDB is een redesign

    Sleutelontwerp, capacity modes, streams en conditional writes worden niet overgenomen. De datatoegangslaag wordt herschreven voor de MongoDB-API en de data verhuist via export en import.

Compute en logging

Het cluster dat de ECS-services vervangt en de Logs-instance voor de taaklogs. De afmetingen van de node pools van het cluster zijn variabelen.

SKE-clusterterraform/kubernetes.tf
resource "stackit_ske_cluster" "retail_app_ecs_cluster" {
  project_id = var.project_id
  name       = "reta-7b7ce2"
  node_pools = [{
    name               = "workloads"
    machine_type       = var.cluster_machine_type
    minimum            = var.cluster_nodes_min
    maximum            = var.cluster_nodes_max
    availability_zones = var.availability_zones
  }]
}
Logs-instanceterraform/observability.tf
resource "stackit_logs_instance" "logs_retention_180d" {
  project_id     = var.project_id
  display_name   = "logs-retention-180d"
  retention_days = 180
}
  • De workloads zijn manifests

    terraform/kubernetes/ bevat per service een set manifests. De uitgaande adresbereiken van het cluster worden berekend, dus de toegangslijsten van de managed services wachten erop.

  • 180 dagen is het plafond

    De loggroep in de bron bewaart de logs onbeperkt, wat een Logs-instance niet kan. De run meldt dat oudere logs niet worden bewaard en opent de archiefbeslissing.

De beslissingen die het project bepalen

  • Hoe de data verhuist

    Zes stateful eenheden hebben een methode nodig: export en import, replicatie van de engine of een eigen tool. De bron noemt geen omvang, wijzigingsfrequentie of getolereerde downtime, dus de run kiest geen mechanisme.

  • Catalog op OpenSearch

    De service catalog hangt af van OpenSearch 3.3 terwijl de regio versie 2 aanbood. Opties: de data verplaatsen naar de aangeboden versie 2, de engine zelf draaien op SKE of wachten. Tot dan is de applicatie geblokkeerd.

  • Carts en checkout

    DynamoDB heeft geen tegenhanger, dus de services die het gebruiken vergen codewijzigingen. Checkout deelt bovendien het Valkey-endpoint dat alleen TLS toestaat.

  • Ingresspad

    Een NodePort aanhouden met de load balancer op node-IP's, een ingress controller draaien of de load balancer-extensie voor SKE gebruiken. Elke keuze verandert wat uw team beheert.

  • Podsegmentatie

    Security groups op nodeniveau zijn grover dan de groepen per service in de bron. NetworkPolicies schrijft een persoon.

  • Openbare endpoints en vaste egress

    Managed services hebben standaard openbare endpoints achter toegangslijsten. Het vaste adres van de NAT gateway gaat verloren, tenzij servers een eigen openbaar IP krijgen.

Wat deze run niet vaststelt

Door de run zelf vermeld, niet achteraf toegevoegd.

  • De bron is niet gevalideerd

    De upstream-omgeving heeft geen lockbestand voor providers, dus OpenTofu-validatie van de bron is niet uitgevoerd en elke eenheid is beperkt tot zekerheidsniveau MEDIUM.

  • Er is niets gepland of toegepast op STACKIT

    Het concept doorstond statische validatie tegen het providerschema. Er draaide geen plan tegen een live project en geen enkele eenheid is vrijgegeven voor automatisering.

  • Geen kostenvergelijking

    De bron noemt geen AWS-regio, dus er is geen AWS-prijs opgehaald. Vijf van de veertien STACKIT-regels zijn geprijsd; dat is een deelbedrag en geen besparing.

  • Geen enkele applicatie is gereed

    Nul van de vijf applicaties is gereed: catalog is geblokkeerd, carts en checkout vergen een redesign, en orders en ui zijn niet gereed omdat omgevingswaarden of de workload-identiteit nog openstaan.

Vragen over deze casestudy

Is de Retail Store-omgeving bewerkt?

Nee. De run beoordeelde de ECS-Terraform-root zoals upstream gepubliceerd, samen met de lokale modules die de root aanroept. De broncode wordt niet opnieuw gepubliceerd; de gelinkte repository bevat die.

Waarom is niets DIRECT?

Elke aanwezige eenheid vergt minstens een configuratiewijziging, zoals voor identiteit, netwerken of endpoints. Het dichtst bij een lift-and-shift komt de groep RECONFIGURE-eenheden.

Hoeveel stappen telt het plan?

331 planstappen: 53 OpenTofu-stappen, 4 STACKIT-API-stappen achter een opt-in, 272 handmatige stappen en 2 geweigerde stappen. Geen van de 57 geautomatiseerde stappen draait zoals geschreven: 48 zijn vrij van beslissingen en handmatige voorwaarden, en alle 48 wachten op een waarde zoals het project-ID.

Kan ik het pakket zelf controleren?

Ja. De uitvoer is ongewijzigd gepubliceerd met zijn manifest, en de verify-stap bevestigt dat alle 145 bestanden daarmee overeenkomen op grootte en SHA-256. Voor uw eigen omgeving levert een assessment van de Terraform hetzelfde soort pakket op.

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