Przejdź do treści
Comparisons

AWS vs Azure vs Google Cloud - Which Cloud to Choose?

Published on:
·
Updated on:
·14 min read·Author: MDS Software Solutions Group

AWS Azure Google

porownania

AWS vs Azure vs Google Cloud - Which Cloud to Choose?

Choosing a public cloud provider is one of the most critical infrastructure decisions that will affect your costs, performance, and application scalability for years to come. Amazon Web Services (AWS), Microsoft Azure, and Google Cloud Platform (GCP) dominate the cloud computing market, but each platform has unique strengths and limitations. In this comprehensive comparison, we analyze all key aspects of the three cloud giants - from pricing models and compute services to ML/AI tools and DevOps - to help you make an informed decision.

Market Share and Positioning#

The public cloud market continues to grow, with the three leaders controlling over 65% of the global cloud infrastructure market:

| Provider | Market Share | Quarterly Revenue | Trend | |----------|-------------|-------------------|-------| | AWS | ~31% | ~$27B USD | Stable leader | | Microsoft Azure | ~25% | ~$24B USD | Fastest growth | | Google Cloud | ~11% | ~$11B USD | Growing share |

AWS has maintained its leadership position since launching in 2006. As the pioneer of cloud computing, Amazon built the broadest ecosystem of services - over 200 fully functional offerings.

Azure leverages Microsoft's strong enterprise position. Integration with Active Directory, Office 365, and the .NET ecosystem makes it the natural choice for organizations already using Microsoft technologies.

Google Cloud Platform excels in data, machine learning, and Kubernetes. Google, the creator of Kubernetes, offers the most mature managed container orchestration service.

Pricing Models#

Understanding pricing models is key to optimizing cloud costs. Each provider takes a different approach to billing.

AWS Pricing#

AWS offers the most elaborate discount system:

  • On-Demand - pay per hour/second of usage, no commitments
  • Reserved Instances (RI) - 1 or 3-year commitment, savings up to 72%
  • Savings Plans - flexible spending commitment, savings up to 72%
  • Spot Instances - unused capacity, discounts up to 90%, can be interrupted
# Check current Spot Instance prices in eu-west-1
aws ec2 describe-spot-price-history \
  --instance-types m5.large \
  --region eu-west-1 \
  --start-time $(date -u +%Y-%m-%dT%H:%M:%S) \
  --product-descriptions "Linux/UNIX" \
  --query 'SpotPriceHistory[*].{AZ:AvailabilityZone,Price:SpotPrice}'

Azure Pricing#

Azure stands out with the Hybrid Benefit program:

  • Pay-As-You-Go - standard hourly rates
  • Reserved VM Instances - 1 or 3 years, savings up to 72%
  • Azure Hybrid Benefit - savings up to 85% with existing Windows/SQL Server licenses
  • Spot VMs - discounts up to 90%, can be interrupted
# List available VM sizes and prices in westeurope
az vm list-sizes --location westeurope --output table

# Check pricing for a specific VM size
az vm list-skus --location westeurope \
  --size Standard_D2s_v5 \
  --output table

GCP Pricing#

GCP offers the most transparent pricing model:

  • On-Demand - pay per second of usage (minimum 1 minute)
  • Sustained Use Discounts (SUD) - automatic discounts up to 30% for prolonged usage, no commitments required
  • Committed Use Discounts (CUD) - 1 or 3 years, savings up to 57%
  • Preemptible/Spot VMs - discounts up to 91%, maximum 24h lifetime
# List machine types and prices in europe-west1
gcloud compute machine-types list \
  --filter="zone:europe-west1-b" \
  --format="table(name, guestCpus, memoryMb, description)"

# Check current billing
gcloud billing budgets list --billing-account=ACCOUNT_ID

Price Comparison - Typical Scenario#

Configuration: 2 vCPU, 8 GB RAM, 100 GB SSD, load balancer, 1 TB transfer/month

