垂直スケーリングとは? 一台のマシンを大きくする
垂直スケーリング、すなわちスケールアップは、単一のマシンにより多くのリソース (CPU、メモリ、ディスク) を与えることで、より多くの負荷を処理します。
より多くの負荷を処理する最も単純な方法は、マシンを大きくすることです。垂直スケーリングはまさにそれを行います。load balancerもステートレス化の書き直しもなく、ただより大きなインスタンスにするだけです。導入が速く、しばしば最初の正しい一手ですが、水平スケーリングが回避する上限と単一障害点に突き当たります。
より大きな箱、同じアーキテクチャ
同じアプリケーションを、より多くのCPU、RAM、あるいは高速なストレージを持つインスタンスに移します。コードを変える必要はなく、多数のインスタンスを調整する複雑さを避けられます。最も抵抗の少ない道です。
選ぶ理由
- 単純さ: 分散も、外部化すべき共有状態もありません。
- リソース制約のボトルネックに対する、しばしば手早い解決策。
- load balancerやセッションの外部化が不要。
- 並列化が難しいワークロードに向いています。
硬い上限
買える最大のマシンがあり、いずれそこに突き当たります。ある点を超えると、リソースを倍にするコストは倍をはるかに超え、単一の大きなマシンは依然として冗長性のない単一障害点です。
CI/CDの観点
垂直スケーリングはデプロイの話を単純に保ちます。一つのartifactを一台のマシンへ、です。ただしスケールアップは通常インスタンスの再起動や置き換えを伴うため、standbyと組み合わせない限りダウンタイムに傾きます。パイプラインはしばしば、より大きなインスタンスへの入れ替えとその戻しを自動化します。
CIのjobをスケールアップする
重いbuild、大きなコンパイル、メモリを大量に使うテストスイートは、スケールアップするjobです。作業を分割するのではなく、そのrunnerにより多くのCPUとRAMを与えます。適切なrunnerサイズを選ぶこと自体が、パイプラインに適用された垂直スケーリングの判断です。
runnerを適切にサイズする
メモリ不足になるbuildは、runnerが何台あろうと失敗します。より大きなものが必要なのです。Latchkeyはより大きなrunnerサイズを提供し、リソース制約のあるjobがパイプラインを再設計せずにスケールアップできるようにします。
重要なポイント
- 垂直スケーリングは、マシンを増やすのではなく、一台のマシンにリソースを追加します。
- 単純ですが、上限に達し、単一障害点のままです。
- CIでは、より大きなrunnerを選ぶことが、buildのjobに適用された垂直スケーリングです。