MicroServices Patternを読んでみた

こちらの、パターン集を集めている?Webサイトに載っていたので読んでみました。

http://microservices.io/patterns/microservices.html

Context and Problem

レイヤー分けされたり、hexagonal architectureをもつアプリケーションは、以下のようなコンポーネントから構成される。

  • Presentation compornents
  • Business logic
  • Database access logic
  • Application integration logic

このような様々なレイヤー分けされたサービスから構成されるシステムを(ざっくりと)マイクロサービスと呼ぶ。

これらの構成をもつアプリにおけるデプロイアーキテクチャはどのようなものか?

Solution

  • Scale Cubeなアプリケーションアーキテクチャ
  • 機能的に分解された多くのサービスの集合としてアプリケーションが動作する
  • サービスは、HTTP/RESTのような同期的なコミュニケーションと、AMQPのような非同期的なコミュニケーションを使う
  • サービスは、それぞれが独立して開発/デプロイされる
  • それぞれのサービスは、それぞれが分離するために自身のDBをもつ。それらのDBはレプリケーションやアプリケーションレベルのイベントで保守される。

Solutionの問題

  • 開発者は、モノリシックアーキテクチャ以上の、分散システムを構築するための複雑性を扱わなければいけない
    • IDEやツールの多くは、モノリシックアーキテクチャ向けのもの
    • Testingがより困難になる
    • サービス間の内部処理の実装が必要
    • それぞれの開発チーム間の連携を構築する必要がある
    • 分散トランザクションを使う必要が有る
  • デプロイが複雑
  • 個々のサービスが独立して起動、利用可能になるまでの時間が必要なので、サービスが利用可能になるまでに最大でサービス分のオーバーヘッドがかかる

類似

API Gateway pattern

APIを受け取るgatewayを境界に、Client/Serverで扱う処理を分散させる

Netflix APIのようなもの

Scale Cube

The Art of Scalabilityに記載されているパターン

アプリケーションのスケールを、箱型のXYZ軸のそれぞれの軸をもとに表現して説明したパターン

  • X軸スケーリング
    • Horizontal duplication
    • アプリケーションのクローンを増やすことでスケールさせる
  • Y軸スケーリング
    • Functional Decomposition
    • 1つのサービスを複数のサービスに分離させ、動作させること
  • Z軸スケーリング
    • Data partitioning
    • コードの独立したコピーをそれぞれのサーバーで動作させることで、X軸スケールのように動作させる
    • X軸との差は、このZ軸はデータのサブセットのみに責任をもつ

関連用語

AMQP

Advanced Message Queuing Protocol

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中