· 

キャパシティ プランニングの難しさからどう逃れるか その1

松田 幸裕 記


システムを構築する際、そのシステムの負荷を予測し、サーバーの台数やスペック等を決定する「キャパシティ プランニング」が行われます。キャパシティ プランニングを経験したことのある人であれば、その難しさはご理解いただけることと思います。

社内での業務効率化のために導入する単体のシステムにおいては、改善すべき業務内容や利用する人、作業ボリュームが固定的であるため、システムにかかる負荷も予測しやすく、比較的キャパシティ プランニングは容易です。しかし、ITの利用範囲の拡大とともに、利用者が不特定多数になるようなシステムも多くなってきています。また、徐々に単体のシステム同士が連携するようになり、当初予測していたもの以外のトランザクションが入り込んでくるようなことも起こるようになりました。さらに、ビジネスの変化も激しくなってきており、ますます負荷の予測が困難になってきています。

2005年前後からSOA(サービス指向アーキテクチャ)が流行りましたが、SOAには非同期でメッセージのやり取りを行う概念が盛り込まれていました。「同期」と「非同期」の概念は人間の作業でいえば「電話」と「メール」に例えることができます。電話(=同期)では受け手が他の電話に対応している時は、その他からの発信は失敗します。発信者は何度も電話をかける必要がありますし、受信者は次から次へと電話がかかってくればバタバタしてパンクしてしまいます。一方メール(=非同期)では、発信者は受信者の状況を意識する必要はなく、メッセージを送ることができます。受信者は自分の空いた時間でメッセージを処理することができるため、余裕を持って作業ができます。
 システム同士が連携するようになってきたタイミングでSOAが出てきたこと、そしてSOAに非同期の概念が盛り込まれていたことは、ある意味自然なことだと思います。
 非同期の概念はSOAの流行以前にも存在しており、私自身もそれ以前に非同期の概念を活用して負荷に強いシステムを作った経験はあるため、珍しいものではありませんでしたが、SOAの流行によって非同期の概念が日本に広まり負荷に強いシステムが増えていくのではないかと期待していました。しかし、日中のRequest-Response処理と夜間のバッチ処理に二極化していた考え方から抜け出すことはできず、日本ではSOAや非同期の概念が根付くには至らなかったと認識しています。

現在では、多くのシステムが連携し、キャパシティ プランニングが非常に難しくなっています。また、顧客向けのWebシステムなどは更に負荷が読めないため、キャパシティ プランニングは難しくなる一方です。
 前述した非同期の概念のみでなく、仮想化やクラウドの活用による柔軟性向上など、キャパシティプランニングの難しさを克服する手段は他にもあります。これらをうまく組み合わせ、最適なキャパシティプランニングを目指していきましょう。