アーキテクチャパターン一覧
Sal
inhouse_se アーキテクトを学ぶ意義の理解。特に、アーキテクトスタイル(アーキテクチャパターン)のことについて。アーキテクトスタイルとは、さまざまなアーキテクチャ特性をカバーする、コンポーネント同士の名付けられた関係を説明するもの。

アーキテクチャパターン一覧

  1. 何を学べるのか
  2. アーキテクチャスタイルを覚える意味
  3. 基本的なアーキテクトスタイル一覧
  4. 見習うべきではないスタイル:巨大な泥団子
  5. 最初のアーキテクチャ:ユニタリーアーキテクチャ
  6. クライアント/サーバー型
  7. # デスクトップ+データベース
  8. # ブラウザ+webサーバー
  9. モノシリックアーキテクチャと分散アーキテクチャのメリットデメリット
  10. まとめ
  11. 備考
## 何を学べるのか
アーキテクトを学ぶ意義の理解 特に、アーキテクトスタイル(アーキテクチャパターン)のことについて アーキテクトスタイルとは、さまざまなアーキテクチャ特性をカバーする、コンポーネント同士の名付けられた関係を説明するもの。
## アーキテクチャスタイルを覚える意味
経験豊富なアーキテクト同士の表現方法として機能する為
## 基本的なアーキテクトスタイル一覧
- 巨大な泥団子 - ユニタリーアーキテクチャ - クライアント/サーバー - - デスクトップ/データベース - - ブラウザ+Webサーバー - - 3層 - レイヤードアーキテクチャ - パイプラインアーキテクチャ - マイクロカーネルアーキテクチャ - サービスベースアーキテクチャ - イベント駆動アーキテクチャ - スペースベースアーキテクチャ - サービス思考アーキテクチャ - マイクロサービスアーキテクチャ
## 見習うべきではないスタイル:巨大な泥団子
内部構造を持たず、イベントハンドラがデータベースの呼び出しまでを行ってしまっているようなスクリプティングアプリケーション 現実の世界ではよく見られる。 このスタイルはいわば反面教師で、きちんとアーキテクチャを考慮しないと**クラスの変更の余波の予測が困難になり、関心ごとを分離することができなくなる** ここは感想だが、「クラスの変更の余波の予測が困難になり、関心ごとを分離することができなくなる」というのはコードの品質を保つための脅し文句にもなると思う リファクタリングを怠るPMに向かって、「将来的にクラスの変更の余波の予測が困難になり、関心ごとを分離することができなくなるがそれでも良いですか?」といえば考慮はしてくれる(気がする)
## 最初のアーキテクチャ:ユニタリーアーキテクチャ
- ハードウェアとソフトウェアは一対のものとして始まる。 - 現在では組み込みシステム以外では存在しない システムは時間の経過とともに肥大化するので、パフォーマンス、スケールなど運用特性を維持するためには関心ごとを分離する必要がある。
## クライアント/サーバー型
### デスクトップ+データベース
- C#を使ったwindowsアプリケーションなどがこれに当たる。 ロジックのほぼ全てがデスクトップアプリケーションに置かれ、より厳密な計算を要する処理はデータベースサーバーで行われる
### ブラウザ+webサーバー
- ブラウザをより薄いクライアントとして使用する ロジックのほぼ全てがwebサーバーに移行したため、クライアント側で求める要件がへるのがメリット。 # モノシリックアーキテクチャと分散アーキテクチャ モノシリックとは以下のアーキテクチャのこと - レイヤードアーキテクチャ - パイプラインアーキテクチャ - マイクロカーネルアーキテクチャ 分散アーキテクチャとは以下のアーキテクチャのこと - サービスベースアーキテクチャ - イベント駆動アーキテクチャ - スペースベースアーキテクチャ - サービス思考アーキテクチャ - マイクロサービスアーキテクチャ
## モノシリックアーキテクチャと分散アーキテクチャのメリットデメリット
現代では分散アーキテクチャの方が以下の点で優秀だ - パフォーマンス - スケーラビリティ - 可用性 しかしこれにも一つの大きなトレードオフがある それが**ネットワークを基盤とするために起こる不安定性** 例えば - 途中でパケットが途切れることを考慮したコンポーネントをエンドポイントのロジックに与えなければならない - ネットワーク自体は絶えず変化する - ネットワークの帯域幅は無限ではない などなど
## まとめ
**アーキテクトは常にトレードオフ**である
## 備考
title:アーキテクチャパターン一覧 description:アーキテクトを学ぶ意義の理解。特に、アーキテクトスタイル(アーキテクチャパターン)のことについて。アーキテクトスタイルとは、さまざまなアーキテクチャ特性をカバーする、コンポーネント同士の名付けられた関係を説明するもの。 category_script:page_name.startswith("2") img:https://cdn.mainichi.jp/vol1/2018/02/26/20180226oog00m010037000p/9.jpg?1