進化的アーキテクチャ ―絶え間ない変化を支える

Book description

現代におけるエンタープライズアーキテクチャは、もはや静的な計画をあてにすることはできなくなっています。そしてソフトウェア開発エコシステムは、ツールやフレームワーク、技術イノベーションの流れと共に絶え間なく変化しています。こうした状況の中で、いったん構築したシステムを成長させていくには、さまざまな変化に適応しながら進化するアーキテクチャをシステムに組み込む必要があります。本書は、そうしたアーキテクチャを「進化的アーキテクチャ」と名付け、その構築に必要な考え方や技術、実践方法などについて解説するものです。

Table of contents

  1. 大扉
  2. 原書大扉
  3. クレジット
  4. 本書への推薦の言葉
  5. 訳者まえがき
  6. マーチン・ファウラーによる序文
  7. はじめに
  8. 1章 ソフトウェアアーキテクチャ
    1. 1.1 進化的アーキテクチャ
      1. 1.1.1 全てがひっきりなしに変化していく中で、長期的な計画がどれくらい可能か
      2. 1.1.2 いったん構築したアーキテクチャを経年劣化から防ぐにはどうすればよいか
    2. 1.2 漸進的な変更
    3. 1.3 誘導的な変更
    4. 1.4 アーキテクチャの多重な次元
    5. 1.5 コンウェイの法則
      1. PenultimateWidgetsの紹介と、彼らが逆コンウェイ戦略を取る機会
    6. 1.6 なぜ進化なのか
    7. 1.7 まとめ
  9. 2章 適応度関数
    1. 2.1 適応度関数とは
    2. 2.2 分類
      1. 2.2.1 アトミック vs ホリスティック
      2. 2.2.2 トリガー式 vs 継続的
      3. 2.2.3 静的 vs 動的
      4. 2.2.4 自動 vs 手動
      5. 2.2.5 一時的なもの
      6. 2.2.6 創発よりも意図的
      7. 2.2.7 ドメイン特化なもの
    3. 2.3 早い段階で適応度関数を特定する
    4. 2.4 適応度関数を見直す
      1. PenultimateWidgetsとエンタープライズアーキテクチャスプレッドシート
  10. 3章 漸進的な変更を支える技術
    1. 3.1 構成要素
      1. 3.1.1 テスト可能
      2. 3.1.2 デプロイメントパイプライン
      3. 継続的インテグレーション vs デプロイメントパイプライン
      4. PenultimateWidgetsのデプロイメントパイプライン
      5. 本番環境におけるQA
      6. 3.1.3 適応度関数の分類を組み合わせる
      7. 3.1.4 ケーススタディ:60回/日のデプロイごとのアーキテクチャ再構築
      8. 3.1.5 目標の衝突
      9. 3.1.6 ケーススタディ:PenultimateWidgetsの請求書発行サービスに適応度関数を追加する
    2. 3.2 仮説駆動開発とデータ駆動開発
    3. 3.3 ケーススタディ:移植するのは何か
  11. 4章 アーキテクチャ上の結合
    1. 4.1 モジュール性
    2. 4.2 アーキテクチャ量子と粒度
      1. ドメイン駆動設計の境界づけられたコンテキスト
      2. モノリシックなListing
    3. 4.3 アーキテクチャスタイルの進化可能性
      1. 4.3.1 巨大な泥団子
      2. 4.3.2 モノリス(一枚岩)
      3. 4.3.3 イベント駆動アーキテクチャ
      4. 4.3.4 サービス指向アーキテクチャ
      5. 「無共有」と適切な結合
      6. 4.3.5 「サーバーレス」アーキテクチャ
    4. 4.4 量子の大きさをコントロールする
    5. 4.5 ケーススタディ:コンポーネント循環を防ぐ
  12. 5章 進化的データ
    1. 5.1 進化的なデータベース設計
      1. 5.1.1 スキーマを進化させる
      2. 5.1.2 共有データベース統合
    2. 5.2 不適切なデータ結合
      1. DBA、ベンダー、ツールチェイン
      2. 5.2.1 2相コミットトランザクション
      3. 5.2.2 データの年齢と質
    3. 5.3 ケーススタディ:PenultimateWidgetsのルーティングを進化させる
  13. 6章 進化可能なアーキテクチャの構築
    1. 6.1 仕組み
      1. 6.1.1 ① 進化の影響を受ける次元を特定する
      2. 6.1.2 ② それぞれの次元に対して適応度関数を定義する
      3. 6.1.3 ③ デプロイメントパイプラインを使って適応度関数を自動化する
    2. 6.2 グリーンフィールドプロジェクト
    3. 6.3 既存のアーキテクチャを改良する
      1. 6.3.1 適切な結合と凝集
      2. 6.3.2 開発プラクティス
      3. 6.3.3 適応度関数
      4. リファクタリングと再構築
      5. 6.3.4 COTSとの関わり合い
    4. 6.4 アーキテクチャの移行
      1. 6.4.1 移行手順
      2. 6.4.2 モジュール相互作用を進化させる
    5. 6.5 進化的アーキテクチャ構築のための手引き
      1. 6.5.1 不要な変数を取り除く
      2. スノーフレークの危険性
      3. 6.5.2 決定を可逆にする
      4. 6.5.3 予測可能ではなく進化可能を選ぶ
      5. 6.5.4 腐敗防止層を構築する
      6. 6.5.5 ケーススタディ:サービステンプレート
      7. 6.5.6 犠牲的アーキテクチャの構築
      8. 6.5.7 外部の変更を軽減する
      9. インターネットを壊した11行のコード
      10. 6.5.8 ライブラリのアップデートとフレームワークのアップデート
      11. 6.5.9 スナップショットよりも継続的デリバリーを選ぶ
      12. 6.5.10 内部的にサービスをバージョン付けする
    6. 6.6 ケーススタディ:PenultimateWidgetsの評価サービスの進化
  14. 7章 進化的アーキテクチャの落とし穴とアンチパターン
    1. 7.1 技術アーキテクチャ
      1. 7.1.1 アンチパターン:ベンダーキング
      2. 7.1.2 落とし穴:抽象化の欠如
      3. 7.1.3 アンチパターン:ラスト10%の罠
      4. IBMのサンフランシスコプロジェクト
      5. 7.1.4 アンチパターン:コード再利用の乱用
      6. 7.1.5 ケーススタディ:PenultimateWidgetsにおける再利用
      7. 7.1.6 落とし穴:レジュメ駆動開発
    2. 7.2 漸進的な変更
      1. 7.2.1 アンチパターン:不適切なガバナンス
      2. 強制的な分離
      3. 7.2.2 ケーススタディ:PenultimateWidgetsにおけるゴルディロックスガバナンス
      4. 7.2.3 落とし穴:リリース速度の欠如
    3. 7.3 ビジネス上の関心事
      1. 7.3.1 落とし穴:製品のカスタマイズ
      2. 7.3.2 アンチパターン:レポート機能
      3. 7.3.3 落とし穴:計画範囲
  15. 8章 進化的アーキテクチャの実践
    1. 8.1 組織的要因
      1. 8.1.1 機能横断型チーム
      2. DevOpsの自動化による新しいリソースの発見
      3. 8.1.2 ビジネス能力を中心とした組織化
      4. 8.1.3 プロジェクトよりもプロダクト
      5. Amazonの「2枚のピザ」チーム
      6. 8.1.4 外部変化の取り扱い
      7. 8.1.5 チームメンバー間の結びつき
    2. 8.2 チーム結合特性
      1. 8.2.1 文化
      2. 8.2.2 実験の文化
    3. 8.3 CFOと予算
    4. 8.4 企業規模の適応度関数を構築する
      1. ケーススタディ:オープンソースライブラリの合法性
      2. 8.4.1 ケーススタディ:プラットフォームとしてのPenultimateWidgets
    5. 8.5 どこから始めるか
      1. 8.5.1 低い位置にぶらさがったフルーツ
      2. 8.5.2 最大限の価値
      3. 8.5.3 テスト
      4. 8.5.4 インフラストラクチャ
      5. インフラストラクチャはアーキテクチャに影響を与える
      6. 8.5.5 ケーススタディ:PenultimateWidgetsにおけるエンタープライズアーキテクチャ
    6. 8.6 将来の展望
      1. 8.6.1 AIを使った適応度関数
      2. 8.6.2 生成的テスト
    7. 8.7 なぜやるか(あるいは、なぜやらないか)
      1. 8.7.1 企業が進化的アーキテクチャの構築を決断すべきなのはなぜか
      2. 8.7.2 ケーススタディ:PenultimateWidgetsにおける選択的なスケール
      3. 8.7.3 企業が進化的アーキテクチャの構築を決断すべきでないのはなぜか
      4. 8.7.4 他者の説得
      5. 8.7.5 ケーススタディ:コンサルティング柔道
    8. 8.8 ビジネスケース
      1. 8.8.1 「未来はすでにここにある」
      2. 8.8.2 壊すことなく素早く動く
      3. 8.8.3 リスクを減らす
      4. 8.8.4 新しい能力
    9. 8.9 進化的アーキテクチャの構築
  16. 参考文献
  17. 著者・訳者紹介
  18. 奥付