| Component | AWS | Azure | GCP | |-----------|-----|-------|-----| | VM (on-demand) | ~$140/mo (m5.large) | ~$138/mo (D2s v5) | ~$130/mo (e2-standard-2) | | VM (1yr reserved) | ~$90/mo | ~$88/mo | ~$82/mo (CUD) | | Storage 100GB SSD | ~$10/mo | ~$9.60/mo | ~$17/mo (pd-ssd) | | Load Balancer | ~$18/mo + transfer | ~$18/mo + rules | ~$18/mo + transfer | | Data transfer (1TB) | ~$90/mo | ~$87/mo | ~$85/mo | | Total (on-demand) | ~$258/mo | ~$253/mo | ~$250/mo | | Total (reserved) | ~$208/mo | ~$203/mo | ~$202/mo |

Compute Services#

Compute power is the foundation of every cloud platform.

Amazon EC2#

EC2 (Elastic Compute Cloud) is the flagship compute service of AWS, offering the widest selection of instance types on the market:

# Launch an EC2 instance
aws ec2 run-instances \
  --image-id ami-0abcdef1234567890 \
  --instance-type m5.large \
  --key-name my-key-pair \
  --security-group-ids sg-0123456789abcdef0 \
  --subnet-id subnet-0123456789abcdef0 \
  --tag-specifications 'ResourceType=instance,Tags=[{Key=Name,Value=MyServer}]'

# Scale with Auto Scaling Group
aws autoscaling create-auto-scaling-group \
  --auto-scaling-group-name my-asg \
  --launch-template LaunchTemplateName=my-template,Version='$Latest' \
  --min-size 2 \
  --max-size 10 \
  --desired-capacity 4 \
  --vpc-zone-identifier "subnet-abc123,subnet-def456"

EC2 offers over 750 instance types - from small t3.micro to powerful p5.48xlarge with NVIDIA H100 GPUs. Spot Instances with discounts up to 90% are ideal for batch processing and CI/CD workloads.

Azure Virtual Machines#

Azure VMs stand out with strong integration into the Microsoft ecosystem:

# Create an Azure Virtual Machine
az vm create \
  --resource-group myResourceGroup \
  --name myVM \
  --image Ubuntu2204 \
  --size Standard_D2s_v5 \
  --admin-username azureuser \
  --generate-ssh-keys \
  --public-ip-sku Standard

# Scale with Virtual Machine Scale Sets
az vmss create \
  --resource-group myResourceGroup \
  --name myScaleSet \
  --image Ubuntu2204 \
  --upgrade-policy-mode automatic \
  --instance-count 2 \
  --admin-username azureuser \
  --generate-ssh-keys

Azure Hybrid Benefit enables savings up to 85% by leveraging existing Windows Server and SQL Server licenses.

Google Compute Engine#

Compute Engine excels in VM configuration flexibility:

# Create a Compute Engine instance
gcloud compute instances create my-instance \
  --zone=europe-west1-b \
  --machine-type=e2-standard-2 \
  --image-family=ubuntu-2204-lts \
  --image-project=ubuntu-os-cloud \
  --boot-disk-size=100GB \
  --boot-disk-type=pd-ssd

# Create a custom machine type (unique GCP advantage!)
gcloud compute instances create custom-vm \
  --zone=europe-west1-b \
  --custom-cpu=6 \
  --custom-memory=20GB \
  --image-family=ubuntu-2204-lts \
  --image-project=ubuntu-os-cloud

A unique advantage of GCP is Custom Machine Types - you can precisely select the number of vCPUs and the amount of RAM instead of choosing from predefined sizes. This means you never pay for resources you do not need.

Compute Comparison#

| Feature | AWS EC2 | Azure VM | GCP Compute Engine | |---------|---------|----------|--------------------| | Instance types | 750+ | 500+ | 300+ | | Custom VM | No | Limited | Yes (full) | | Max vCPU/instance | 448 | 416 | 416 | | Max RAM/instance | 24 TB | 12 TB | 12 TB | | Spot/Preemptible discount | Up to 90% | Up to 90% | Up to 91% | | Live Migration | No | Limited | Yes | | Nested Virtualization | Yes | Yes | Yes | | Bare Metal | Yes | Yes | Yes (Sole-tenant) |

