PoEAA 0.Introduction

Patterns of Enterprise Application Architecture (Addison-Wesley Signature Series (Fowler))

Patterns of Enterprise Application Architecture (Addison-Wesley Signature Series (Fowler))

Architecture

アーキテクチャとは

  • システムの主要な部品と、その間の相互関係
  • 後になって変更することが難しいような決定事項 (「変更することが難しい」は主観的で変わり得る)

Enterprise Applications

Enterprise Applicationは以下の特徴をもつ

  • 永続的データを扱う
  • データ量が多い
  • データは並列にアクセスされる
  • 大量のユーザーインターフェース画面がある
  • 別のエンタープライズアプリケーションと連携する
  • (別のエンタープライズアプリケーションとの)データの概念的不協和が存在する
  • 複雑なビジネス非論理性を扱う

Kind of Enterprise Application

以下の3種類を代表例として考える

  • B2Cオンライン小売業(ロジックは簡潔だが、処理量大)
  • 賃貸契約の自動化システム(処理量小だが、ロジックが複雑)
  • 小規模企業の費用追跡システム(将来の拡張性が重要)

それぞれ異なる困難性を持ち、全てに適用可能な唯一のアーキテクチャというものはない

Thinking About Performance

  • アーキテクチャに関する決定の多くは性能に関わるものである
  • 原則としてパフォーマンス最適化は計測に基づくべきだが、性能に影響するアーキテクチャ上の決定は後半の最適化では修正が難しい場合がある
  • いくつかのガイドラインは提供するが、やっぱり計測に基づくべき
  • コンフィギュレーションが変わったら、やっぱり計測すべき
  • 設計上の決定が性能指標のすべてに同じように作用するとは限らない
  • エンタープライズシステムでは、キャパシティや効率性よりスケーラビリティが重要
  • 用語は以下のように定義する
用語 定義
応答時間 外部からの要求を処理するのにかかった時間
応答性 要求にたいしてどの程度すばやく受付応答するか
レイテンシ なんらかの応答を得るまでの最小時間
スループット 一定時間内処理量
ロード システムがどの程度負荷がかかった状態にあるか
ロードセンシティビティ ロードによりどの程度応答時間が変化するか
効率性 性能 / リソース
キャパシティ 最大の有効スループットまたはロード
スケーラビリティ リソースの追加が性能に与える影響
垂直スケーラビリティ または スケールアップ 1つのサーバーに能力を追加すること
水平スケーラビリティ または スケールアウト サーバーを追加すること

Patterns

  • パターンは実践にもとづいている
  • パターンのすべてを詳細に理解する必要はない
  • パターンは問題にそのまま適用できるものではない
  • いくつかのパターンは独立しているがいくつかは関連している

The Structure of the Pattern

  • 名前
  • 目的: 短い要約
  • 図: 視覚表現(大体UML図)
  • 動機となる問題: 複数の問題が動機となり得るが、著者が強い動機となる問題を記載)
  • How it works: 解決法を記載(特定のプラットフォームに依存する内容はインデントして記載)
  • When to Use: いつ使うべきか。他のパターントントレードオフも記載。
  • Future Reading: パターンに関する議論への参照
  • 例: JavaC#

Limitations of These Pattern

  • エンタープライズアプリケーション開発の包括的なガイドではない
  • パターンの使用は出発点であって終着点ではない