PoEAA Introduction
- Architecture
- Enterprise Applications
- Kinds of Enterprise Application
- Thinking About Performance
- Patterns
- The Structure of the Patterns
- Limitations of These Patterns
- 英語
Architecture
- 多くの人が「Architecture」という言葉を定義する
- 共通点
- システムを細分化していく際の最上位の分類
- 変えづらい
- システムのアーキテクチャは一通りであらわされるものではない
- 何がアーキテクチャに含まれるかは主観的なもの
- システムの生涯にわたり変わっていく
- アーキテクチャとは
- 開発のエキスパートらによる、システム設計の共通理解
- 主要なコンポーネントと、その相互作用
- アーキテクチャに関する決め事
- 変えづらいため、早期に正しく決めたい
- 簡単に変えられないからこそ重要
- ほとんどのシステムは「レイヤ分け」を大なり小なり行う
- 本書ではパターンを「アーキテクチャ」「そうでないもの」と殊更に区別しない。主観が入るから
Enterprise Applications
- S/Wにもいろいろあるよね、という話
- エンタープライズアプリケーションでは、下記のようなものは不要
- マルチスレッド
- S/WとH/Wとの統合
- 逆に、下記のような困難がある
- 複雑なデータ
- 非論理的なビジネスロジック
- あらゆるS/Wで共通のことというのは、むしろ少ない
- そもそもEnterprise Applicationとは
- Enterprise Applicationは、たいてい他システムと連携する
- そもそもデータの概念が違ったりして、あまりうまくいかない
- 例: 「customer」
- リード客
- 過去の客
- 物の消費者は含めるが、サービスの消費者は含めない
- ここにおいて、「ビジネスロジック」が出てくる
- ビジネスロジック
- 「ロジック」といいつつ、これほど論理的でないものはない
- 実装の都合で変えられる代物ではない
- しょっちゅう変わる
- エンタープライズアプリケーションは、必ずしも大きなものではない
- 小さくても大きな利益をもたらすことはできる
- シンプルに小さく保て
Kinds of Enterprise Application
- 「エンタープライズアプリケーション」にもいろいろあるよ、という話
- 「どんなエンタープライズアプリケーションにも適用できるパターン」はない
- 複数のパターン候補があり、トレードオフがある
- 採用パターンを決めたら、それをアプリケーション向けに調整する必要がある
- 本書に限らず、設計に関する決め事の判断材料を提供するだけ
- ツールやフレームワークについても同じ。適しているか考えよ
Thinking About Performance
- まず動くものを作り、実測し、それをもとに最適化せよ
- ただし、アーキテクチャに関しては後から変えづらいことがある
- 後から簡単に変えられるのに、早期から心配する人もいる
- パフォーマンスは実測しないとわからない
- 遅そうでも、実測したら問題ないことはままある
- 本書でも、可読性のためにパフォーマンスを犠牲にしているサンプルコード多数
- 実測なしに「早いはずの」コードを書くと、コードが読みづらくなるだけ
- 環境や設定が変われば再測定が必要
- 仮想マシン
- H/W
- DB
- etc.
- 旧環境で有利に働いた最適化が、新しい環境では逆に遅くなることもある
- 言葉の混乱。詳しい言葉を使おうね
- 例1: 速度・時間に関する言葉
- response time
- 要求を受け取って、処理して、結果を応答するまでの時間
- responsibility
- 要求を受け取り、「これから処理するよ」と応答するまでの時間
- プログレスパーを表示するまでの時間とか
- 分母の計算があるのでlatencyよりは長時間かかるはず
- latency
- 要求を受け取り、何もせず応答するまでの時間
- ローカルだと早い
- リモートだと遅い
- アプリケーションのコードレベルでは高速化できない
- throughput
- response time
- 例2: 負荷に関する言葉
- Load
- 何人同時接続しているか、とか
- Load sensitivity
- 負荷によりresponse time等がどれほど変化するか
- 負荷増による劣化をとくに degradation とも
- efficiency
- リソースあたりの値
- 「CPU2つで30tps」
- 「CPU4つで40tps」
- 前者のほうが高効率
- capacity
- 最大のthroughputやload
- scalability
- リソースの投入がパフォーマンスにどう影響するか
- vertical scalability / scaling up
- 単一サーバーにリソース投入
- horizontal scalability / scale out
- サーバーそのもの投入
- Load
- 例1: 速度・時間に関する言葉
- 「throughputは向上するがresponse timeは遅くなる」ということもあるので、安易に「パフォーマンス」という言葉を使わない
- エンタープライズアプリケーションでは、capacityやefficiencyよりもscalabilityを優先したほうがうまくいくこと多し
- 複雑な設計をしてcapacityを上げるより、H/Wを投入したほうが安上がりなことがままある
- プログラマの人件費とか
- 複雑な設計をしてcapacityを上げるより、H/Wを投入したほうが安上がりなことがままある
Patterns
- パターンは「半生」
- プロジェクトごとに「ちゃんと焼いて」完成する必要がある
- 調整
- 全く同じプロジェクトなどない
- プロジェクトごとに「ちゃんと焼いて」完成する必要がある
- パターン同士は非依存だが、孤立はしていない
- あるパターンを理解するために本書を全部読まないといけない、とならないよう
- 複数のパターンは併用される
- 本書には新しいことはない
- 新しく「開発した」パターンはない
- 「発見した」ものが載っている
- 普遍的な解決策を記述し、その核心をとらえ、パターンとして書き下している
- 「そんなの知ってるよ」という設計者にとっても、他者とのコミュニケーションに有用
- 語彙の提供
- エンタープライズアプリケーション向けパターンが大多数だが、一般のS/Wに利用できるパターンも掲載した
The Structure of the Patterns
- name
- 「語彙の提供」のために重要
- intent
- 1~2文
- sketch
- UMLとか
- motivation
- パターンが解決する問題の例
- how it works
- implementation-issueとか
- platform-specificなこととか
- when to use it
- トレードオフについてもここに書かれている
- 「どういうときにこれを使わないか?」の判断材料
- further reading
- ここまでに書いた内容の理解を深めるためのsection
- 包括的な内容ではない
- examples
- 半生のパターンを完成させたやつ
- そのまま使わないでね
- 核心をとらえやすくするために、あえて簡略化している
- そのまま使える代物じゃないから、ダウンロード可能にはしてないよ
Limitations of These Patterns
- 本書のパターン集は包括的なものではない
- 完璧を目指すよりも有用なものをまず出版
- 執筆時点での著者の理解を反映したものである
- まだ確立されていない
- パターンの使用は出発地点にすぎない
- 先人たちの地検や試行錯誤に、自分自身のを加えよ
- パターンはそのまま使わず、調整せよ
英語
- In case you haven't realized it, ...
- [決まり文句] 一応言っておくと
- underpin
- Support, justify, or form the basis for.
- myriad
- A countless or extremely great number of people or things.
- pragmatic
- Dealing with things sensibly and realistically in a way that is based on practical rather than theoretical considerations.
- cynicism
- An inclination to believe that people are motivated purely by self-interest; scepticism.
- inclination
- A person's natural tendency or urge to act or feel in a particular way; a disposition.
- scepticism
- A sceptical attitude; doubt as to the truth of something.
- sceptical
- Not easily convinced; having doubts or reservations.
- reservation
- An expression of doubt qualifying overall approval of a plan or statement.
- qualify
- [with object] Make (a statement or assertion) less absolute; add reservations to.
- outlast
- Live or last longer than.
- stress
- Give particular emphasis or importance to (a point, statement, or idea) made in speech or writing.
- dissonance
- Lack of agreement or harmony between people or things.
- mung
- [with object] Manipulate (data)
- haphazard
- Lacking any obvious principle of organization.
- 行き当たりばったり
- retail
- A person or business that sells goods to the public in relatively small quantities for use or consumption rather than for resale.
- 逆に、large quantities で for resale なのは「卸」(wholesale)でしょう
- A person or business that sells goods to the public in relatively small quantities for use or consumption rather than for resale.
- valuation
- An estimation of the worth of something, especially one carried out by a professional valuer.
- devoid of
- Entirely lacking or free from.
- payroll
- A list of a company's employees and the amount of money they are to be paid.
- reimbursement
- The action of repaying a person who has spent or lost money.
- 払戻、償還等
- hamper
- Hinder or impede the movement or progress of.
- hinder
- Make it difficult for (someone) to do something or for (something) to happen.
- impede
- Delay or prevent (someone or something) by obstructing them; hinder.
- 「インピーダンス」 (交流回路の抵抗みたいなやつ)
- instrument
- [verb] Equip (something) with measuring instruments.
- [noun] A tool or implement, especially one for precision work.
- bogus
- Not genuine or true (used in a disapproving manner when deception has been attempted)
- commensurate
- Corresponding in size or degree; in proportion.
- choir (kwάɪɚ(米国英語), kwάɪə(英国英語))
- An organized group of singers, especially one that takes part in church services or performs in public.
- regurgitate
- Bring (swallowed food) up again to the mouth.
- Repeat (information) without analysing or comprehending it.
- 比喩的
- scaffolding
- A temporary structure on the outside of a building, made of wooden planks and metal poles, used by workmen while building, repairing, or cleaning the building.
- ramifications
- A complex or unwelcome consequence of an action or event.
- stand
- Remain valid or unaltered.