Open3

日本の開発者、まだClean Architectureで消耗しているの?

Gunther BrunnerGunther Brunner

Clean Architecture vs. Vertical Slices Architectureの比較

クリーンアーキテクチャ

  • 構造
    • 厳密に区分されたレイヤー
  • 依存関係のルール
    • 内側のレイヤーは外側のレイヤーに依存しない
  • メリット
    • テスト容易性
    • 長期的なメンテナンスのしやすさ
  • デメリット
    • 初期の設計と実装に時間がかかる
    • モノリス構成になりやすい
    • Too Muchな抽象化
Gunther BrunnerGunther Brunner

ヴァーティカルスライス + CQRS

  • 構造
    • 機能ごとに分離されたモジュール
  • CQRS
    • コマンド(書き込み)とクエリ(読み込み)の責任を分離
    • CRUDとVertical Slicesと相性が良い
  • メリット
    • 開発速度の向上
    • 技術選択の柔軟性
    • パフォーマンスとセキュリティの最適化
    • ビジネス要件の実態に沿った機能追加
    • 機能が一箇所にまとまり、把握しやすい
    • マイクロサービス化しやすい
  • デメリット
    • 全体の一貫性を保つための追加設計が必要
Gunther BrunnerGunther Brunner

アーキテクチャ選定ポイント

  • クリーンアーキテクチャ
    • 長期的なプロジェクトやメンテナンスが重要な場合に適している
  • ヴァーティカルスライス + CQRS
    • 迅速な開発と技術の柔軟性を重視する場合、パフォーマンスやセキュリティが要求されるプロジェクトに向いている

必要に応じてVertical Sliceの中にClean Architectureを組み込むことも可能。
Vertical Slicesは実用主義、アジャイル、ビジネス要望により近いアプローチに重点を置いている。