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

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s