e コマースのスケーリングのための Kubernetes: トラフィックの急増から世界的な拡大まで

Kubernetes を使用して e コマース プラットフォームを拡張します。自動スケーリング、ポッド管理、イングレス コントローラー、データベース スケーリング、マルチリージョン展開戦略について説明します。

E
ECOSIRE Research and Development Team
|2026年3月16日4 分で読める886 語数|

eコマースのスケーリングのための Kubernetes: トラフィックの急増から世界的な拡大まで

ブラック フライデーのトラフィックが急増すると、e コマースの負荷が数分以内に 10 ~ 50 倍に増加する可能性があります。 従来のサーバー インフラストラクチャでは十分な速度で応答できません。 Kubernetes は、最新の e コマース プラットフォームが閑散期に過剰なプロビジョニングを行わずに予測不可能な需要を処理するために必要な自動スケーリング、自己修復、およびトラフィック管理機能を提供します。

このガイドでは、フラッシュ セールの処理から、場所に関係なく 200 ミリ秒未満で顧客にサービスを提供する複数地域のストアフロントの構築まで、e コマース ワークロードに特化した Kubernetes アーキテクチャについて説明します。

重要なポイント

  • 水平ポッド オートスケーラー (HPA) は、e コマース サービスを 90 秒以内に 2 ポッドから 200 ポッドまで拡張できます
  • レート制限を備えた Ingress コントローラーがトラフィック急増時にバックエンド サービスを保護
  • ステートフル ワークロード (データベース、検索インデックス) には、ステートレス サービスとは異なるスケーリング戦略が必要です
  • マルチリージョンの Kubernetes デプロイメントにより、世界中の顧客ベースのレイテンシが 60 ~ 80% 削減されます

Kubernetes が e コマースに適している場合

Kubernetes が常に正しい答えであるとは限りません。運用が複雑になりますが、これはスケーリング要件によって正当化される必要があります。

意思決定マトリックス

係数Docker Compose は十分Kubernetes の正当化
毎月のご注文<10,00010,000+
同時ユーザー<500500+
サービス数<55+
交通量の変動<3x ピーク3 倍以上のピーク
サービス提供地域シングル複数
チームの規模 (DevOps)0-12+
稼働時間要件99.9%99.95%以上

あなたのビジネスが Docker Compose 列に該当する場合は、代わりに Docker 実稼働デプロイメント ガイド を参照してください。


eコマース向けの Kubernetes アーキテクチャ

クラスターのレイアウト

eCommerce Kubernetes クラスターには通常、次の名前空間が含まれます。

  • storefront: フロントエンド アプリケーション ポッド
  • api: バックエンド API サービス
  • workers: バックグラウンド ジョブ プロセッサ (注文処理、電子メール送信、在庫同期)
  • data: データベース、キャッシュ、検索エンジン (またはマネージド外部サービス)
  • ingress: Ingress コントローラーとロード バランサー
  • monitoring: プロメテウス、グラファナ、アラート

導入構成

# storefront-deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: storefront
  namespace: storefront
spec:
  replicas: 3
  strategy:
    type: RollingUpdate
    rollingUpdate:
      maxSurge: 1
      maxUnavailable: 0
  selector:
    matchLabels:
      app: storefront
  template:
    metadata:
      labels:
        app: storefront
    spec:
      containers:
        - name: storefront
          image: registry.example.com/storefront:v2.1.0
          ports:
            - containerPort: 3000
          resources:
            requests:
              cpu: 250m
              memory: 256Mi
            limits:
              cpu: 1000m
              memory: 512Mi
          readinessProbe:
            httpGet:
              path: /health
              port: 3000
            initialDelaySeconds: 5
            periodSeconds: 10
          livenessProbe:
            httpGet:
              path: /health
              port: 3000
            initialDelaySeconds: 15
            periodSeconds: 20
          env:
            - name: API_URL
              value: "http://api-service.api.svc.cluster.local:3001"
            - name: NODE_ENV
              value: "production"

自動スケーリング構成

水平ポッドオートスケーラー

# storefront-hpa.yaml
apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
  name: storefront-hpa
  namespace: storefront
spec:
  scaleTargetRef:
    apiVersion: apps/v1
    kind: Deployment
    name: storefront
  minReplicas: 3
  maxReplicas: 50
  metrics:
    - type: Resource
      resource:
        name: cpu
        target:
          type: Utilization
          averageUtilization: 60
    - type: Resource
      resource:
        name: memory
        target:
          type: Utilization
          averageUtilization: 70
  behavior:
    scaleUp:
      stabilizationWindowSeconds: 30
      policies:
        - type: Percent
          value: 100
          periodSeconds: 60
    scaleDown:
      stabilizationWindowSeconds: 300
      policies:
        - type: Percent
          value: 10
          periodSeconds: 60