Storage#

Object Storage#

| Feature | AWS S3 | Azure Blob Storage | GCP Cloud Storage | |---------|--------|--------------------|--------------------| | Durability | 99.999999999% (11x9) | 99.999999999% (11x9) | 99.999999999% (11x9) | | Availability SLA | 99.99% | 99.9% (Hot) | 99.95% (Standard) | | Storage classes | 6 | 4 | 4 | | Max object size | 5 TB | 190.7 TB (block blob) | 5 TB | | Lifecycle policies | Yes | Yes | Yes | | Versioning | Yes | Yes (Soft Delete) | Yes |

# AWS S3 - upload a file
aws s3 cp my-file.zip s3://my-bucket/backups/my-file.zip \
  --storage-class STANDARD_IA

# Azure Blob - upload a file
az storage blob upload \
  --account-name mystorageaccount \
  --container-name mycontainer \
  --name backups/my-file.zip \
  --file my-file.zip \
  --tier Cool

# GCP Cloud Storage - upload a file
gsutil cp my-file.zip gs://my-bucket/backups/my-file.zip
gsutil -m setmeta -h "Content-Type:application/zip" gs://my-bucket/backups/my-file.zip

Storage Pricing (per GB/month, US region)#

| Class | AWS S3 | Azure Blob | GCP Cloud Storage | |-------|--------|------------|-------------------| | Standard/Hot | $0.023 | $0.018 | $0.020 | | Infrequent/Cool | $0.0125 | $0.010 | $0.010 (Nearline) | | Archive | $0.004 | $0.002 | $0.004 (Coldline) | | Deep Archive | $0.00099 | $0.00099 | $0.0012 |

Databases#

Relational Databases#

| Feature | AWS RDS / Aurora | Azure SQL Database | GCP Cloud SQL / AlloyDB | |---------|-----------------|--------------------|-----------------------| | Engines | MySQL, PostgreSQL, MariaDB, Oracle, SQL Server | SQL Server, MySQL, PostgreSQL | MySQL, PostgreSQL, SQL Server | | Serverless | Aurora Serverless v2 | Azure SQL Serverless | AlloyDB (PostgreSQL) | | Max storage | 128 TB (Aurora) | 100 TB (Hyperscale) | 64 TB | | Read replicas | 15 (Aurora) | 4 (Hyperscale: 30) | 10 | | Multi-region | Aurora Global DB | Active Geo-Replication | Cross-region replicas |

# AWS - create an RDS instance
aws rds create-db-instance \
  --db-instance-identifier mydb \
  --db-instance-class db.r6g.large \
  --engine postgres \
  --master-username admin \
  --master-user-password MyPassword123 \
  --allocated-storage 100

# Azure - create a SQL database
az sql server create \
  --name myserver \
  --resource-group myResourceGroup \
  --location westeurope \
  --admin-user myadmin \
  --admin-password MyPassword123

az sql db create \
  --resource-group myResourceGroup \
  --server myserver \
  --name mydb \
  --service-objective S1

# GCP - create a Cloud SQL instance
gcloud sql instances create mydb \
  --database-version=POSTGRES_15 \
  --tier=db-custom-2-8192 \
  --region=europe-west1 \
  --root-password=MyPassword123

NoSQL Databases#

| Feature | AWS DynamoDB | Azure Cosmos DB | GCP Firestore / Bigtable | |---------|-------------|-----------------|--------------------------| | Data model | Key-value, Document | Multi-model (5 APIs) | Document / Wide-column | | Global distribution | Global Tables | Turnkey (default) | Multi-region | | Latency guarantee | < 10ms | < 10ms (99th percentile) | < 10ms | | Serverless | On-demand capacity | Serverless tier | Natively serverless | | Free tier | 25 GB + 25 WCU/RCU | 1000 RU/s + 25 GB | 1 GB + 50k reads/day |

Azure Cosmos DB stands out as the most versatile NoSQL database - it supports 5 different APIs (SQL, MongoDB, Cassandra, Gremlin, Table) with global distribution and latency SLA guarantees.

Serverless Computing#

