関連サイト
本書の関連ページが用意されています。
内容紹介
マイクロサービスは、現在最も注目されるソフトウェアのアーキテクチャスタイルです。巨大なモノリシック(一枚岩)システムを、独立した複数のサービスへと分割することによって、それらのサービスはRESTやメッセージングを介して協業できるようになります。機能別に分割されたサービスはそれぞれ個別に開発/デプロイ/管理され、疎結合となっており、保守性や運用性が飛躍的に向上します。
マイクロサービスは巨大なエンタープライズシステムのモダナイゼーションに役立つアーキテクチャスタイルですが、その実践は簡単なことではありません。本書は、システムのマイクロサービス化の成功に向けた極めて実践的な解説書です。豊富なサンプルコードを示しながら、ストーリー仕立てで具体的な解説を試みます。システムやプロセス間通信の設計や、ビジネスロジックの開発、データの永続化などを解説し、さらにテストやデプロイ、開発プロジェクトのマイクロサービスへの移行などについても考察しています。
マイクロサービスについて詳しく知り、その実現のための具体的な方法を知りたい、開発の失敗を避けるための生きた知識を得たいという方のために、本書はさまざまな知見を提供します。
書誌情報
- 著者: Chris Richardson(著), 長尾高弘(訳), 樽澤広亨(監修)
- 発行日: 2020-03-23 (紙書籍版発行日: 2020-03-23)
- 最終更新日: 2020-03-23
- バージョン: 1.0.0
- ページ数: 569ページ(PDF版換算)
- 対応フォーマット: PDF, EPUB
- 出版社: インプレス
対象読者
これからマイクロサービスをスクラッチで開発する、あるいは既存のモノリシックなプログラムをマイクロサービス化しようとしている開発者やアーキテクト
著者について
Chris Richardson
経験豊富なシステムアーキテクト。CloudFoundry.comのファウンダーであり、世界中の顧客のためにマイクロサービスアーキテクチャの適用についての活動を行っている。
長尾高弘
東京大学教育学部卒、株式会社ロングテール社長、訳書に『Scala スケーラブルプログラミング第3 版』(インプレス)、『プロダクションレディマイクロサービス』(オライリー・ジャパン)、『AWS によるサーバーレスアーキテクチャ』(翔泳社)、『The DevOps ハンドブック』(日経BP社)、『入門Python3』(オライリー・ジャパン)などがある。
樽澤広亨
外資系クラウド・ベンダー所属アーキテクト。米IBM ソフトウェア開発研究所所属の開発エンジニアとしてアプリケーション・サーバーの設計・開発を担当。また日本IBM にてアーキテクト、デリバリーエンジニア、テクニカルサポートエンジニア、エバンジェリストとしてソフトウェアビジネス、クラウドビジネスに従事。この間、情報処理学会.情報企画調査会.SC38 専門委員として、ISO IEC JTC1/SC38 によるクラウドコンピューティングの国際標準策定に貢献。
目次
本書について
- 本書はどのような人々のために書かれているか
- ロードマップ
- コードについて
- ブックフォーラム
- その他のオンラインリソース
- 著者について
- 監修者について
- 訳者について
Chapter 1 モノリシック地獄からの脱出
- 1.1 ゆっくりとした足取りによるモノリシック地獄への転落
- 1.2 本書がみなさんにとって意味を持つ理由
- 1.3 本書で学べること
- 1.4 マイクロサービスアーキテクチャで状況打開
- 1.5 マイクロサービスアーキテクチャの利点と欠点
- 1.6 マイクロサービスアーキテクチャのパターン言語
- 1.7 マイクロサービスを越えて: プロセスと組織
- 1.8 まとめ
Chapter 2 サービスへの分割
- 2.1 マイクロサービスアーキテクチャとは正確なところ何なのか
- 2.2 マイクロサービスアーキテクチャの定義の方法
- 2.3 まとめ
Chapter 3 マイクロサービスアーキテクチャで使われるプロセス間通信
- 3.1 マイクロサービスアーキテクチャにおけるプロセス間通信の概要
- 3.2 同期的なリモートプロシージャ呼び出しパターンを使った通信
- 3.3 非同期的メッセージングパターンを使った通信
- 3.4 可用性向上のための非同期メッセージング
- 3.5 まとめ
Chapter 4 サーガによるトランザクションの管理
- 4.1 マルチサービスアーキテクチャにおけるトランザクション管理
- 4.2 サーガのコーディネート
- 4.3 分離性の欠如への対処方法
- 4.4 オーダーサービスとCreate Order Sagaの設計
- 4.5 まとめ
Chapter 5 マイクロサービスアーキテクチャにおけるビジネスロジックの設計
- 5.1 ビジネスロジック構成パターン
- 5.2 DDDのAggregateパターンを使ったドメインモデルの設計
- 5.3 ドメインイベントのパブリッシュ
- 5.4 キッチンサービスのビジネスロジック
- 5.5 オーダーサービスのビジネスロジック
- 5.6 まとめ
Chapter 6 イベントソーシングを使ったビジネスロジックの開発
- 6.1 イベントソーシングを使ったビジネスロジックの開発
- 6.2 イベントストアの実装方法
- 6.3 サーガとイベントソーシングの併用
- 6.4 まとめ
Chapter 7 マイクロサービスアーキテクチャでのクエリーの実装
- 7.1 〈API composition〉パターンを使ったクエリー
- 7.2 〈CQRS〉パターンを使ったクエリー
- 7.3 CQRSビューの設計
- 7.4 AWS DynamoDBによるCQRSビューの実装
- 7.5 まとめ
Chapter 8 外部APIパターン
- 8.1 外部APIを設計するときの問題点
- 8.2 〈APIゲートウェイ〉パターン
- 8.3 APIゲートウェイの実装
- 8.4 まとめ
Chapter 9 マイクロサービスのテスト(前編)
- 9.1 マイクロサービスアーキテクチャのテスト戦略
- 9.2 サービスのユニットテストの開発
- 9.3 まとめ
Chapter 10 マイクロサービスのテスト(後編)
- 10.1 統合テストの開発
- 10.2 コンポーネントテストの開発
- 10.3 エンドツーエンドテストの開発
- 10.4 まとめ
Chapter 11 本番環境に耐えられるサービスの開発
- 11.1 セキュアなサービスの開発
- 11.2 設定可能なサービスの設計
- 11.3 可観測性を備えたサービスの設計
- 11.4 〈Microservice chassis〉パターンを使ったサービスの開発
- 11.5 まとめ
Chapter 12 マイクロサービスのデプロイ
- 12.1 〈Language-specific packaging format〉パターンによるサービスのデプロイ
- 12.2 〈Service as a VM〉パターンによるサービスのデプロイ
- 12.3 〈Service as a container〉パターンによるサービスのデプロイ
- 12.4 KubernetesによるFTGOアプリケーションのデプロイ
- 12.5 〈Serverless deployment〉パターンを使ったサービスのデプロイ
- 12.6 AWS LambdaとAWS API Gatewayを使ったRestfulサービスのデプロイ
- 12.7 まとめ
Chapter 13 マイクロサービスのリファクタリング
- 13.1 マイクロサービスへのリファクタリングの概要
- 13.2 モノリスをマイクロサービスに移行させるための方法
- 13.3 サービスとモノリスの連携方法の設計
- 13.4 新機能をサービスとして実装する:配達ミスの処理
- 13.5 モノリスの分解:配達管理の抽出
- 13.6 まとめ