I/O を端に追いやる
from A Functional Architecture
FP の主な目的は、「内部を見なくても予測可能で理解しやすい関数を扱うこと」
これを実現するには...
可能な限りイミュータブルなデータを扱うこと
関数が明示的な依存関係を持つようにすること
関数の副作用を避けること
e.g. ランダム性、関数外にある変数の置き換え、あらゆる種類の I/O
あらゆる種類の I/O
データベースやファイルシステムの読み書き
コアドメイン ではこのような種類の関数を呼び出すのを避ける
副作用を避けつつ、どうやってデータを読み書きするか
あらゆる I/O を オニオンアーキテクチャ の端に追いやる
https://scrapbox.io/files/6690960a4edb40001c7d7b30.png
データベースのアクセスは、ワークフロー内部ではなく、データフロー開始時または終了時のみ行うようにする
異なる 関心事 を分離する
コアドメインはビジネスロジックだけを対象とし、永続性などの I/O は インフラストラクチャ の関心事
永続性非依存
永続化を端に追いやる