はじめに
この記事はソフトウェアアーキテクチャの基礎を勉強したシリーズの第3弾となります。
初回の基礎知識編はこちら
今回はパイプラインアーキテクチャです
トポロジー
パイプとフィルターという要素から構成される
一方通行であり、一般的にはP2P方式で行われる

パイプ
フィルター間の通信チャネルを形成する
一方通行かるP2Pであり、パイプを通ればデータ形式を問わないが、パフォーマンスの観点からデータ量が少ないことが好まれる
フィルター
他のフィルターとは独立しておりステートレスな要素
フィルターのタスクは1つだけであり、複数のタスクは単一フィルターではなく、一連のフィルターによって処理される
以下、4種類のフィルターが存在する
プロデューサー
処理の開始点で出力のみ。ソースとも呼ばれる
トランスフォーマー
入力データの一部または全体を変換を行いパイプに出力する
mapと捉えることができる
テスター
入力データを1つ以上の基準で検査して、オプションで検査に基づく出力を生成する
コンシューマー
パイプラインフローの最終点
最終結果をデータベースに永続化したり、ユーザーインターフェースに表示したりする
事例
EDIやETLで使用される
データを受け渡して所定の形式に変換するようなアプリケーションが多そう
AWSのStepFunctionは若干違う??
アーキテクチャの評価
- ロジックをフィルターによって分割しているため「技術」による分割である
- フィルターを変更すれば機能変更(他のフィルターに影響しない)ができるだめモジュール性が高く、シンプルである
- 各フィルターが独立しているため、並列処理の導入が難しい
- モノリスであるため、デプロイ容易性やスケーラビリティが欠点である
| アーキテクチャ特性 | 評価 |
|---|---|
| 分割タイプ | 技術 |
| 量子数 | 1 |
| デプロイ容易性 | ★★ |
| 弾力性 | ★ |
| 進化性 | ★★★ |
| 対障害性 | ★ |
| モジュール性 | ★★★ |
| 全体的なコスト | ★★★★★ |
| パフォーマンス | ★★ |
| 信頼性 | ★★★ |
| スケーラビリティ | ★ |
| シンプルさ | ★★★★★ |
| テスト容易性 | ★★★ |
※★が多いほど評価が高い
自分なりの説明
工場のラインに近いイメージ
車のラインとかだと
- 外枠が運ばれる
- ネジを閉める
- 窓をいれる
- エンジンを設置する
みたいに流れ作業を通して車ができあがる。
ネジを閉める部分の工程(ロジック)が変化しても、後工程には影響を与えない