11.0.6 Cloud Providers

Market Landscape Overview

Major Cloud Providers Q4 2024:

Market Share by Revenue (Latest):

1 Amazon Web Services (AWS)     - 31%
2 Microsoft Azure               - 25%
3 Google Cloud Platform (GCP)   - 12%
──────────────────────────────────────
4 Alibaba Cloud                 - 4%
5 IBM Cloud                     - 2%
6 Oracle Cloud                  - 2%
7 Salesforce                    - 2%
8 Others                        - 22%

Note

Key Trend (2024): Azure is closing the gap with AWS, while GCP is growing fastest in AI/ML workloads. All three now offer similar core services but with different strengths.

Note

This course provides comprehensive hands-on tutorials for the top three cloud providers:

  • AWS (Chapter 11_cloud_aws) - Market leader with broadest service catalog

  • Azure (Chapter 11_cloud_azure) - Enterprise-focused with strong hybrid capabilities

  • GCP (Chapter 11_cloud_gcp) - Innovation leader in data analytics, ML, and Kubernetes

Each chapter includes practical examples of deploying your containerized applications.

The Big Three: Deep Dive

1. Amazon Web Services (AWS)

The Pioneer (Launched 2006)

AWS Strengths:

+ Largest service catalog (200+ services)
+ Most mature platform
+ Biggest global presence (84+ regions)
+ Largest partner ecosystem
+ Best documentation and community
+ Most third-party integrations

Container Services:

AWS Container Stack:
┌─────────────────────────────────────┐
│ Amazon EKS (Managed Kubernetes)     │
│ ├─ Fully managed control plane      │
│ ├─ Integrates with AWS services     │
│ └─ Supports Fargate (serverless)    │
├─────────────────────────────────────┤
│ Amazon ECS (Container Service)      │
│ ├─ AWS-native orchestration         │
│ ├─ Simpler than Kubernetes          │
│ └─ Good for AWS-only deployments    │
├─────────────────────────────────────┤
│ Amazon ECR (Container Registry)     │
│ ├─ Private Docker registry          │
│ ├─ Vulnerability scanning           │
│ └─ Integrates with CI/CD            │
├─────────────────────────────────────┤
│ AWS Fargate (Serverless Containers) │
│ ├─ No server management             │
│ ├─ Pay per container execution      │
│ └─ Works with EKS and ECS           │
└─────────────────────────────────────┘

Your GitHub Actions Integration:

# .github/workflows/aws-deploy.yml
name: Deploy to AWS EKS

on:
  push:
    branches: [main]

jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3

      - name: Configure AWS credentials
        uses: aws-actions/configure-aws-credentials@v1
        with:
          aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
          aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
          aws-region: us-west-2

      - name: Login to Amazon ECR
        run: |
          aws ecr get-login-password --region us-west-2 |
          docker login --username AWS --password-stdin $ECR_REGISTRY

      - name: Build and push Docker image
        run: |
          docker build -t $ECR_REGISTRY/myapp:$GITHUB_SHA .
          docker push $ECR_REGISTRY/myapp:$GITHUB_SHA

      - name: Deploy to EKS
        run: |
          aws eks update-kubeconfig --name my-cluster --region us-west-2
          kubectl set image deployment/myapp myapp=$ECR_REGISTRY/myapp:$GITHUB_SHA
          kubectl rollout status deployment/myapp

Best For:

  • Enterprises needing comprehensive services

  • Applications requiring AWS-specific features

  • Teams with AWS expertise

  • Projects needing maximum flexibility

Popular Services:

  • EC2 (Virtual machines)

  • S3 (Object storage)

  • RDS (Managed databases)

  • Lambda (Serverless functions)

  • EKS (Managed Kubernetes)

2. Microsoft Azure

The Enterprise Champion

Azure Strengths:

+ Best Microsoft integration (Office 365, Active Directory)
+ Strong hybrid cloud capabilities
+ Enterprise security and compliance
+ Excellent Windows support
+ Strong .NET and Microsoft stack integration
+ Competitive pricing

Container Services:

Azure Container Services (2024 Updates):
┌─────────────────────────────────────────┐
│ Azure Kubernetes Service (AKS)          │
│ ├─ Free control plane (cost advantage)  │
│ ├─ Azure Active Directory integration   │
│ ├─ Virtual nodes (Azure Container Inst.)│
│ ├─ KEDA integration (event-driven scale)│
│ └─ Confidential containers (2024)       │
├─────────────────────────────────────────┤
│ Azure Container Apps (2024 Focus)       │
│ ├─ Serverless containers platform       │
│ ├─ Built-in Dapr integration            │
│ ├─ Revision-based deployment            │
│ └─ Scale-to-zero capabilities           │
├─────────────────────────────────────────┤
│ Azure Container Registry (ACR)          │
│ ├─ Geo-replication and caching          │
│ ├─ Microsoft Defender integration       │
│ ├─ Artifact streaming (faster pulls)    │
│ └─ Teleport for air-gapped scenarios    │
├─────────────────────────────────────────┤
│ Azure DevOps + GitHub Integration       │
│ ├─ Native Azure integration             │
│ ├─ Enterprise-grade security            │
│ └─ Advanced compliance features         │
└─────────────────────────────────────────┘

