マイクロサービス インアクション
5,500円 (5,000円+税)
関連サイト
本書の関連ページが用意されています。
内容紹介
この5年間、マイクロサービスのアーキテクチャスタイル(細粒度で、疎結合かつ個別デプロイ可能なサービスでアプリケーションを構築)は、企業の規模によらず、技術チームにおける評価が高まっており、またその実現性への期待も大きくなってきています。
筆者らにとって、Onfidoでのマイクロサービスプロジェクトへの取り組みは貴重な体験でした。本書は、その中で習得した多くのことを記録したものです。大きなモノリシックのコードベースの時には、互いにつまずき合って転ぶような事態が発生しがちですが、システムを分割することによって、そうしたことがなくなり、より迅速に、よりあつれきの少ない状況のもとでリリースができるようになりました。マイクロサービスアプローチは、製品の複雑さやチームの規模が増大しても、エンジニアが時とともに進化していくアプリケーションを構築するのに貢献することができます。
私たちは、もともとは、マイクロサービスアプリケーションを稼働させた、実体験を本に書くつもりで執筆を始めました。その本の対象範囲を広げていくにつれて、そのミッションが変遷し、アプリケーションライフサイクル全体、つまり、マイクロサービスの設計から、デプロイ、運用に至るまでの経験を、広く実践的なレビューへと昇華させることにしました。これらの手法の説明にKubernetesやDockerなどのツールを取り上げました。これらは評価が高く、マイクロサービスのベストプラクティスとうまく連動します。ただ、アプリケーションの構築に最終的にどの言語やツールを使うかによらず、ここで得られた知識をうまく適用していただけることを願います。
本書が読者の皆さんの有益な参考やガイドとなることを、そして皆さんがマイクロサービスを用いて優れた製品やアプリケーションを構築されるときの情報源、アドバイス、事例として貢献できることを心から祈っています。
書誌情報
- 著者: モーガン・ブルース, パウロ・A・ペレイラ(著), 株式会社メソドロジック(監訳), 大西俊幸, 矢崎博英, 大西俊幸, 山本竜之介, 戎谷克行, 大浦史仁(訳)
- 発行日: 2020-11-25 (紙書籍版発行日: 2020-11-20)
- 最終更新日: 2020-11-25
- バージョン: 1.0.0
- ページ数: 335ページ(PDF版換算)
- 対応フォーマット: PDF
- 出版社: エスアイビー・アクセス
対象読者
マイクロサービスアーキテクチャで難関とされるサービスの粒度設計の考え方やシステム稼働後の運用方法については、マイクロサービスアーキテクチャ導入を検討されている方々や、すでに構築を進めておられる方々
著者について
モーガン・ブルース
ブルースは、複雑なアプリケーションの構築の経験が豊富で、特に正確さ、レジリエンス、セキュリティが決定的に重要な金融や個人認証の領域での専門知識を有している。技術リーダーとして、大規模なリファクタリングやアーキテクチャ再構築の取り組みに従事してきた。また、モノリシックアプリケーションから堅牢なマイクロサービスアーキテクチャへの移行を現場で主導した経験ももっている。
パウロ・A・ペレイラ
ペレイラは、現在、モノリスをマイクロサービスに再構築する仕事に関わっているチームを率いており、合わせてセキュリティと正確さが最重要であるシステムを進化させる際の制約に取り組んでいる。作業に適したツールを選定し、様々な言語やパラダイムと組み合わせることに強く関心をもち、今は関数型言語、主にElixir にはまっている。また、ペレイラはElixir Cookbook も執筆しており、Learning Elixir やMasteringElixir では、技術レビューアーの1人でもある。
目次
序文
- 本書について
- 本書の構成:ロードマップ
- コードについて
- ブックフォーラム
- 謝 辞
翻訳者謝辞
- 動作確認済みソースコードについて
第1部 状況
1章 マイクロサービスの設計と実行
- 1.1節 マイクロサービスアプリケーションとは何か?
- 1.2節 マイクロサービスを困難にするものは何か?
- 1.3節 マイクロサービスの開発ライフサイクル
- 1.4節 責務と運用を意識した技術文化
- 1.5節 サマリー
2章 SimpleBankにおけるマイクロサービス
- 2.1節 SimpleBankの紹介
- 2.2節 マイクロサービスは正しい選択だろうか?
- 2.3節 新機能の構築
- 2.4節 外部へのサービスの公開
- 2.5節 プロダクションへの機能の誘導
- 2.6節 マイクロサービスデプロイメントのスケールアップ
- 2.7節 この次は?
- 2.8節 サマリー
第2部 設 計
3章 マイクロサービスアプリケーションのアーキテクチャ
- 3.1節 アーキテクチャ全般
- 3.2節 マイクロサービスプラットフォーム
- 3.3節 サービス
- 3.4節 通 信
- 3.5節 アプリケーション境界
- 3.6節 クライアント
- 3.7節 サマリー
4章 機能の設計
- 4.1節 SimpleBankのための新機能
- 4.2節 ビジネスケイパビリティによるスコーピング
- 4.3節 ユースケースによるスコーピング
- 4.4節 ボラティリティによるスコーピング
- 4.5節 テクニカルケイパビリティ
- 4.6節 曖昧さへの対処
- 4.7節 組織におけるサービスの所有権
- 4.8節 サマリー
5章 マイクロサービスにおけるトランザクションとクエリ
- 5.1節 分散アプリケーションにおける一貫性のあるトランザクション
- 5.2節 イベントベースの通信
- 5.3節 saga
- 5.4節 分散の世界でのクエリ
- 5.5節 参考文献
- 5.6節 サマリー
6章 信頼性の高いサービスの設計
- 6.1節 信頼性の定義
- 6.2節 何が障害になるのか?
- 6.3節 信頼性の高い通信の設計
- 6.4節 サービスの信頼性向上
- 6.5節 デフォルトによる安全性
- 6.6節 サマリー
7章 再利用可能なマイクロサービスフレームワークの構築
- 7.1節 マイクロサービスのシャーシ
- 7.2節 マイクロサービスのシャーシの目的は何か?
- 7.3節 シャーシの設計
- 7.4節 シャーシを使用して実装した機能の考察
- 7.5節 異種混合は、マイクロサービスの約束事?
- 7.6節 サマリー
第3部 デプロイ
8章 マイクロサービスのデプロイ
- 8.1節 なぜデプロイが大事なのか?
- 8.2節 マイクロサービスの本番環境
- 8.3節 サービスをデプロイする手っ取り早い方法
- 8.4節 サービスアーティファクトの構築
- 8.5節 ホストモデルへのサービス
- 8.6節 ダウンタイムのないサービスのデプロイ
- 8.7節 サマリー
9章 コンテナとスケジューラーを使ったデプロイ
- 9.1節 サービスのコンテナ化
- 9.2節 クラスターへのデプロイ
- 9.3節 サマリー
10章 マイクロサービスのデリバリーパイプラインの構築
- 10.1節 デプロイをつまらなくする
- 10.2節 Jenkinsでのパイプラインの構築
- 10.3節 再利用可能なパイプラインステップの構築
- 10.4節 影響を少なく抑えるデプロイおよび機能リリースのテクニック
- 10.5節 サマリー
第4部 可観測性と所有
11章 監視システムの構築
- 11.1節 強力な監視スタック
- 11.2節 PrometheusやGrafanaを使ったSimpleBankの監視
- 11.3節 効果的かつ実用的なアラートの発信
- 11.4節 アプリケーション全体の俯瞰
- 11.5節 サマリー
12章 ログとトレースを使って振る舞いを理解する
- 12.1節 サービス全体の振る舞いの理解
- 12.2節 一貫性のある、構造化された、人が読めるログを生成する
- 12.3節 SimpleBankのためのログインフラの設定
- 12.4節 サービス間の通信の追跡
- 12.5節 トレースの可視化
- 12.6節 サマリー
13章 マイクロサービスチームの構築
- 13.1節 効率的なチームの構築
- 13.2節 チームモデル
- 13.3節 マイクロサービスチームに推奨するプラクティス
- 13.4節 参考文献
- 13.5節 サマリー
付録 MinikubeでのJenkinsのインストール
- A.1節 KubernetesでのJenkinsの実行