Spring Cloud Netflixを読んだ

Springが、Netflixが公開している彼らのOSS群を説明している記事を読みました。ちょっと、記憶に止めておきたい内容を探っているのでそのメモがてら。

記事: http://cloud.spring.io/spring-cloud-netflix/spring-cloud-netflix.html

これは、Netflixのmicroservicesを構成するツール群を説明していました。

  • Service Discovery
    • Eureka Clients
  • Circuit Breaker
    • Hystrix
  • Intelligent Routing
    • Zuul
  • Client Side Load Balancing
    • Ribbon

Service Discovery: Eureka Clients

  • Service Discoveryはmicsoservicesベースのアーキテクチャとして大事な要素

Circuit Breaker

Hystrix Clients

  • Netflixは、CircuitBreakerを実装したもの。Microservicesでは、複数のサービスコールのレイヤを持っている。

  • 低レベルのサービス障害が発生すると、障害がユーザまで伝っていくので、障害のあったサービスをフォールバックすることで障害の伝搬を抑制することが目的

  • ↑の状態になるサービスは、例えば /health の応答として “CIRCUIT_OPEN”というstatusを返す

Dashboard

  • circuitがOpenかCloseかを知ったり、応答速度を監視するためのダッシュボードですね

Turbin

  • すべての /hystrix.stream エンドポイントを、Dashboardの /turbin.streadm エンドポイントに統合するアプリケーション。アプリのインスタンスはEurekaにある。

Declarative REST Client

Feign

  • Feignは、Web serviceクライアント

この記事では、Spring frameworkとして使える方法も紹介してました。

Client Side Load Balancer

Ribbon

  • クライアント側でのロードバランサ。HTTP、TCPベース。
  • Feignは常にRibbonを使うようになっている。

External Configuration

Archaius

  • クライアント側の設定ライブラリ
  • NetflixのすべてのOSSコンポーネントの設定で使われているらしい

Router and Filter

Zuul

  • microservice architectureにおけるサービスのルーティングを行う
  • JVMベースの、ルーティング + サーバ側ロードバランサを備えたライブラリ
  • 以下の機能を提供する
    • Authentication
    • Insights
    • Stress Testing
    • Canary Testing
    • Dynamic Routing
    • Service Migration
    • Load Shedding
    • Security
    • Static Response handling
    • Active/Active traffic management

以上。

Microservicesは基盤技術やツールや体制が充実していないと破綻することがよく言われるようになりました。今回のツール群をみるだけでも、保守や不具合解析以外にも、サービス間のつながりをどうするかとか、障害発生時もサービス全体として正しく振る舞うにはとか、そういう設計も重要な位置を占めていることが容易に想像できます。

事業に対するシステム構成上、Monolithicで十分であればそれに越したことは無いですね。。。

コメントを残す

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

WordPress.com ロゴ

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

Twitter 画像

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

Facebook の写真

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

Google+ フォト

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

%s と連携中