Your GitHub Actions Integration:

# .github/workflows/azure-deploy.yml
name: Deploy to Azure AKS

on:
  push:
    branches: [main]

jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3

      - name: Login to Azure
        uses: azure/login@v1
        with:
          creds: ${{ secrets.AZURE_CREDENTIALS }}

      - name: Login to Azure Container Registry
        run: |
          az acr login --name ${{ env.ACR_NAME }}

      - name: Build and push Docker image
        run: |
          docker build -t $ACR_NAME.azurecr.io/myapp:$GITHUB_SHA .
          docker push $ACR_NAME.azurecr.io/myapp:$GITHUB_SHA

      - name: Deploy to AKS
        run: |
          az aks get-credentials --resource-group $RESOURCE_GROUP --name $CLUSTER_NAME
          kubectl set image deployment/myapp myapp=$ACR_NAME.azurecr.io/myapp:$GITHUB_SHA
          kubectl rollout status deployment/myapp

Best For:

  • Microsoft-centric organizations

  • Hybrid cloud deployments

  • Enterprise applications with strict compliance

  • .NET applications

  • Organizations using Office 365

Popular Services:

  • Virtual Machines (Compute)

  • Blob Storage (Object storage)

  • Azure SQL Database (Managed database)

  • Azure Functions (Serverless)

  • AKS (Managed Kubernetes)

3. Google Cloud Platform (GCP)

The Innovation Leader

GCP Strengths:

+ Best-in-class data analytics and AI/ML
+ Kubernetes originated here (Google created it)
+ Competitive pricing and sustained-use discounts
+ Excellent network performance
+ Strong open-source commitment
+ Clean, intuitive interfaces

Key Container Services:

  • Google Kubernetes Engine (GKE): Most advanced managed Kubernetes

  • Cloud Run: Serverless containers with auto-scaling to zero

  • Artifact Registry: Universal package manager with vulnerability scanning

  • Cloud Build: Native CI/CD with Git integration

Best For:

  • Data-heavy applications

  • AI/ML projects

  • Kubernetes-native applications

  • Startups and cost-conscious organizations

  • Applications needing global performance

Popular Services:

  • Compute Engine (Virtual machines)

  • Cloud Storage (Object storage)

  • BigQuery (Data warehouse)

  • Cloud Functions (Serverless)

  • GKE (Managed Kubernetes)

Note

For Detailed GCP Coverage: See Chapter 11_cloud_gcp for comprehensive hands-on tutorials including GKE, Cloud Run, compute services, databases, networking, security, and cost optimization specific to Google Cloud Platform.

Side-by-Side Comparison

Container Platform Comparison:

┌─────────────────┬─────────────┬─────────────┬─────────────┐
│ Feature         │     AWS     │    Azure    │     GCP     │
├─────────────────┼─────────────┼─────────────┼─────────────┤
│ Kubernetes      │ EKS         │ AKS         │ GKE         │
│ Control Plane   │ $0.10/hour  │ Free        │ Free*       │
│ Registry        │ ECR         │ ACR         │ Artifact    │
│ Serverless      │ Fargate     │ ACI         │ Cloud Run   │
│ CI/CD           │ CodePipeline│ DevOps      │ Cloud Build │
│ Monitoring      │ CloudWatch  │ Monitor     │ Operations  │
│ Auto-scaling    │ Good        │ Good        │ Best        │
│ Multi-region    │ Excellent   │ Good        │ Excellent   │
│ Documentation   │ Excellent   │ Good        │ Good        │
└─────────────────┴─────────────┴─────────────┴─────────────┘

* GKE Autopilot is pay-per-pod

Pricing Comparison (Similar Workload):

Small Web App (2 CPU, 4GB RAM, 3 replicas):

AWS EKS:
├─ Control plane: $73/month
├─ Worker nodes: $150/month
├─ Load balancer: $18/month
└─ Total: ~$241/month

Azure AKS:
├─ Control plane: $0/month
├─ Worker nodes: $140/month
├─ Load balancer: $20/month
└─ Total: ~$160/month

GCP GKE Autopilot:
├─ Pay per pod: $120/month
├─ Load balancer: $18/month
├─ No node management
└─ Total: ~$138/month

Regional Strengths and Focus

Geographic Presence:

Global Reach:

AWS: 84 Availability Zones across 26 regions
├─ Strongest in: North America, Europe
├─ Growing in: Asia Pacific, Latin America
└─ First mover advantage globally

Azure: 60+ regions worldwide
├─ Strongest in: Europe, North America
├─ Growing in: Government/compliance markets
└─ Excellent hybrid connectivity

GCP: 35 regions and 106 zones
├─ Strongest in: Asia Pacific, data centers
├─ Growing in: Europe, enterprise
└─ Excellent network performance

Industry Focus:

AWS:
+ Startups and unicorns (Netflix, Airbnb)
+ E-commerce and retail
+ Media and entertainment
+ Financial services

Azure:
+ Enterprise and Fortune 500
+ Government and public sector
+ Healthcare and manufacturing
+ Traditional IT organizations

