Comparison grid

AWS vs Azure vs GCP vs the EU-sovereign equivalent, side by side

This is the wide view: every hyperscaler keeps its own column, so you can read one capability straight across AWS, Azure, GCP and the European option that actually exists in production today. It is the same conservative data as our service map, laid out for a single glance rather than a deep read. The grades are honest: where Europe is mature we say so, and where there is a genuine gap we grade it a gap.

How to read the verdict column

The verdict grades the European option, never the hyperscaler. Four stops, from a production-proven equivalent to a real gap. A gap means no managed EU-sovereign twin exists today, not that the category is unreachable.

  • Mature Production-proven EU equivalent. Low migration risk.
  • Viable Solid equivalent with minor feature deltas.
  • Partial Usable, but with real gaps in scale or features.
  • Gap No true managed EU-sovereign equivalent. Expect to self-host or reduce scope.
Each service category with its AWS, Azure and GCP offerings, the EU-sovereign equivalent, and a conservative verdict.
CapabilityAWSAzureGCPEU-sovereign equivalentVerdict
Object storageAmazon S3Azure Blob StorageGoogle Cloud StorageScaleway Object StorageOVHcloud Object StorageMature
Block storageAmazon EBSAzure Managed DisksPersistent Disk / HyperdiskScaleway Block StorageOVHcloud Block StorageMature
Virtual machinesAmazon EC2Azure Virtual MachinesGoogle Compute EngineScaleway InstancesOVHcloud Public CloudHetzner CloudMature
Managed KubernetesAmazon EKSAzure AKSGoogle Kubernetes Engine (GKE)Scaleway KapsuleOVHcloud Managed KubernetesMature
Container registryAmazon ECRAzure Container RegistryGoogle Artifact RegistryScaleway Container RegistryOVHcloud Managed Private RegistryHarbor (self-hosted)Mature
Managed PostgreSQLAmazon RDS / AuroraAzure Database for PostgreSQLCloud SQL / AlloyDB for PostgreSQLScaleway Managed DatabaseOVHcloud Managed DatabasesAiven for PostgreSQLViable
Managed cache (Redis/Valkey)Amazon ElastiCacheAzure Cache for RedisMemorystore for RedisScaleway Managed Database for RedisAiven for Valkey/RedisViable
Message queue / pub-subAmazon SQS / SNSAzure Service BusGoogle Cloud Pub/SubScaleway Messaging & QueuingSelf-hosted NATS / RabbitMQViable
Event streaming (Kafka)Amazon MSK / KinesisAzure Event HubsManaged Service for Apache KafkaAiven for Apache KafkaSelf-hosted Kafka / RedpandaViable
Authoritative DNSAmazon Route 53Azure DNSGoogle Cloud DNSScaleway Domains & DNSOVHcloud DNSBunny DNSViable
Transactional emailAmazon SESAzure Communication ServicesNo first-party service (SendGrid via Marketplace)Scaleway Transactional EmailBrevo (FR)Viable
Secrets & key managementAWS Secrets Manager / KMSAzure Key VaultSecret Manager / Cloud KMSScaleway Secret ManagerHashiCorp Vault (self-hosted)Viable
Application platform (PaaS)AWS App Runner / Elastic BeanstalkAzure App ServiceGoogle App EngineClever Cloud (FR)Scalingo (FR)Viable
Serverless containersAWS FargateAzure Container InstancesGoogle Cloud RunScaleway Serverless ContainersViable
Customer identity (CIAM)Amazon CognitoAzure AD B2CGoogle Cloud Identity PlatformKeycloak (self-hosted)ZitadelOryViable
Serverless functions (FaaS)AWS LambdaAzure FunctionsCloud Run functions (Cloud Functions)Scaleway Serverless FunctionsOVHcloud FunctionsPartial
Global CDN & edge computeAmazon CloudFront / Lambda@EdgeAzure Front DoorCloud CDN / Media CDNBunny.netGcoreOVHcloud CDNPartial
Metrics, logs & tracesAmazon CloudWatch / X-RayAzure MonitorCloud Monitoring / Logging / TraceSelf-hosted Grafana / Prometheus / Loki / TempoPartial
Managed ML platformAmazon SageMakerAzure Machine LearningVertex AIOVHcloud AI Endpoints / AI TrainingScaleway GPU Instances + Managed InferenceGap
Cloud data warehouseAmazon RedshiftAzure SynapseGoogle BigQueryClickHouse (self-hosted)Aiven for ClickHouseGap
Serverless wide-column NoSQLAmazon DynamoDBAzure Cosmos DBCloud Bigtable / FirestoreScyllaDB (self-hosted)Self-hosted CassandraFerretDB / MongoDB-compatibleGap

What the grid shows at a glance

Scan the verdict column top to bottom and the shape is clear: the commodity layer (object and block storage, virtual machines, managed Kubernetes, container registries, managed PostgreSQL) is settled, with production-proven European equivalents that mostly speak the same APIs.

The three rows graded gap are the ones to plan around: managed ML has no one-platform answer to SageMaker, there is no EU-sovereign serverless data warehouse to match Redshift or BigQuery, and DynamoDB’s pay-per-request model has no managed twin. Global edge compute is the notable partial just above them, thinner than CloudFront and Lambda@Edge, but not absent. Real engineering, named up front rather than discovered mid-migration.

Verdicts are conservative and reflect managed, EU-jurisdiction offerings as of 2026. Provider feature sets move quickly, so we re-check on every engagement.

Reading the grid

Why keep AWS, Azure and GCP in separate columns?
Because the choice of hyperscaler changes the migration. The service map collapses the three into one incumbent column when the EU verdict is the same across them; this grid keeps them apart so you can match your exact stack (an Azure Service Bus queue, a BigQuery warehouse, a Lambda function) to its European path without translating twice.
Does adding the GCP column change any verdict?
No. The verdict grades the EU-sovereign equivalent, not the hyperscaler. Listing three incumbents where before we listed one never moves a grade. A mature row is mature whether you leave AWS, Azure or GCP.
How is this different from the service map?
Same data, different density. The service map is the deep read: search, filter, per-row notes and the full reasoning. This grid is the at-a-glance matrix for comparing all three hyperscalers side by side. Both stay live; start here to scan, go there to dig in.