水平スケーリングはアプリケーションの新しいインスタンス(例えば、新しいサーバーやコンテナ)を追加し、負荷をそれらの間に分散させることを意味します。垂直スケーリングは、1台のサーバーのリソースを増加させること(CPU、RAM、ディスクの追加)を指します。
アプローチを選択する際には、以下の基準を考慮します:
Kubernetesを介した水平スケーリングの例:
apiVersion: apps/v1 kind: Deployment metadata: name: my-app spec: replicas: 5 # ポッド数 - 水平スケーリング selector: matchLabels: app: my-app template: metadata: labels: app: my-app spec: containers: - name: my-app image: myimage:v1
主な特徴:
水平スケーリングは常に垂直スケーリングより優れているのですか?
いいえ。特定のタスク(例えば、モノリシックアプリケーションやstatefulサービス)のために、垂直スケーリングがより簡単で効果的な場合があります。
水平スケーリングではアプリケーションに変更は必要ありませんか?
いいえ。アプリケーションはstatelessである必要があり、セッション共有をサポートし(例えば、外部キャッシュを使用)、スケーリングに適切に対応する必要があります。
データベースのスケーリングは常に水平に行われますか?
いいえ。すべてのDBMSが水平に簡単にスケーリングできるわけではありません。従来のリレーショナルデータベースは、しばしば垂直スケーリング(スケールアップ)されるか、シャーディング/レプリケーションを使用します。