AWS Lambda#

Lambda is the pioneer of serverless computing (launched in 2014) and remains the most popular FaaS service:

// AWS Lambda - Node.js handler
export const handler = async (event) => {
  const { httpMethod, path, body } = event;

  if (httpMethod === 'POST' && path === '/api/orders') {
    const order = JSON.parse(body);
    const result = await processOrder(order);

    return {
      statusCode: 201,
      headers: { 'Content-Type': 'application/json' },
      body: JSON.stringify(result)
    };
  }

  return { statusCode: 404, body: 'Not Found' };
};

Azure Functions#

Azure Functions provide the best integration with the Microsoft ecosystem:

// Azure Functions - C# handler
[Function("ProcessOrder")]
public async Task<HttpResponseData> Run(
    [HttpTrigger(AuthorizationLevel.Function, "post", Route = "orders")]
    HttpRequestData req)
{
    var order = await req.ReadFromJsonAsync<OrderRequest>();
    var result = await _orderService.ProcessAsync(order);

    var response = req.CreateResponse(HttpStatusCode.Created);
    await response.WriteAsJsonAsync(result);
    return response;
}

Google Cloud Functions / Cloud Run#

Google offers two approaches to serverless:

# Google Cloud Functions - Python handler
import functions_framework
from flask import jsonify

@functions_framework.http
def process_order(request):
    order = request.get_json()
    result = process(order)
    return jsonify(result), 201

Cloud Run is a unique GCP offering - you can run any Docker container in a serverless model, with no language or framework restrictions.

Serverless Comparison#

| Feature | AWS Lambda | Azure Functions | GCP Cloud Functions | GCP Cloud Run | |---------|-----------|-----------------|---------------------|---------------| | Max execution time | 15 min | 10 min (Consumption) | 60 min (2nd gen) | 60 min | | Max memory | 10 GB | 1.5 GB (Consumption) | 32 GB | 32 GB | | Cold start | Moderate | Low (.NET) | Low | Very low | | Free invocations/mo | 1M | 1M | 2M | 180k vCPU-seconds | | Containerization | Container images | Container images | Code only | Any container |

Regions and Availability#

A cloud provider's geographic presence directly impacts latency, data protection compliance (e.g., GDPR), and service availability:

| Feature | AWS | Azure | GCP | |---------|-----|-------|-----| | Regions | 33 | 60+ | 40 | | Availability Zones | 105+ | 300+ AZ | 121+ | | Countries | 29 | 50+ | 35+ | | Edge locations / PoP | 450+ (CloudFront) | 190+ (Front Door) | 180+ (Cloud CDN) | | European coverage | Frankfurt, Ireland, London, Paris, Milan, Spain, Zurich | 15+ EU regions incl. Poland | Frankfurt, London, Belgium, Netherlands, Finland, Zurich |

Azure leads in the number of regions - 60+ regions across 50+ countries, including a region in Poland (Poland Central in Warsaw), which is significant for organizations requiring data residency within specific jurisdictions.

ML/AI - Machine Learning and Artificial Intelligence#

| Feature | AWS | Azure | GCP | |---------|-----|-------|-----| | ML platform | SageMaker | Azure ML | Vertex AI | | Pre-trained models | Rekognition, Comprehend, Textract | Cognitive Services, Azure OpenAI | Vision AI, Natural Language, Translation | | AutoML | SageMaker Autopilot | Azure AutoML | Vertex AI AutoML | | LLM/GenAI | Bedrock (Claude, Llama, Mistral) | Azure OpenAI (GPT-4, DALL-E) | Gemini, PaLM 2 | | GPU | P5 (H100), Inf2 (Inferentia) | NC/ND (A100, H100) | A2/G2 (A100, L4), TPU v5e | | MLOps | SageMaker Pipelines | Azure ML Pipelines | Vertex AI Pipelines | | Notebooks | SageMaker Studio | Azure ML Studio | Vertex AI Workbench |

