テックキャンプ卒の弱々エンジニア日記

エンジニアとして働く中での学びをちょっとでも記録していきます。

パイプラインアーキテクチャ (ソフトウェアアーキテクチャの基礎11章)

こんにちは、Tochiです。

前回に引き続き、パイプラインアーキテクチャについてまとめていきます!

11章 パイプラインアーキテクチャ

パイプラインアーキテクチャは「パイプとフィルター」アーキテクチャとして知られている。 Unizターミナルシェル言語の背後にある基本原則がこのアーキテクチャに親しんでいる。

ちなみにこちらもおすすめ www.ohmsha.co.jp

パイプラインアーキテクチャトポロジーはパイプとフィルターから構成される。

パイプはフィルター間の通信チャネルを形成する。 一方向かつポイントツーポイントとなっており、あるソースからの入力を他のソースに出力する。

フィルターはぞこ完結型で他のフィルターからは独立している。 フィルターは4種類に分けられる。

  • プロデューサー: 処理の開始点。ソース
  • トランスフォーマー: 変換器。入力をうけて変換を行い出力パイプに送る
  • テスター: 入力を受け1つ以上の基準について検査。
  • コンシューマー: パイプラインフローの終了点

これらを用いたパイプラインアーキテクチャは、シンプルな一方向の処理を進めるタスクで用いられる。 例えばEDIツールは、このパイプとフィルターを使って、あるドキュメントタイプから別のドキュメントタイプへの変換を構築する。 そういう意味でアプリケーションロジックをフィルターで分割しているという意味では技術によって分割されたアーキテクチャといえる。(アーキテクチャ量子は1つになる)

このアーキテクチャは、モジュール性と組み合わさったシンプルさと、全大的なコストが強み。 モノリシックゆえの、複雑さがなくシンプルで理解しやすい。維持・構築のコストも比較的低い。 また、他のフィルターに影響を与えることなく、変更や置き換えが可能。

ただし、レイヤードアーキテクチャと同じで弾力性やスケーラビリティはかなり低い。 (この理由はレイヤードアーキテクチャと全く同じ)

まとめ

正直このへんはパイプラインアーキテクチャとして勉強するより、UNIXの考え方や思想を学んだ方が理解がしやすいと感じた。