SIX SOURCES → STACKIT · ARCHITECTURE
Comparing AWS, Azure, Google Cloud, Huawei, Alibaba and Oracle Cloud for a STACKIT migration
The source cloud changes the migration less than its name suggests, and in a few places more. We wrote one small application (network, virtual machine, managed PostgreSQL, object bucket) in the Terraform of each of six clouds and assessed all six with StackToIT. Compute and PostgreSQL land in the same STACKIT services every time; what differs is the class of the object store, the network container, the node pool and, for Oracle Database, whether there is a target at all.
The same database, drafted from Azure
A small estate written for this page and assessed by StackToIT on 4 November 2026. Left: the PostgreSQL flexible server of the Azure input. Right: the STACKIT PostgreSQL Flex instance the engine wrote from it (the review comments above the block in the file are left out). The AWS and Google Cloud estates produce the same instance with their own source values.
resource "azurerm_postgresql_flexible_server" "orders" {
name = "pg-orders"
resource_group_name = azurerm_resource_group.orders.name
location = azurerm_resource_group.orders.location
version = "16"
administrator_login = "orders"
administrator_password = var.db_password
sku_name = "GP_Standard_D4s_v3"
storage_mb = 204800
backup_retention_days = 14
zone = "1"
high_availability {
mode = "ZoneRedundant"
standby_availability_zone = "2"
}
}resource "stackit_postgresflex_instance" "orders" {
project_id = var.project_id
name = "pg-orders"
version = "16"
flavor_id = "4.32-replica"
storage = {
class = var.postgresflex_storage_class
size = 200
}
backup_schedule = "0 2 * * *"
network = {
acl = var.orders_allowed_cidrs
}
retention_days = 32
}Size comes from the source
The source SKU has 4 vCPU and 16 GiB. The draft picks flavor 4.32-replica (4 vCPU, 32 GiB), the smallest high-availability PostgreSQL Flex flavor in the eu01 catalogue the run read, because the source runs a zone-redundant standby. STACKIT describes a replica set as three nodes that mirror each other; the run claims no zone placement or failover behaviour for them.
Retention is transformed
The source keeps backups for 14 days. The draft sets retention_days to 32 and marks the line TRANSFORMED in its ledger, so nobody reads it as an equal setting.
Access and zones are yours
The instance gets an access list from a variable without a default. The source zone and standby zone are not generated; the run records both as not carried.
Where a draft stops: Huawei Cloud and Oracle Cloud
From two of the runs. The Huawei Cloud, Alibaba Cloud and Oracle Cloud runs on this build write no STACKIT resource blocks, only an assessment, a plan and variables, so the evidence is the assessment record. Left: the Huawei RDS unit. Right: the Oracle Database system. Both records are shortened to id, class, confidence, target and reason; the Oracle record has no target at all.
{
"id": "huaweicloud_rds_instance.orders",
"class": "REPLATFORM",
"confidence": "MEDIUM",
"target": {
"service": "STACKIT PostgreSQL Flex"
},
"reason": "Managed PostgreSQL to managed PostgreSQL: data moves with pg_dump/pg_restore or logical replication, and the flavor becomes a Flex flavor."
}{
"id": "oci_database_db_system.orders",
"class": "REDESIGN",
"confidence": "LOW",
"reason": "STACKIT has no Oracle Database service. Decide whether the database changes engine, with a schema and procedure conversion, or stays on self-managed Oracle under your own licence."
}Same engine, a clear target
Managed PostgreSQL on Huawei Cloud, Alibaba Cloud, AWS, Azure and Google Cloud is REPLATFORM with MEDIUM confidence and lands on PostgreSQL Flex. Data moves with pg_dump and pg_restore or with logical replication.
No Oracle service on STACKIT
The Oracle Database system is REDESIGN with LOW confidence and no target service. The record says to decide between a new engine with schema and procedure conversion, or Oracle self-managed under your own licence.
Six sources, one application
Each row is one run of the same application shape: a network and subnet, a virtual machine, a managed PostgreSQL database and an object bucket. The AWS estate has a second subnet for the database; the Huawei Cloud and Alibaba Cloud estates add the security group their database or server needs, which each run maps to STACKIT security groups.
| Source cloud | Units and classes | What the run wrote |
|---|---|---|
| AWS | 6 units from 7 resources: 1 DIRECT, 4 RECONFIGURE, 1 REPLATFORM | Terraform for 5 units, 1 unit that needs no resource, 12 variables |
| Azure | 5 units from 7 resources: 3 RECONFIGURE, 2 REPLATFORM | Terraform for 4 units, 1 unit that needs no resource, 8 variables |
| Google Cloud | 5 units from 5 resources: 4 RECONFIGURE, 1 REPLATFORM | Terraform for 4 units, 1 unit that needs no resource, 8 variables |
| Huawei Cloud | 6 units from 6 resources: 5 RECONFIGURE, 1 REPLATFORM | No resource blocks; 6 units left for the architect, 1 variable |
| Alibaba Cloud | 6 units from 6 resources: 5 RECONFIGURE, 1 REPLATFORM | No resource blocks; 6 units left for the architect, 1 variable |
| Oracle Cloud | 5 units from 5 resources: 4 RECONFIGURE, 1 REDESIGN | No resource blocks; 5 units left for the architect, 1 variable |
Counts as the runs reported them. Every unit is MEDIUM confidence except the Oracle Database system, which is LOW. These are small estates; they show the shape of each source, not the effort of yours.
Service by service: where the sources differ
| Topic | Source clouds | What the runs show |
|---|---|---|
| Virtual machine | All six | RECONFIGURE, MEDIUM, to STACKIT Compute Engine: a server, a volume and a network interface |
| Managed PostgreSQL | AWS, Azure, Google Cloud, Huawei, Alibaba | REPLATFORM, MEDIUM, to PostgreSQL Flex; the instance class, SKU or tier becomes a Flex flavor |
| Oracle Database | Oracle Cloud | REDESIGN, LOW, no target service: the engine itself is the decision |
| Object storage | AWS · Azure · Google Cloud, Huawei, Alibaba, Oracle | DIRECT for the S3 bucket · REPLATFORM for the storage account · RECONFIGURE for the others; all land on STACKIT Object Storage |
| Network container | AWS, Azure, Google Cloud · Huawei, Alibaba, Oracle | VPC, virtual network and VPC network map to STACKIT project networking or a Network Area · Huawei VPC, Alibaba VPC and Oracle VCN map to a STACKIT network |
| Kubernetes cluster | All six (earlier runs) | REPLATFORM, MEDIUM, to STACKIT Kubernetes Engine (SKE) |
| Kubernetes node pool | Huawei, Alibaba · Oracle | MANUAL_REVIEW, LOW, nothing assessed because the resource type is not in the catalogue · REPLATFORM, MEDIUM, to an SKE node pool |
The Kubernetes rows come from separate runs of a cluster with its network, one per source cloud. The node pool rows show a coverage gap of this build, not a property of the clouds. In the EKS, AKS and GKE runs the node pool is assessed as a part of the cluster unit (its settings are listed under that unit in assessment.json), so it has no row of its own.
Options for sequencing a mixed estate
General practice for estates that come from more than one cloud. Each StackToIT run reads one root module, so a mixed estate is a set of runs.
| Option | Fits when | Trade-off |
|---|---|---|
| One source cloud at a time | Teams, accounts and pipelines are separate per cloud | Clear ownership and one set of source-specific decisions per wave, but cross-cloud links between applications are met late |
| By application across clouds | One application spans two clouds, for example data in one and compute in another | The cutover plan follows the application, but you read several runs together and reconcile their decisions by hand |
| Best-evidenced source first | You need a first result on STACKIT soon | AWS, Azure and Google Cloud runs carry Terraform drafts, so the first wave is easy to check; Huawei, Alibaba and Oracle waves start from assessment records |
| Shared landing zone first | Several sources feed one STACKIT organisation | Projects, networks and access are decided once, before the first source run is acted on |
How to decide
Start from the classes, not the cloud
Read the class column of each run before you rank the sources. REDESIGN and MANUAL_REVIEW units, such as an Oracle Database or a node pool with no catalogue entry, set the schedule more than the number of resources.
Check what the run wrote
Open terraform/ in each output. A folder with only terraform.tf, variables.tf and README.md means the plan exists but the resource blocks are the architect's to write.
Decide the project layout once
The migration plan of every one of the six runs starts with the same open box: STACKIT organisation, folders and projects laid out, with one project per environment as the usual start. Answer it once for the whole estate and reuse the answer in each source run.
Keep one decision register for the estate
decisions.json differs per run: 16 open decisions for AWS, 12 for Azure, 10 for Google Cloud, and none for Huawei Cloud, Alibaba Cloud and Oracle Cloud, whose units are all left to the architect. Merge the open decisions into one list before the first wave is planned, add your own for the three sources without drafts, and give each an owner.
Test the engine-specific points early
The review lines of each database unit name what to test. In the AWS data estate behind our database architecture guide they were the extension list for PostgreSQL, SQL Agent jobs, linked servers and CLR assemblies for SQL Server, and authentication plugins for MySQL moving to MariaDB.
Questions architects ask
Which source cloud is the easiest to migrate to STACKIT?
In these runs AWS, Azure and Google Cloud give the most complete drafts: Terraform for most units. Easiest in your case depends on the classes of your own estate; a REDESIGN unit outweighs a clean network.
Why do the Huawei, Alibaba and Oracle runs write no Terraform?
On this build their runs write the assessment, the migration plan, variables and a README, but no STACKIT resource blocks and no open decisions: terraform/README.md lists every unit as left for the architect (6, 6 and 5 units). The assessment record still gives class, confidence, target service and reason for each unit.
Can one run cover AWS and Azure together?
No. A run reads one Terraform or OpenTofu root module, or one RVTools export. Estates from several clouds are assessed as several runs.
Does the object store class matter?
It changes the work. DIRECT means the bucket maps one to one, RECONFIGURE or REPLATFORM means a setting or the access model changes. All of them end on STACKIT Object Storage.
Sources
Your next move: STACKIT.
Tell us about your estate. We show you what StackToIT delivers for it: target architecture, Terraform artifacts and a structured migration plan.