# AWS - launch a SageMaker training job
aws sagemaker create-training-job \
  --training-job-name my-training-job \
  --algorithm-specification TrainingImage=123456789.dkr.ecr.us-east-1.amazonaws.com/my-algo:latest,TrainingInputMode=File \
  --role-arn arn:aws:iam::123456789:role/SageMakerRole \
  --resource-config InstanceType=ml.p3.2xlarge,InstanceCount=1,VolumeSizeInGB=50

# Azure - create an Azure OpenAI resource
az cognitiveservices account create \
  --name my-openai-resource \
  --resource-group myResourceGroup \
  --kind OpenAI \
  --sku S0 \
  --location eastus

# GCP - launch Vertex AI training
gcloud ai custom-jobs create \
  --region=us-central1 \
  --display-name=my-training-job \
  --worker-pool-spec=machine-type=n1-standard-8,replica-count=1,container-image-uri=gcr.io/my-project/trainer:latest

Azure dominates the GenAI space through its exclusive partnership with OpenAI (GPT-4, DALL-E, Whisper). GCP offers its own Gemini models and dedicated TPU hardware. AWS bets on diversity with Bedrock, offering a choice among Claude, Llama, Mistral, and other models.

DevOps Tools#

| Feature | AWS | Azure | GCP | |---------|-----|-------|-----| | CI/CD | CodePipeline, CodeBuild | Azure DevOps, GitHub Actions | Cloud Build | | IaC | CloudFormation, CDK | ARM Templates, Bicep | Deployment Manager, Config Connector | | Container registry | ECR | ACR | Artifact Registry | | Monitoring | CloudWatch | Azure Monitor, App Insights | Cloud Monitoring, Cloud Trace | | Secret management | Secrets Manager, SSM | Key Vault | Secret Manager | | Service mesh | App Mesh | Open Service Mesh | Traffic Director |

# AWS - deploy with CodeDeploy
aws deploy create-deployment \
  --application-name MyApp \
  --deployment-group-name MyDeployGroup \
  --s3-location bucket=my-bucket,key=app.zip,bundleType=zip

# Azure - create a CI/CD pipeline
# az pipelines create --name "MyPipeline" \
#   --repository myrepo --branch main \
#   --yml-path azure-pipelines.yml

# GCP - build with Cloud Build
gcloud builds submit --config cloudbuild.yaml .

Azure DevOps is the most complete CI/CD platform in the cloud - it offers Git repositories, Boards (project management), Pipelines, Test Plans, and Artifacts in a single tool. AWS offers the most individual tools but they are less cohesive. GCP Cloud Build stands out for its simplicity and speed of setup.

When to Choose Each Platform#

Choose AWS when:#

  • You need the broadest ecosystem of services - AWS has a service for every possible scenario
  • Your team has AWS experience and certifications
  • You need advanced cost-saving options (Spot, Reserved, Savings Plans)
  • You are building applications with many integrating services (event-driven architecture)
  • You require the highest level of compliance certifications (government, finance, healthcare)
  • You are hosting Next.js applications and want a Vercel-like experience with AWS Amplify

Choose Azure when:#

  • Your organization is deeply embedded in the Microsoft ecosystem (Active Directory, Office 365, Dynamics)
  • You are building applications in .NET / C# - Azure offers the best integration
  • You need a hybrid cloud with existing on-premises Windows Server infrastructure
  • You want to leverage Azure Hybrid Benefit from existing Microsoft licenses
  • Your company has an Enterprise Agreement with Microsoft
  • You want Azure OpenAI Service for building applications with GPT-4

Choose GCP when:#

  • You work intensively with data and analytics - BigQuery is the best data warehouse service
  • You need advanced Kubernetes - GKE is the most mature managed K8s
  • You want multi-cloud with Anthos
  • You value simple and transparent pricing with automatic discounts (Sustained Use Discounts)
  • You are building ML/AI applications with TensorFlow, Vertex AI, or TPUs
  • You need serverless containers - Cloud Run is best in class
  • You want an Always Free tier with a free VM instance and BigQuery

Free Tier#

