Welcome to Tech Athletes | テック・アスリート   Click to listen highlighted text! Welcome to Tech Athletes | テック・アスリート

【2026年最新】AWS・GCP・Azure徹底比較+Terraform/Kubernetes実践ガイド|クラウドエンジニア必読

AWS・GCP・Azure 3大クラウドの特徴比較

クラウドサービスを選ぶ際、AWS・Google Cloud(GCP)・Microsoft Azureの3社が市場の8割以上を占めています。それぞれに強みがあり、用途や既存環境によって最適な選択が異なります。2026年最新データを元に詳しく比較します。

項目AWSGoogle CloudMicrosoft Azure
市場シェア31%(1位)11%(3位)25%(2位)
強みサービス数が最多、成熟度高いAI/ML、データ分析、KubernetesMicrosoftエコシステムとの統合
弱み料金体系が複雑、コスト高めサポートが弱いオープンソース対応が遅い
AI/MLサービスSageMaker、BedrockVertex AI、BigQuery MLAzure OpenAI Service
無料枠12ヶ月無料+永続無料枠3ヶ月$300クレジット12ヶ月無料+$200クレジット

AWS入門:EC2・S3・RDSの基本を理解する

EC2でWebサーバーを立ち上げる最短手順

# AWS CLIのインストールと設定
pip install awscli
aws configure
# AWS Access Key ID: [アクセスキーを入力]
# AWS Secret Access Key: [シークレットキーを入力]
# Default region name: ap-northeast-1 (東京)
# Default output format: json

# EC2インスタンスの起動(Amazon Linux 2023)
aws ec2 run-instances   --image-id ami-0c3fd0f5d33134a76   --count 1   --instance-type t3.micro   --key-name my-key-pair   --security-groups my-security-group   --tag-specifications 'ResourceType=instance,Tags=[{Key=Name,Value=WebServer}]'

# インスタンスのIPアドレスを確認
aws ec2 describe-instances   --filters "Name=tag:Name,Values=WebServer"   --query 'Reservations[*].Instances[*].PublicIpAddress'   --output text

S3でWebサイトをホスティングする

# S3バケットの作成
aws s3 mb s3://tech-athletes-website --region ap-northeast-1

# 静的Webサイトのホスティングを有効化
aws s3 website s3://tech-athletes-website   --index-document index.html   --error-document error.html

# ファイルのアップロード(ビルド済みのReactアプリ等)
aws s3 sync ./build/ s3://tech-athletes-website   --delete   --cache-control "max-age=31536000"   --exclude "*.html"   --include "*.js"   --include "*.css"

# HTMLファイルはキャッシュなし
aws s3 sync ./build/ s3://tech-athletes-website   --delete   --cache-control "no-cache"   --exclude "*"   --include "*.html"

Terraformでインフラをコード化する(IaC入門)

Infrastructure as Code(IaC)は、サーバー構成をコードで管理する手法です。Terraformを使えばAWS・GCP・Azureをまとめて管理できます。

# main.tf - AWSでWebアプリのインフラを構築

terraform {
  required_providers {
    aws = {
      source  = "hashicorp/aws"
      version = "~> 5.0"
    }
  }
}

provider "aws" {
  region = "ap-northeast-1"
}

# VPCの作成
resource "aws_vpc" "main" {
  cidr_block           = "10.0.0.0/16"
  enable_dns_hostnames = true
  enable_dns_support   = true
  
  tags = {
    Name        = "tech-athletes-vpc"
    Environment = "production"
  }
}

# パブリックサブネット
resource "aws_subnet" "public" {
  count             = 2
  vpc_id            = aws_vpc.main.id
  cidr_block        = "10.0.${count.index + 1}.0/24"
  availability_zone = data.aws_availability_zones.available.names[count.index]
  
  map_public_ip_on_launch = true
  
  tags = {
    Name = "tech-athletes-public-subnet-${count.index + 1}"
  }
}

# Application Load Balancer
resource "aws_lb" "main" {
  name               = "tech-athletes-alb"
  internal           = false
  load_balancer_type = "application"
  subnets            = aws_subnet.public[*].id
  
  tags = {
    Name = "tech-athletes-alb"
  }
}