Product information

  • Title: 進化的アーキテクチャ ―絶え間ない変化を支える
  • Author(s): Neal Ford, Rebecca Parsons, Patrick Kua, 島田 浩二
  • Release date: August 2018
  • Publisher(s): O'Reilly Japan, Inc.
  • ISBN: 9784873118567

You might also like

book

デザインスプリント ―プロダクトを成功に導く短期集中実践ガイド

by Richard Banfield, C. Todd Lombardo, Trace Wax, 安藤 幸央, 佐藤 伸哉, 牧野 聡

本書はGV(旧Google Ventures)およびGoogleで提唱しているデザイン思考「デザインスプリント」の概念とその手順を実践的に解説。デザインスプリントではプロダクトやサービスのアイデアを短時間で作り上げ、ユーザーに示して評価してもらい、アイデア創出からプロトタイピング、ユーザーテストと評価までをわずか5日間で完了させるためのプロセスが定められています。本書では組織でデザインスプリントを実践するために必要な事柄を紹介し、多くのリソースを投入する前にプロダクトやサービスのアイデアを検討し、チームメンバー、ステークホルダー、そしてユーザーを巻き込みながら短期間でより良いユーザー体験を作り上げる方法を伝授します。

book

プロダクトマネジメント ―ビルドトラップを避け顧客に価値を届ける