| Feature | AWS Free Tier | Azure Free Tier | GCP Free Tier | |---------|---------------|-----------------|---------------| | Trial period | 12 months | 12 months ($200 credits) | 90 days ($300 credits) | | VM | 750h t2.micro/mo | 750h B1s/mo | 1 e2-micro (always free) | | Storage | 5 GB S3 | 5 GB Blob | 5 GB Cloud Storage | | Database | 750h RDS t2.micro | 250 GB SQL Database | 1 GB Firestore | | Serverless | 1M Lambda invocations | 1M Functions invocations | 2M Cloud Functions | | Always Free | Lambda, DynamoDB, SNS | Functions, Event Grid | Compute (e2-micro), BigQuery (1TB) |

GCP stands out with the most generous Always Free tier - a free e2-micro instance with no time limit and 1 TB of BigQuery queries per month.

Comprehensive Comparison Table#

| Category | AWS | Azure | GCP | |----------|-----|-------|-----| | Market share | ~31% (leader) | ~25% (second) | ~11% (third) | | Number of services | 200+ | 200+ | 150+ | | Regions | 33 | 60+ | 40 | | Compute | EC2 (750+ types) | Virtual Machines | Compute Engine (Custom VMs) | | Kubernetes | EKS ($73/mo) | AKS (free control plane) | GKE Autopilot (best K8s) | | Serverless | Lambda (pioneer) | Functions (.NET native) | Cloud Run (containers) | | Object Storage | S3 (industry standard) | Blob Storage | Cloud Storage | | Relational DB | RDS/Aurora | SQL Database | Cloud SQL/AlloyDB | | NoSQL | DynamoDB | Cosmos DB (multi-model) | Firestore/Bigtable | | Data Warehouse | Redshift | Synapse Analytics | BigQuery (best) | | ML/AI | SageMaker + Bedrock | Azure ML + OpenAI | Vertex AI + Gemini | | DevOps | CodePipeline | Azure DevOps (best) | Cloud Build | | Networking | CloudFront, Route 53 | Front Door, Azure DNS | Global LB, Cloud CDN | | Enterprise IAM | AWS IAM | Entra ID (best) | Cloud IAM | | Hybrid | Outposts | Azure Arc + Stack | Anthos | | Free Tier VM | 750h t2.micro (12 mo) | 750h B1s (12 mo) | e2-micro (always free) | | Best for | Broadest ecosystem | Microsoft enterprise, .NET | Data, K8s, ML, multi-cloud |

Conclusion#

There is no single "best" cloud platform - the choice depends on your specific needs, existing technology stack, and team expertise.

AWS remains the safest choice thanks to its broadest ecosystem and dominant market position. If you have no strong reasons to choose something else, AWS is a solid default choice with the largest talent pool on the job market.

Azure is the obvious choice for organizations in the Microsoft ecosystem. If you use Active Directory, Office 365, SQL Server, or build with .NET, Azure will provide the best integration and cost optimization with Azure Hybrid Benefit. Additionally, Azure OpenAI Service gives exclusive access to GPT-4 models.

GCP is the best option for companies focused on data, ML, and Kubernetes. If BigQuery, GKE, or Vertex AI are critical for your business, GCP offers the best tools in those categories. The transparent pricing model with automatic discounts is an added benefit.

An increasingly popular approach is a multi-cloud strategy, leveraging the best services from each platform. Tools like Terraform, Kubernetes, and Anthos enable managing infrastructure across multiple clouds simultaneously.


Need Help with Cloud Migration?#

At MDS Software Solutions Group, we help companies choose and implement the right cloud platform. Our certified cloud engineers have experience with AWS, Azure, and GCP, and will help you:

  • Assess your current infrastructure and plan a migration
  • Optimize cloud costs with the right savings plans
  • Design architecture that is scalable and fault-tolerant
  • Implement CI/CD and infrastructure automation (IaC)
  • Host .NET and Next.js applications on the optimal platform

Contact us and let's discuss your cloud strategy. The first consultation is free.

Author
MDS Software Solutions Group

Team of programming experts specializing in modern web technologies.

AWS vs Azure vs Google Cloud - Which Cloud to Choose? | MDS Software Solutions Group | MDS Software Solutions Group