# ECSクラスター(コンテナ実行環境)
resource "aws_ecs_cluster" "main" {
  name = "tech-athletes-cluster"
  
  setting {
    name  = "containerInsights"
    value = "enabled"
  }
}

# RDS(MySQL)
resource "aws_db_instance" "main" {
  identifier        = "tech-athletes-db"
  engine            = "mysql"
  engine_version    = "8.0"
  instance_class    = "db.t3.micro"
  allocated_storage = 20
  
  db_name  = "techathletes"
  username = "admin"
  password = var.db_password  # 変数で管理(コードに直書きしない)
  
  skip_final_snapshot = true
  
  tags = {
    Name = "tech-athletes-db"
  }
}

DockerとKubernetesでコンテナ運用を自動化

# Kubernetes Deployment(k8s/deployment.yaml)
apiVersion: apps/v1
kind: Deployment
metadata:
  name: tech-athletes-api
  labels:
    app: tech-athletes-api
spec:
  replicas: 3  # 3つのポッドで冗長化
  selector:
    matchLabels:
      app: tech-athletes-api
  template:
    metadata:
      labels:
        app: tech-athletes-api
    spec:
      containers:
      - name: api
        image: 123456789.dkr.ecr.ap-northeast-1.amazonaws.com/tech-athletes-api:latest
        ports:
        - containerPort: 8000
        env:
        - name: DATABASE_URL
          valueFrom:
            secretKeyRef:
              name: app-secrets
              key: database-url
        resources:
          requests:
            memory: "256Mi"
            cpu: "250m"
          limits:
            memory: "512Mi"
            cpu: "500m"
        livenessProbe:
          httpGet:
            path: /health
            port: 8000
          initialDelaySeconds: 30
          periodSeconds: 10
---
apiVersion: v1
kind: Service
metadata:
  name: tech-athletes-api-service
spec:
  selector:
    app: tech-athletes-api
  ports:
  - protocol: TCP
    port: 80
    targetPort: 8000
  type: LoadBalancer

クラウドコスト最適化:無駄なAWS費用を削減する

クラウドのコスト管理は開発者にとっても重要なスキルです。よくある無駄なコストと削減方法を紹介します:

  • 未使用のEC2・RDSインスタンス:定期的にAWS Cost Explorerで確認。使っていないリソースは即削除または停止
  • リザーブドインスタンスの活用:1年以上使うリソースはReserved Instancesで最大72%割引
  • S3のライフサイクルポリシー:アクセス頻度が低いデータをS3 Glacierに自動移行(コスト80%削減)
  • Savings Plans:コンピューティング使用量をコミットすることで最大66%割引
  • Lambda・Fargate活用:常時起動のサーバーをサーバーレスに移行してアイドルコストゼロ

まとめ:クラウドエンジニアへのキャリアパス

クラウドエンジニアは2026年も引き続き需要が高く、AWS認定ソリューションアーキテクトなどの資格を持つと年収800〜1200万円も現実的です。学習ロードマップを紹介します:

  1. Linux基礎とネットワーク知識の習得(TCP/IP・DNS・HTTP)
  2. Dockerでコンテナの概念を理解
  3. AWS CLFまたはAWS SAA認定を取得
  4. TerraformでIaCを習得
  5. Kubernetes(CKA/CKAD)でコンテナオーケストレーションをマスター
  6. CI/CD(GitHub Actions・ArgoCD)でDevOpsを実践

投稿者 kasata

IT企業でエンジニアとして勤務後、テクノロジー情報メディア「Tech Athletes(テック・アスリート)」を運営。プログラミング、クラウドインフラ(AWS/GCP/Azure)、AI活用、Webサービス開発を専門とする。エンジニア・ビジネスパーソン向けに、実際に使ってみた経験をもとに信頼できる技術情報を発信中。資格:AWS認定ソリューションアーキテクト、Python 3 エンジニア認定試験合格。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

Click to listen highlighted text!