13章スケーリング

「もっと大きな船が必要だ」

−Chief Brody、『ジョーズ』

システムをスケールさせる際、それを行う理由は次の2つのいずれかです。第一に、おそらく、より多くの負荷を処理できるようにしたり、遅延を改善したりすることで、システムのパフォーマンスを向上できます。第二に、堅牢性を向上させるために、システムをスケーリングします。本章では、各種のスケーリングを表すモデルを紹介し、マイクロサービスアーキテクチャを使って、各種のスケーリングを実装する方法を詳しく取り上げます。本章を最後まで読めば、発生し得るスケーリング問題に対応するための、数多くのテクニックを得られるはずです。

まず、あなたが適用したいであろう各種のスケーリングについて、見てみましょう。

13.1 スケーリングの4つの軸

システムをスケールさせる正しい方法は、1つではありません。使用するテクニックは、あなたが持つ制約の種類に左右されるからです。パフォーマンス、堅牢性、またはおそらくその両方を向上させるために、各種のスケーリングを行うことができます。各種のスケーリングを説明するために、私がよく使うモデルは、The Art of Scalability†1のスケールキューブです。このモデルでは、コンピュータシステムの状況で、スケーリングを3つのカテゴリ(機能分解、水平複製、データのパーティション分割)に分類します。このモデルの価値は、ニーズに応じて、これらの軸の1つ、2つ、または3つすべてに沿ってシステムをスケーリングできることを、理解できるようになることです。しかし、特に仮想化インフラの世界では、このモデルには垂直スケーリングという4つ目の軸が欠けていると、常々感じていました。しかし、4つ目の軸があると、キューブ(立方体)ではなくなってしまうという、やや残念な特性があります。とはいえ、マイクロサービスアーキテクチャをどのようにスケールさせるのが最適かを判断できる、便利なメカニズムだと思います。これらの種類の相対的な利点、欠点を詳しく調べる前に、簡単にまとめておきます。 ...

Get マイクロサービスアーキテクチャ 第2版 now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.