パイプラインのメリット・デメリット【アーキテクチャ用語集】
Sal
inhouse_se 関数型プログラミング言語の考え方を拡張子かのようなアーキテクチャ。bashやpowershellなどのosの言語に近い構造を持つ。プログラミング言語は低いレイヤーの話であるが、今回のアーキテクチャはより高次元である。

パイプラインのメリット・デメリット【アーキテクチャ用語集】

  1. パイプラインアーキテクチャとは
  2. 概要
  3. 詳細
  4. メリット
  5. デメリット
  6. 備考
## パイプラインアーキテクチャとは
関数型プログラミング言語の考え方を拡張子かのようなアーキテクチャ bashやpowershellなどのosの言語に近い構造を持つ。 プログラミング言語は低いレイヤーの話であるが、今回のアーキテクチャはより高次元である。
## 概要
パイプラインアーキテクチャには以下の用語が出てくる - フィルター - パイプ パイプはフィルター間の通信チャネルである。 このパイプは1方向かつP2Pの仕組みであり、あるソースからの入力を別のソースに渡す。 フィルターは他のフィルターから独立しており、ステートレスな要素である。 前のフィルターからパイプを通して送られてくるデータを変形し、新たなパイプを通して次のフィルターへ明け渡す。 これを繰り返すことでデータの変更を行うシステムが、「パイプラインアーキテクチャ」である
## 詳細
フィルターには次の4種類が存在する - プロデューサー 処理の出発点 - トランスフォーマー(map) 入力を受け、データの変換を行う 関数型プログラミング言語ではmapとも呼ぶ - テスター(reduce) 入力を受け付けた時にデータについて精査し、オプションで検査に基づく出力を生成する。 関数型プログラミング言語ではreduceとも呼ぶ - コンシューマー パイプラインの終着点 データベースへの永続化、UIへの保存などが求められる。
## メリット
パイプとフィルターのそれぞれの一方向性とシンプルさは構成の再利用性を極限まで高める。 例えば、EDIツール(電子データ交換ツール)。 CSVでブラウザ越しにわたした商用データをパイプライン内部での変換を繰り返してコンシューマ(データベースの永続か)を実施している。 もしかしたらログ管理ツールなどにも使われているのかもしれない。 このように**一方向でステートレス**なシステムでは構成の再利用性を高めたとても強力なパターンである。 モジュール性と組み合わさったシンプルさと全体的なコストはパイプラインアーキテクチャの主な強みだ。
## デメリット
このアーキテクチャはモノリスである。(分散されたシステムではない) したがって、デプロイの儀式、リスク、デプロイの頻度、テストの完全性などはアーキテクチャにとっての影響がある。 加えてスケーラビリティと弾力性は低い。(仮にこれらの要素を上げようとしても、マルチスレッドや内部メッセージングなど このアーキテクチャには適さないタイプの設計技術が必要になる。) 加えてコンポーネントの一部がメモリ不足などでダウンすると全体がクラッシュしてしまうのもこのシステムのデメリットである。
## 備考
title:パイプラインのメリット・デメリット【アーキテクチャ用語集】 description:関数型プログラミング言語の考え方を拡張子かのようなアーキテクチャ。bashやpowershellなどのosの言語に近い構造を持つ。プログラミング言語は低いレイヤーの話であるが、今回のアーキテクチャはより高次元である。 category_script:page_name.startswith("2") img:https://www.sbbit.jp/article/image/60376/OGP_bit202105141422516660.jpg