Cloud providers offer hundreds of services across compute, storage, databases, AI, networking, and more. The naming is inconsistent across providers, which makes it hard to understand what you're looking at. This is a side-by-side map of the major categories, so you can recognize equivalent services and understand what each piece does. If Cartara flagged a cloud service in your diff, use this to understand what it is and whether there's a simpler managed alternative.
The big three cloud providers
| Provider | Market Share | Sweet Spot |
|---|---|---|
| AWS | ~31% | Breadth, enterprise defaults, largest ecosystem |
| Azure | ~25% | Microsoft shops, enterprise, hybrid cloud |
| GCP | ~12% | Data/ML workloads, Kubernetes, BigQuery |
For most builders, the choice between raw cloud providers matters less than the choice between using them directly versus using a managed platform (Vercel, Supabase, Railway) that runs on top of them. See Cloud Provider Overview and Choosing a Tech Stack for guidance on when to use which.
Compute
Running code — virtual machines, containers, and serverless functions.
| Category | AWS | Azure | GCP |
|---|---|---|---|
| Virtual Machines | EC2 | Virtual Machines | Compute Engine |
| Managed Containers (no Kubernetes) | ECS / Fargate | Container Apps | Cloud Run |
| Container Orchestration (Kubernetes) | EKS | AKS | GKE |
| Serverless Functions | Lambda | Azure Functions | Cloud Functions |
| App Platform (PaaS) | Elastic Beanstalk | App Service | App Engine |
| Edge Compute | Lambda@Edge / CloudFront Functions | — | Cloud CDN + serverless |
What this means for builders: Lambda ≈ Azure Functions ≈ Cloud Functions (event-driven, pay per invocation). ECS/Fargate ≈ Container Apps ≈ Cloud Run (run containers without managing servers). For most apps, Vercel or Railway is simpler than any of these.
Storage
Where data lives at rest.
| Category | AWS | Azure | GCP |
|---|---|---|---|
| Object Storage (files, images) | S3 | Blob Storage | Cloud Storage |
| Block Storage (attached disk) | EBS | Managed Disks | Persistent Disk |
| File Storage (shared filesystem) | EFS / FSx | Azure Files | Filestore |
| Archival / Cold Storage | S3 Glacier | Archive Blob | Coldline / Archive |
S3 is the de facto standard — most tools treat it as the reference implementation. Azure Blob and GCS are compatible via adapters. Cloudflare R2 is an S3-compatible alternative with no egress fees, making it popular for cost-conscious builders.
Databases
| Category | AWS | Azure | GCP |
|---|---|---|---|
| Managed PostgreSQL | RDS / Aurora | Azure Database for PostgreSQL | Cloud SQL / AlloyDB |
| Managed MySQL | RDS / Aurora | Azure Database for MySQL | Cloud SQL |
| NoSQL (document) | DynamoDB | Cosmos DB | Firestore |
| In-memory / Cache | ElastiCache (Redis) | Azure Cache for Redis | Memorystore |
| NewSQL / distributed | Aurora | Cosmos DB | Spanner |
| Search | OpenSearch Service | Azure AI Search | — |
Cross-cloud alternatives that work everywhere: Supabase (PostgreSQL), PlanetScale (MySQL), Neon (serverless Postgres), MongoDB Atlas. These are often a better starting point than the raw cloud databases.
AI and machine learning
| Category | AWS | Azure | GCP |
|---|---|---|---|
| AI API (foundational models) | Bedrock | Azure AI / Azure OpenAI | Vertex AI / Gemini API |
| ML Platform (training + serving) | SageMaker | Azure Machine Learning | Vertex AI |
| Vision API | Rekognition | Azure Computer Vision | Cloud Vision AI |
| Speech API | Transcribe / Polly | Azure Speech | Speech-to-Text |
| Document Processing | Textract | Azure Document Intelligence | Document AI |
Model access: AWS Bedrock hosts Claude, Llama, and others. Azure OpenAI is the primary commercial access point for GPT-4 models with enterprise data controls. GCP Vertex AI hosts Gemini and partners.
Networking
| Category | AWS | Azure | GCP |
|---|---|---|---|
| Load Balancer (HTTP/Layer 7) | ALB | Application Gateway | Cloud Load Balancing |
| Load Balancer (TCP/Layer 4) | NLB | Azure Load Balancer | Cloud Load Balancing |
| DNS | Route 53 | Azure DNS | Cloud DNS |
| CDN | CloudFront | Azure CDN / Front Door | Cloud CDN |
| API Gateway | API Gateway | API Management | Apigee |
Cloudflare sits outside this table — it's a global network layer you can put in front of any cloud provider. It's a major player in CDN, DDoS protection, WAF, and edge compute.
Security and identity
| Category | AWS | Azure | GCP |
|---|---|---|---|
| Identity and Access Management | IAM | Entra ID (Azure AD) | IAM |
| Secrets Management | Secrets Manager | Key Vault | Secret Manager |
| Key Management | KMS | Key Vault | Cloud KMS |
| Web Application Firewall | WAF | Azure WAF | Cloud Armor |
| DDoS Protection | Shield | DDoS Protection | Cloud Armor |
DevOps and developer tools
| Category | AWS | Azure | GCP |
|---|---|---|---|
| CI/CD | CodePipeline / CodeBuild | Azure DevOps / GitHub Actions | Cloud Build |
| Container Registry | ECR | Azure Container Registry | Artifact Registry |
| Infrastructure as Code | CloudFormation / CDK | ARM / Bicep / Terraform | Deployment Manager / Terraform |
| Monitoring | CloudWatch | Azure Monitor | Cloud Monitoring |
| Tracing | X-Ray | App Insights | Cloud Trace |
GitHub (owned by Microsoft) is the dominant source control and CI platform used across all clouds.
Data and analytics
| Category | AWS | Azure | GCP |
|---|---|---|---|
| Data Warehouse | Redshift | Azure Synapse | BigQuery |
| ETL / Pipelines | Glue | Data Factory | Cloud Dataflow |
| Streaming | Kinesis | Event Hubs | Pub/Sub |
| BI / Dashboards | QuickSight | Power BI | Looker |
Cloud-agnostic alternatives widely used across all three: Snowflake, Databricks, dbt, Fivetran.
Messaging and integration
| Category | AWS | Azure | GCP |
|---|---|---|---|
| Message Queue | SQS | Service Bus | Cloud Tasks / Pub/Sub |
| Pub/Sub Messaging | SNS | Service Bus Topics | Pub/Sub |
| Event Bus | EventBridge | Event Grid | Eventarc |
| Workflow Orchestration | Step Functions | Logic Apps | Workflows |
What You'll See in Your Code
Cartara may flag use of a raw AWS service where a simpler managed alternative exists:
```javascript
// Using raw AWS S3 directly
import { S3Client, PutObjectCommand } from '@aws-sdk/client-s3'
const s3 = new S3Client({ region: 'us-east-1' })
await s3.send(new PutObjectCommand({
Bucket: 'my-bucket',
Key: uploads/${filename},
Body: fileBuffer,
}))
// Simpler if you're already on Supabase:
const { data, error } = await supabase.storage
.from('uploads')
.upload(filename, fileBuffer)
```
Both are valid — the question is whether the added control of direct S3 is worth the added complexity for your stage.