0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

ソフトウェアアーキテクチャの基礎 【パイプラインアーキテクチャ編】

Posted at

はじめに

この記事はソフトウェアアーキテクチャの基礎を勉強したシリーズの第3弾となります。
初回の基礎知識編はこちら

今回はパイプラインアーキテクチャです

トポロジー

パイプとフィルターという要素から構成される
一方通行であり、一般的にはP2P方式で行われる
image.png

パイプ

フィルター間の通信チャネルを形成する
一方通行かるP2Pであり、パイプを通ればデータ形式を問わないが、パフォーマンスの観点からデータ量が少ないことが好まれる

フィルター

他のフィルターとは独立しておりステートレスな要素
フィルターのタスクは1つだけであり、複数のタスクは単一フィルターではなく、一連のフィルターによって処理される
以下、4種類のフィルターが存在する

プロデューサー

処理の開始点で出力のみ。ソースとも呼ばれる

トランスフォーマー

入力データの一部または全体を変換を行いパイプに出力する
mapと捉えることができる

テスター

入力データを1つ以上の基準で検査して、オプションで検査に基づく出力を生成する

コンシューマー

パイプラインフローの最終点
最終結果をデータベースに永続化したり、ユーザーインターフェースに表示したりする

事例

EDIETLで使用される
データを受け渡して所定の形式に変換するようなアプリケーションが多そう
AWSのStepFunctionは若干違う??

アーキテクチャの評価

  • ロジックをフィルターによって分割しているため「技術」による分割である
  • フィルターを変更すれば機能変更(他のフィルターに影響しない)ができるだめモジュール性が高く、シンプルである
  • 各フィルターが独立しているため、並列処理の導入が難しい
  • モノリスであるため、デプロイ容易性やスケーラビリティが欠点である
アーキテクチャ特性 評価
分割タイプ 技術
量子数 1
デプロイ容易性 ★★
弾力性
進化性 ★★★
対障害性
モジュール性 ★★★
全体的なコスト ★★★★★
パフォーマンス ★★
信頼性 ★★★
スケーラビリティ
シンプルさ ★★★★★
テスト容易性 ★★★

※★が多いほど評価が高い

自分なりの説明

工場のラインに近いイメージ
車のラインとかだと

  1. 外枠が運ばれる
  2. ネジを閉める
  3. 窓をいれる
  4. エンジンを設置する

みたいに流れ作業を通して車ができあがる。
ネジを閉める部分の工程(ロジック)が変化しても、後工程には影響を与えない

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?