GCP:
+ Tech companies and startups
+ Data analytics companies
+ AI/ML research organizations
+ Gaming and media companies

Choosing Your Cloud Provider

Decision Framework:

Start with these questions:

1. "What's our primary use case?"
├─ General purpose → AWS
├─ Microsoft integration → Azure
├─ Data/AI focus → GCP
└─ Cost optimization → Compare all three

2. "What's our team's experience?"
├─ AWS certified → AWS
├─ Microsoft background → Azure
├─ Google/open source → GCP
└─ No preference → Start with free tiers

3. "What's our compliance needs?"
├─ Government → Azure or AWS GovCloud
├─ Healthcare → All three (check specific certs)
├─ Financial → AWS or Azure
└─ General → Any provider

4. "What's our budget?"
├─ Startup → GCP (best discounts)
├─ Enterprise → Azure (volume discounts)
├─ Variable workload → AWS (most options)
└─ Predictable → Compare reserved instances

Multi-Cloud Strategy:

Smart Multi-Cloud Approach:

Primary Cloud (70% of workloads):
├─ Choose based on team expertise
├─ Focus on this for deep knowledge
└─ Get volume discounts

Secondary Cloud (20% of workloads):
├─ For specific use cases
├─ Disaster recovery
└─ Avoid vendor lock-in

Third Cloud (10% of workloads):
├─ Experimental workloads
├─ Special requirements
└─ Future options

Getting Started: Free Tiers

All Three Offer Free Tiers:

AWS Free Tier:
├─ 12 months free for new accounts
├─ 750 hours/month of t2.micro EC2
├─ 5GB S3 storage
├─ Some services always free
└─ Credit card required

Azure Free Tier:
├─ 12 months free for new accounts
├─ $200 credit for first 30 days
├─ B1S virtual machine (750 hours)
├─ Some services always free
└─ Credit card required

GCP Free Tier:
├─ $300 credit for new accounts (90 days)
├─ Always free tier (limited usage)
├─ f1-micro instance (1 per region)
├─ 5GB Cloud Storage
└─ Credit card required for verification

Recommendation for Learning:

# Try all three with the same application!

# 1. Start with GCP (most generous credits)
gcloud container clusters create learning-cluster
kubectl apply -f your-app.yaml

# 2. Try Azure (free control plane)
az aks create --name learning-cluster
kubectl apply -f your-app.yaml

# 3. Test AWS (largest ecosystem)
eksctl create cluster --name learning-cluster
kubectl apply -f your-app.yaml

# Compare experiences and costs!

2024 Cloud Provider Comparison

Head-to-Head Comparison for DevOps Teams:

Container Services Maturity (2024):

┌─────────────────┬──────────┬───────────┬─────────────┐
│ Feature         │    AWS   │   Azure   │     GCP     │
├─────────────────┼──────────┼───────────┼─────────────┤
│ Kubernetes      │ EKS (★★★)│ AKS (★★★★)│ GKE (★★★★★) │
│ Serverless      │ Lambda   │ Functions │ Cloud Run   │
│ Container Reg.  │ ECR      │ ACR       │ Artifact R. │
│ Cost-Effective  │ ★★★      │ ★★★★      │ ★★★         │
│ Enterprise      │ ★★★★★    │ ★★★★★     │ ★★★         │
│ Innovation      │ ★★★★     │ ★★★       │ ★★★★★       │
└─────────────────┴──────────┴───────────┴─────────────┘

Choosing Your Cloud in 2024:

Choose AWS if:
├─ You need the largest service ecosystem
├─ You're building complex, multi-service architectures
├─ You have AWS expertise on the team
├─ You need maximum flexibility and control
└─ You're okay with higher complexity/cost

Choose Azure if:
├─ You use Microsoft technologies (.NET, Office 365)
├─ You need strong hybrid cloud capabilities
├─ You want enterprise-grade security by default
├─ You prefer integrated development tools (Azure DevOps)
└─ You want competitive pricing with good features

Choose GCP if:
├─ You're building AI/ML-heavy applications
├─ You need the best Kubernetes experience
├─ You prioritize developer experience and simplicity
├─ You're working with big data and analytics
└─ You want cutting-edge cloud-native services

Multi-Cloud Reality Check:

2024 Enterprise Trends:

84% of enterprises use multiple clouds
├─ Average: 2.6 different cloud providers
├─ Primary reasons: Avoid vendor lock-in, best-of-breed
├─ Challenges: Complexity, skills, networking costs
└─ Tools helping: Kubernetes, Terraform, service mesh

Note

Your Container Skills Work Everywhere!

The same Docker images and Kubernetes YAML files work on all three clouds:

  • Same kubectl commands

  • Same container concepts

  • Portable CI/CD pipelines

  • Cloud-agnostic monitoring tools

Pro Tip: Start with one cloud, master the fundamentals, then expand to multi-cloud as your needs grow. Don’t optimize for “what-if” scenarios early on. - Same monitoring approaches - Same CI/CD patterns

Focus on learning cloud-specific services (networking, storage, databases) rather than relearning containers!