scaleUp ポリシーでは、60 秒ごとにポッドを 2 倍にすることができます。これは、突然のトラフィックの急増に対処するために重要です。 scaleDown ポリシーは、スラッシングを防ぐために保守的 (1 分あたり 10%) です。

クラスター オートスケーラー

HPA はポッドをスケーリングしますが、ポッドにはノードが必要です。クラスター オートスケーラーは、保留中のポッド要求に基づいてノードを追加および削除します。

# cluster-autoscaler configuration
apiVersion: v1
kind: ConfigMap
metadata:
  name: cluster-autoscaler-config
data:
  balance-similar-node-groups: "true"
  skip-nodes-with-local-storage: "false"
  scale-down-delay-after-add: "10m"
  scale-down-unneeded-time: "10m"
  max-node-provision-time: "5m"

AWS EKS の場合、最小/最大サイズを使用してノード グループを構成します。

eksctl create nodegroup \
  --cluster ecommerce-prod \
  --name workers \
  --node-type t3.large \
  --nodes-min 3 \
  --nodes-max 20 \
  --node-volume-size 50 \
  --managed

イングレスとトラフィックの管理

Nginx Ingress コントローラー

# ingress.yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: ecommerce-ingress
  annotations:
    nginx.ingress.kubernetes.io/rate-limit: "100"
    nginx.ingress.kubernetes.io/rate-limit-window: "1m"
    nginx.ingress.kubernetes.io/proxy-body-size: "10m"
    nginx.ingress.kubernetes.io/ssl-redirect: "true"
    nginx.ingress.kubernetes.io/use-regex: "true"
spec:
  tls:
    - hosts:
        - store.example.com
      secretName: store-tls
  rules:
    - host: store.example.com
      http:
        paths:
          - path: /api
            pathType: Prefix
            backend:
              service:
                name: api-service
                port:
                  number: 3001
          - path: /
            pathType: Prefix
            backend:
              service:
                name: storefront-service
                port:
                  number: 3000

フラッシュセールの処理

フラッシュ販売には事前スケーリングが必要です。既知の高トラフィック イベントについては、自動スケーリングのみに依存しないでください。

# Pre-scale 2 hours before a flash sale
kubectl scale deployment storefront --replicas=20 -n storefront
kubectl scale deployment api --replicas=15 -n api
kubectl scale deployment order-worker --replicas=10 -n workers

# After the sale, let HPA scale down naturally

Kubernetes でのデータベースのスケーリング

マネージド データベースとセルフホスト型データベース

アプローチ長所短所
マネージド (RDS、Cloud SQL)自動バックアップ、パッチ適用、フェイルオーバーコストが高く、カスタマイズが制限される
自己ホスト型 (StatefulSet)フルコントロール、低コスト運用上の負担、バックアップの責任

推奨事項: 本番の e コマースには管理されたデータベースを使用します。 Kubernetes で PostgreSQL を実行する場合の運用オーバーヘッドは、ほとんどの企業にとって正当なものではありません。

接続プーリング

# pgbouncer-deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: pgbouncer
  namespace: data
spec:
  replicas: 2
  template:
    spec:
      containers:
        - name: pgbouncer
          image: edoburu/pgbouncer:1.21.0
          ports:
            - containerPort: 5432
          env:
            - name: DATABASE_URL
              valueFrom:
                secretKeyRef:
                  name: db-credentials
                  key: url
            - name: MAX_CLIENT_CONN
              value: "1000"
            - name: DEFAULT_POOL_SIZE
              value: "25"
            - name: POOL_MODE
              value: "transaction"

トランザクション プーリング モードの PgBouncer を使用すると、数百のアプリケーション ポッドがデータベース接続の限られたプールを共有できます。接続プーリングを使用しない場合、API ポッドを 50 個に拡張するには、50 x 20 = 1,000 のデータベース接続が必要となり、ほとんどの PostgreSQL インスタンスを圧倒します。

データベース スケーリング戦略の詳細については、データベース スケーリング ガイド を参照してください。


マルチリージョン展開

アーキテクチャ

マルチリージョン e コマース Kubernetes デプロイメントでは、以下を使用します。

  1. リージョン クラスター: 各リージョンの独立した Kubernetes クラスター
  2. グローバル ロード バランサー: ユーザーを最も近いリージョンにルーティングします (AWS Global Accelerator、Cloudflare)
  3. データベース レプリケーション: 1 つのリージョンにプライマリ、他のリージョンにリードレプリカ
  4. CDN: 世界中のエッジ ロケーションから提供される静的資産

