【アーキテクチャ アンチパターン】Autogenerated Stovepipe

Autogenerated
  • 自動生成された
Stovepipe
  • ストーブの煙突.
  • その場しのぎのアーキテクチャで構成されたソフトウェアシステムを表す.
  • こういったシステムは往々にして保守しにくい.

したがって autogenerated stovepipeとは, その場しのぎで次々に生成される保守しにくいソフトウェアシステムのことを指す(と思われる)

どんな問題?

このアンチパターンは,既存のソフトウェアシステムを分散システムに移植するときに発生する. 移植の際には,既存ソフトウェアのインターフェースを分散システムのインターフェースに変換する. その際に,既存のインターフェースと同じインターフェースを使うとすると,多くの問題が発生してしまう.

例えば,既存インターフェースでは情報を送るための細かい粒度の操作を行っている場合, 分散環境ではやりとりの回数が多くなり,非効率的になってしまう.

既存のインターフェースは,そのときどきの実装に特化しており, 大規模分散システムに適用すると,サブシステムの相互依存を引き起こしてしまう. なぜかというと,ローカルなアドレス空間ファイルシステムにアクセスすることを,ローカルな操作は仮定しており, 大規模分散システムにこれらの既存インターフェースをそのまま流用すると,複雑になりすぎてしまう.

どう解決する?

既存ソフトウェアを分散環境に適用する際のインターフェースを設計する際には,インターフェースを再設計しなければならない. 細粒度ではなく,粗粒度のオブジェクトモデルが分散環境でのインターフェースには必要なはずである. つまり,サブシステムに特化した細粒度の設計から,アーキテクチャレベルの設計をいったん分離して考えて,複雑性を回避する方針をとる.

新たなインタフェースの設計の際には,複数のサブシステムに使われる機能の操作性を最も重視すべきである. 特定のサブシステムに依存しないような設計を,アーキテクチャを設計する過程で目指す. 分散環境でコンパイルされる各ソフトウェアが新しいインターフェース設計に依存することになるので,そのインターフェースの安定性というものが非常に重要になってくる.

概略スライド