【41】ダイアグラムの空白に注意せよ

マイケル・ナイガード

 システムは、相互依存するプログラムから構成されています。プログラムの関係と配置をアーキテクチャーと呼びます。システムのダイアグラムを描くときには、個々のプログラムやサーバーを小さなボックスで表し、矢印で結びます。

 1 つの小さな矢印が、たとえば「HTTP 上の SOAP-XML を使った同期的な要求 / 応答」を意味します。1 つの記号が表す情報としてはかなり多いと言えるでしょう。普通は全部を書くことはとてもできないので、開発部内向けに「HTTP 上の XML」と書いたり、外部向けに「SKU 照合」と書いたりします。

 矢印が結ぶプログラムは直接つながっているかのように見えますが、実際はそうではありません。ボックスの間の空白は、実際にはプリント基板と同じで、さまざまなハードウェア / ソフトウェア・コンポーネントによって埋められています。この「基板」には、次のようなものが含まれています。

 プログラム A と B の間には、いつも 4、5 台のコンピューターが介在しており、それぞれがパケット交換、トラフィック分析、ルーティング、脅成分析などのソフトウェアを実行しています。プログラムに橋を架けていくアーキテクトとして、あなたはこれらの「基板」に注意する必要があります。

 たとえば、私が見た矢印の中に、「履行」というラベルのついたものがありました。矢印が結ぶ片方のサーバーは私の顧客企業の中にあり、もう片方のサーバーは別の企業の中にありました。この矢印は顧客企業にとっては決定的に重要な意味を持っていましたが、単一のインターフェイスというよりも、ピタゴラスイッチのような連続的な操作でした。メッセージはメッセージブローカーに送られ、そこでファイルにダンプ出力されます。ファイルは、定期的にピックアップされて FTP で送られます。この単一の「インターフェイス」には、20 以上のステップが含まれていたのです。

 矢印が表す静的 / 動的負荷を理解することはとても大切です。矢印には「HTTP 上の SOAP-XML」と素っ気なく書かれていても、「1 個の HTTP リクエストで 1 つの問い合わせを送ると、1 個の HTTP レスポンスで 1 つの応答が返される。1 秒に送れる要求は 100 個までで、99.999% までは 250m 秒以内に応答が返される」というところまで読み込まなければなりません。

 矢印については、他にも知っておかなければならないことがあります。

 これらの問いに答えることこそが、「基板」を意識した設計のエッセンスです。