0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

ソフトウェアアーキテクチャパターンを解説

Posted at

現代のソフトウェア開発では、次のような複数のアーキテクチャパターンがあります!

  • レイヤードアーキテクチャ
  • パイプラインアーキテクチャ
  • サービスベースアーキテクチャ
  • イベント駆動アーキテクチャ
  • スペースベースアーキテクチャ
  • マイクロサービスアーキテクチャ

本記事では、これらの概要と特徴、メリット・デメリットを全部まとめて解説!


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

【概要】
機能を「層(Layer)」に分け、上から下へ順第に出入力する構成。

【代表例】

  • Webアプリ(表示層、ロジック層、データアクセス層)

【メリット】

  • 分識がわかりやすい
  • 各層で他層に影響させず変更可

【デメリット】

  • 層を越える速度が遅い(インピーダンス)
  • スパゲッティ化しやすい

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

【概要】
変換・加工をならべて続けていく「パイプ」の系列。次々にデータを滑らせて出力する。

【代表例】

  • ビデオプロセシング
  • ストリーミングAPI

【メリット】

  • 課題を次々に分割できる
  • リトライム性が高い

【デメリット】

  • この流れから外れる変更に弱い
  • データ互換性テストが必要

3. サービスベースアーキテクチャ

【概要】
機能単位(サービス)ごとに分離してシステムを組み立てる構成。

【代表例】

  • SOA(Service Oriented Architecture)

【メリット】

  • 内部構造の自由度が高い
  • 内部をすり替えやすい

【デメリット】

  • サービス管理は複雑
  • 接続経路の偵索が困難

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

【概要】
「イベント(Event)」に対してシステムが反応し、非同期に動く。

【代表例】

  • Kafka、SQS + Lambda連携

【メリット】

  • ルーズ性が高い
  • 非同期処理でスケーラブに強い

【デメリット】

  • デバッグが難しい
  • 独特の設計思考が必要

5. スペースベースアーキテクチャ

【概要】
複数のインスタンスが一緒に悪い方向に働かないよう、キャッシュを中心にスケーラブにする構成。

【代表例】

  • In-Memory Data Grid(IMDG)
  • Hazelcast

【メリット】

  • スケール性高
  • 隔離障害に強い

【デメリット】

  • キャッシュ管理が複雑
  • 実装コストが高い

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

【概要】
最小単位のサービスを自立させ、各自独で開発、配置、スケールできる。

【代表例】

  • Amazon、Netflix

【メリット】

  • 自立性高い
  • スケール性が最高レベル

【デメリット】

  • 管理コストが最大
  • ネットワークオーバーヘッドが必要

【まとめ】

同じ「ソフトウェアの構築」でも、

  • プロジェクトのスケール
  • 開発チームの性質
  • ユースケースの要件

によって適切なパターンは違います。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?