ソフトウェアアーキテクチャ

ソフトウェアアーキテクチャとは

ソフトウェア / アプリケーション全体の構造についての設計・意思決定。

cf. デザインパターンとは

コードを書く上でよく現れる設計上の問題に対する典型的な解決策。 (より小規模、局所的な概念)

主要な例

アプリケーション構造

  • レイヤードアーキテクチャ
  • MVC / MVP / MVVM
  • ポート&アダプター(ヘキサゴナルアーキテクチャ)
  • オニオンアーキテクチャ
  • クリーンアーキテクチャ
  • パイプ&フィルター

デプロイ / システム分割

  • モノリス
  • マイクロサービス
  • モジュラーモノリス
  • サービス志向アーキテクチャ(SOA)
  • サーバーレス(FaaS)

通信 / データフロー

  • イベント駆動アーキテクチャ(EDA)
  • メッセージキュー / Pub-Sub
  • イベントソーシング
  • コマンド・クエリ責任分離(CQRS)
  • API設計
    • REST
    • GraphQL
    • gRPC

インフラ

  • クライアント - サーバー
  • P2P
  • 分散キャッシュ(スペースベース)