レイテンシの影響

ユーザーの所在地単一リージョン (米国東部)マルチリージョン
ニューヨーク20ミリ秒20ミリ秒
ロンドン120ミリ秒25ミリ秒
シンガポール250ミリ秒30ミリ秒
シドニー300ミリ秒35ミリ秒

マルチリージョン展開により、海外の顧客の待ち時間が 60 ~ 90% 削減され、コンバージョン率が直接的に向上します。研究によると、遅延が 100 ミリ秒短縮されるごとに、e コマース コンバージョンが 1.1% 増加することが示されています。


Kubernetes eコマースの監視

重要なダッシュボード

  1. ビジネス指標: 1 分あたりの注文数、カート コンバージョン率、1 時間あたりの収益
  2. アプリケーション メトリクス: リクエスト レイテンシ (P50、P95、P99)、エラー率、アクティブ セッション
  3. インフラストラクチャ メトリクス: ポッドの CPU/メモリ、ノード使用率、HPA アクティビティ
  4. データベース メトリクス: 接続数、クエリ レイテンシ、レプリケーション ラグ
# prometheus-servicemonitor.yaml
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
  name: api-monitor
  namespace: monitoring
spec:
  selector:
    matchLabels:
      app: api
  endpoints:
    - port: metrics
      interval: 15s
      path: /metrics

よくある質問

Kubernetes のコストは従来のホスティングと比較してどれくらいですか?

Kubernetes インフラストラクチャのコストは、コントロール プレーンのコスト、ロード バランサーの料金、ノードのオーバーヘッドにより、同等のベアメタル インスタンスやシンプルなクラウド インスタンスより 20 ~ 40% 高くなります。ただし、自動スケーリングでは、オフピーク時間のピーク容量に対して料金を支払う必要がないため、通常、総支出が 30 ~ 50% 削減されます。トラフィックが変動するほとんどの e コマース ビジネスにとって、最終的な効果は 10 ~ 25% のコスト削減です。

Kubernetes 上で Odoo を実行できますか?

はい、ただし注意点があります。 Odoo のファイルストアでは、複数のレプリカを実行する場合、共有永続ストレージ (EFS、NFS) が必要です。セッションを Redis に外部化しない限り、セッション アフィニティが必要です。データベース接続は PgBouncer 経由でプールする必要があります。ほとんどの Odoo デプロイメントでは、Docker Compose または ECS がより簡単で十分です。 Kubernetes は、同時ユーザーが 200 名を超える大規模な Odoo デプロイメントに適しています。

ダウンタイムを発生させずに Kubernetes のアップグレードを処理するにはどうすればよいですか?

コントロール プレーンのアップグレードを処理するマネージド Kubernetes サービス (EKS、GKE、AKS) を使用します。ノードのアップグレードの場合は、ローリング戦略を使用します。つまり、ノードを遮断し、そのポッドをドレインし (他のノードに再スケジュールされます)、ノードをアップグレードし、遮断を解除します。ポッド中断予算を適切に設定すれば、これは完全に自動化され、ダウンタイムはゼロになります。

本番環境の e コマースの最小クラスター サイズはどれくらいですか?

中規模の e コマース プラットフォーム用の最小実稼働クラスター: アプリケーション ワークロード用の 3 つのノード (t3.large または同等)、およびマネージド データベース インスタンス。これにより、約 500 人の同時ユーザーを処理でき、ピーク時の自動スケーリングの余地が得られます。インフラストラクチャの総コスト: 月額約 500 ~ 800 ドル。


次に何が起こるか

Kubernetes はスケーリングの基盤を提供しますが、それはインフラストラクチャのパズルの 1 ピースにすぎません。 CI/CD ベスト プラクティスCDN 最適化負荷テスト と組み合わせて、完全な e コマース運用プラットフォームを実現します。

Kubernetes コンサルティングおよび e コマース スケーリング戦略については ECOSIRE にお問い合わせ、Kubernetes でのマネージド ヘッドレス コマースについては Shopify 統合サービス をご覧ください。


ECOSIRE が発行 -- 企業による e コマース インフラストラクチャの世界規模の拡大を支援します。

E

執筆者

ECOSIRE Research and Development Team

ECOSIREでエンタープライズグレードのデジタル製品を開発。Odoo統合、eコマース自動化、AI搭載ビジネスソリューションに関するインサイトを共有しています。

WhatsAppでチャット