💭

アーキテクチャパターンについて

2023/12/28に公開

はじめに

アーキテクチャパターンについて学んだので、備忘録的な感じで書いていきます。

アーキテクチャとは

アーキテクチャとは、一般的には、システムや構造の設計や構築に関する概念を指します。主に、ソフトウェアアーキテクチャと呼ばれることが多く、これはソフトウェアシステムの構造に関するパターンのことをいいます。
 適切なアーキテクチャを選択することで、システムの拡張性、保守性、性能、セキュリティなどの重要な品質属性を確保し、開発者や保守者が効果的に作業できるようにするために重要な役割を果たします。
以下が具体的にアーキテクチャが含んでいる主な要素です。

  • コンポーネントとモジュール
  • データ構造
  • アーキテクチャパターン
  • 通信プロトコル
  • デプロイメントアーキテクチャ
  • 品質属性

今回はこの中の「アーキテクチャパターン」について書いていきます。

アーキテクチャパターンとは

アーキテクチャパターンとは、ソフトウェアアーキテクチャにおける一般的な問題に対する解決策とされるテンプレートやベストプラクティスの集合になります。
 これらのパターンは、再利用可能で柔軟な設計の原則を提供し、ソフトウェアの保守性、拡張性、性能などの特性を向上させるのに役立ちます。

アーキテクチャパターンの種類

アーキテクチャパターンはたくさん種類がありますが、その中で代表的なものを上げていきます。
※画像は、イメージしやすそうなものを引っ張ってきました。

モノリシックアーキテクチャ:

単一の大規模なアプリケーションで全ての機能が統合されており、
単純な開発とデプロイが可能ですが、保守性や拡張性に課題が発生することがあります。
以下はマイクロサービスアーキテクチャとの比較となる画像です。
image.png

マイクロサービスアーキテクチャ

アプリケーションを小さな独立したサービスに分割します。
各サービスは独自のデータベースやコードベースを持ち、独立してデプロイでき、
スケーラビリティや柔軟性が向上しますが、分散システムの管理が必要です。

image.png

イベント駆動アーキテクチャ

イベントと呼ばれる状態変化をトリガーとして、異なるコンポーネントが非同期で連携します。
ローカルコンポーネント間の結合を緩和し、柔軟性や拡張性を提供します。

image.png

レイヤードアーキテクチャ

システムを機能や責務に基づいて複数の階層(レイヤー)に分割します。
各レイヤーは特定の責務を持ち、階層ごとに抽象化されたAPIを介して通信します。

image.png

パイプラインアーキテクチャ

データ処理やビジネスプロセスを連続的なステップ(パイプライン)に分割します。
各ステップは前のステップの結果を入力として受け取り、出力を生成します。
image.png

まとめ

今回はアーキテクチャパターンについて書きました。
たくさん種類がありますが、プロジェクトの要件や目標に基づき、適切な設計や選択をすることが大切だなと感じました。

Discussion