by Melissa Perri, 吉羽 龍太郎

本書は、顧客に価値を届けるプロダクトを作り出すプロダクトマネジメントについて学ぶ本です。プロダクトマネジメントを理解することで、企業がビジネス目標を達成しながら、顧客の課題を解決する方法を解説します。はじめにプロダクトマネージャーの役割と責任を定義し、優れた意思決定を促す戦略の立て方を紹介します。実験と最適化によって作るべきプロダクトを決めるプロセスを解説し、最後にプロダクト主導の組織を支えるための文化や方針を紹介します。ビルドトラップを避け、顧客の課題にフォーカスするプロダクトマネジメントの原則を解説する本書は、規模の大小を問わずすべてのプロダクトチーム、マネージャー、プログラマ、アーキテクト、デザイナ、マーケターに必携の一冊です。

book

ハイパフォーマンス ブラウザネットワーキング ―ネットワークアプリケーションのためのパフォーマンス最適化

by Ilya Grigorik, 和田 祐一郎/株式会社プログラミングシステム社

現代のアプリケーションエンジニアは、UIやデータ処理、開発言語、プラットフォームの仕様や癖だけでなく、サーバやネットワークについても、上から下まで、表から裏まで広く知ることを求められます。本書は「ブラウザ」に関連し、インターネットで使用されるさまざまなネットワーク技術をまとめたものです。HTTP/2.0やWebRTCなどの最新技術、WebSocketやXMLHttpRequestなどのブラウザAPI、そしてそれらの土台となるTCPやUDPやトランスポート層についてまでを幅広くカバーします。また改善前後の性能・速さを可能な限り具体化し、それぞれの場面においてのパフォーマンス改善幅を示します。

book

リーンエンタープライズ ―イノベーションを実現する創発的な組織づくり

by Jez Humble, Joanne Molesky, Barry O'Reilly, 角 征典, 笹井 崇司, Eric Ries

新規事業を生み出し、顧客にすばやく価値を届けるには、それを支援する体制が必要です。本書は、あらゆるムダを省き、継続的に仮説検証を繰り返しながら、プロダクトやサービスを構築する「リーンスタートアップ」の手法を既存の企業に適用するための方法を説明します。市場環境や顧客ニーズの変化に対応し、イノベーションを加速させ、組織文化、ガバナンス、財務管理を最適化し続けるハイパフォーマンス組織になるための原則とパターンを、さまざまな成功企業のケーススタディとともに詳述します。