LoginSignup
3
3

More than 5 years have passed since last update.

[読書メモ] プロダクションレディマイクロサービス

Posted at

目的

どのようにすれば本番運用に対応した(プロダクションレディ)マイクロサービビスを作れるか?UberのSREとして働いているSusan J.Fowlerからそのエッセンスを学ぶ。
Q1. まず、そもそもマイクロサービスって何でしたっけ?
Q2. 本番運用に対応したマイクロサービスを構築するのに必要なことは?
Q3.

キーワード

モノリス、マイクロサービス、マイクロサービスが従うべき標準、マイクロサービスエコシステム、コンウェイの法則

マイクロサービスとは

  • 多くの有名企業がモノリシックなアプリケーションの構築を止め、マイクロサービスアーキテクチャを採用してきた
  • 今日のアプリケーションは論理的には、3つの要素に分解できる ー フロントエンド(クライアントサイド)、バックエンド、データストア
  • アプリケーションはいくつかの機能から構成される。これらの機能を一つのコードとして構築するのがモノリス。そうではなくて、機能毎に独立したコンポーネント(マイクロサービス)として構築し、それらを組み合わせることにより、アプリケーションを実現するのがマイクロサービスアーキテクチャ
  • マイクロサービスは、1つのことだけを非常によくこなす小さなアプリケーション
  • 個々のマイクロサービスに、自律性、独立性、自己完結性を与える
  • 通常マイクロサービスアーキテクチャを採用する企業は、1つのアプリケーションを作り上げたあと、スケーラビリティの限界にぶつかり、組織的な課題に直面してからそうする
  • モノリスの分割の手順、
    • コンポーネント化してマイクロサービスを切り出す
    • 個々のマイクロサービスに担当チームを設ける
    • インフラストラクチャチームの編成
  • 一連のマイクロサービスが全体としてうまく機能するために、インフラストラクチャと、各マイクロサービスが備えるべき標準が必要
  • マイクロサービスはインターフェースと実装を分離することにより、実装の自由度を得ることができる(プログラミング言語、ミドルウェア、データストア)
  • マイクロサービスエコシステム(マイクロサービスが適切に動作するために必要な環境)
    ms4.png
    https://www.susanjfowler.com/blog/2016/12/18/the-four-layers-of-microservice-architecture

    • レイヤ1 : ハードウェア
    • レイヤ2 : 通信
      • 通信プロトコル(RPC, REST)
      • サービスディスカバリ、サービスレジストリ、負荷分散
    • レイヤ3 : アプリケーションプラットフォーム
      • マイクロサービスに依存しないすべての内部ツール、サービスを含んでいる
      • 開発プロセス、デプロイソリューション、ロギング監視
    • レイヤ4 : マイクロサービス
  • マイクロサービスはもっとも単純なものでもかなり複雑なシステムになる (基盤が重要である

本番対応するとは

  • マイクロサービスアーキテクチャを採用すると、開発者にはかなりの自由が与えられるが、全体の可用性を確保するためには、個々のマイクロサービスが、アーキテクチャ、運用、組織をめぐる高い標準を満たす必要がある
  • 標準化の目標は可用性
  • 本番対応できるアプリケーションやサービスとは、本番トラフィックを任せられる信頼のあるアプリケーション、サービス
  • 8つの原則 ー 安定性、信頼性、スケーラビリティ、対障害性、大惨事対応、パフォーマンス、監視、ドキュメント

本番対応の8つの標準

安定性

  • 安定性の要件
    • 安定した開発サイクル
    • 安定したデプロイプロセス
    • 安定した導入、非推奨手続き ## 信頼性
  • 信頼性の要件
    • 確実なデプロイプロセス
    • 依存関係の障害に対処するための計画、影響の緩和と障害からの保護
    • 確実なルーティングと健全性チェック ## スケーラビリティ
  • スケーラビリティは、並行性とパーティション分割を必要とするが、この2つをモノリスで実現するのは難しい
  • スケーラビリティの要件
    • 質的、量的な成長の判断基準
    • リソースのボトルネックと要件の明確化
    • バーストトラフィックの対応
    • 依存関係のスケーリング

    - データストアのスケーリング

パフォーマンス

  • マイクロサービスがどれくらい効率よくリクエストを処理するか
  • コストが高いネットワーク呼び出しを大量に行うマイクロサービスは、パフォーマンスが高いとは言えない ## 対障害性
  • 単一障害点を明確にして解決する

- 障害の検出、修正戦略を用意する

大惨事対応

監視

ドキュメント

3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3