Contenu connexe
Similaire à What happens in Spring Cloud Netflix (20)
What happens in Spring Cloud Netflix
- 1. © 2019 NTT DATA Corporation
どうなる Spring Cloud Netflix !!
2019/6/24 日本Springユーザ会主催 Spring I/O 2019 報告会
株式会社NTTデータ システム技術本部 細井 貴史
- 2. © 2019 NTT DATA Corporation 2
自己紹介
・ 名前: 細井 貴史 (ほそい たかし)
・ 所属: 株式会社NTTデータ システム技術部
インテグレーション技術センタ
(旧ソフトウェア工学推進センタ)
・ その他あれこれ:
- 法人向けのSI事業部出身 (現所属の横断組織に異動)
- Springベースのグループ共通フレームワークの整備を担当
- Spring I/Oへの参加は初
- 4. © 2019 NTT DATA Corporation 4
Netflix社が提供するマイクロサービス開発の一端を担う
OSSプロダクト達を扱っている。
Spring Cloud Netflix とは?
・ Spring Cloud Netflix Eureka Client
・ Spring Cloud Netflix Eureka Server
・ Spring Cloud Netflix Archaius
・ Spring Cloud Netflix Ribbon
・ Spring Cloud Netflix Zuul
・ Spring Cloud Netflix Hystrix
・ Spring Cloud Netflix Hystrix Dashboard
・ Spring Cloud Netflix Hystrix Stream
・ Spring Cloud Netflix Turbine
・ Spring Cloud Netflix Turbine Stream
- 5. © 2019 NTT DATA Corporation 5
Spring Cloud Netflix がどうなる?
・ Spring Cloud Netflix Eureka Client
・ Spring Cloud Netflix Eureka Server
・ Spring Cloud Netflix Archaius
・ Spring Cloud Netflix Ribbon
・ Spring Cloud Netflix Zuul
・ Spring Cloud Netflix Hystrix
・ Spring Cloud Netflix Hystrix Dashboard
・ Spring Cloud Netflix Hystrix Stream
・ Spring Cloud Netflix Turbine
・ Spring Cloud Netflix Turbine Stream
メンテナンスモードになることがアナウンスされた。
(脆弱性・バグ対応と必要に応じてPull Request対応する。)
- 6. © 2019 NTT DATA Corporation 6
アプリはそのままでもよいの?
メンテナンスモードとなっているプロダクトは、Greenwichで最後になる可能性が高い。
(要するに、GreenwichがEOLするとサポートされなくなる。)
サポートが必要なら移行するしかない!
(移行にも時間がかかるので早めの準備が大切になる。)
Hoxtonとは?
Spring Cloud における Greenwich の次のリリーストレインとなる。
今回の移行パスとして新たに紹介するライブラリがproduction readyな状態で含まれる予定である。
出典: Spring Cloud (GitHub)
<https://github.com/spring-cloud/spring-cloud-release/milestone/68>
- 7. © 2019 NTT DATA Corporation 7
次ページ以降は提供されているデモアプリをベースに紹介していきます。
デモアプリ
出典: Spring Cloud Netflix Demo <https://github.com/OlgaMaciaszek/spring-cloud-netflix-demo>
デモアプリのuser-service/pom.xmlの
<repository>の設定に誤りがある。
以下の移行パスは示されたが、デモアプリでは提供されていなかったので説明はオリジナルである。注意事項②:
Spring Cloud Netflix Archaius Spring Cloud Config Server
Spring Cloud Netflix Hystrix Stream
+ Spring Cloud Netflix Turbine
+ Spring Cloud Netflix Hystrix Dashboard
Micrometer + Prometheus
注意事項①:
Spring I/O 2019の登壇者
<id>spring-snapshots</id>
<name>Spring Snapshots</name>
<url>https://repo.spring.io/libs-snapshot-local</url>
<snapshots>
<enabled>true</enabled>
</snapshots>
<releases>
<enabled>false</enabled>
</releases>
一部にSNAPSHOTのリポジトリ
を参照する必要があった。
- 8. © 2019 NTT DATA Corporation 8
Client-side Load Balancing
により振り分ける。
Client-side Load Balancing
により振り分ける。
マイクロサービスの基本構成
(デモアプリの範囲)
Micro Service
Micro Service
Micro Service
API Gateway
SCN Zuul
Micro Service
External Config
SCN Archaius
Monitoring
SCN Turbine
Discovery&Registry
Server
SCN Eureka Server
SCN Histrix Dashboard
SCN Eureka Client
SCN Ribbon Client
SCN Eureka Client
SCN Ribbon Client
SCN Histrix
SCN Histrix
Micro Service
SCN Eureka Client
SCN Ribbon Client
SCN Histrix
Micro Service
SCN Eureka Client
SCN Ribbon Client
SCN Histrix
リトライ上限等の条件判断により
fallback処理が実行される。
エラー率等の条件判断により
サーキットがオープンされている。
共通系
サーキットがクローズされている。
- 9. © 2019 NTT DATA Corporation 9
Spring Cloud Netflix Ribbon Spring Cloud Load Balancer
※ pom.xmlの修正も忘れずに!
アノテーションを切り替えるだけでよい。
マイクロサービス インスタンス向け マイクロサービス インスタンス向け
ReactiveなWebClientにも対応できる。
Spring Cloud Netflix Eureka Spring Cloud Zookeeper???
セッションの中で Spring Cloud Netflix Eureka は今回のメンテナンスモードの対象ではないが、
Spring Cloud Zookeeperへスムーズな移行ができるようにならないかを検討していると余談があった。
(上記の Spring Cloud Netflix Ribbon から Spring Cloud Load Balancer への移行のようなスムーズさ)
- 10. © 2019 NTT DATA Corporation 10
Spring Cloud Netflix Zuul Spring Cloud Gateway
※ pom.xmlの修正も忘れずに!
Spring Cloud Netflix Zuul インスタンス向け Spring Cloud Gateway インスタンス向け
@がなくなる。
Javaでもルートを実装できる。
なお、Spring Cloud Netflix Zuul では暗黙的にルートを検出することもできたが、
セキュリティ上の問題もあり、Spring Cloud Gateway では明示的にルートを定義させる。
- 11. © 2019 NTT DATA Corporation 11
Yamlでもルートを設定できる。
Spring Cloud Netflix Zuul Spring Cloud Gateway
Spring Cloud Netflix Zuul インスタンス向け Spring Cloud Gateway インスタンス向け
※ pom.xmlの修正も忘れずに!
- 12. © 2019 NTT DATA Corporation 12
Spring Cloud Netflix Hystrix Spring Cloud Circuit Breaker
+ Resilience4J
マイクロサービス インスタンス向け マイクロサービス インスタンス向け
Resilience4Jのプロパティを設定している
※ pom.xmlの修正も忘れずに!
出典: Spring Blog
<https://spring.io/blog/2019/04/16/introducing -spring-cloud-circuit-breaker>
様々なサーキットブレーカに対応している
抽象化クラスのライブラリである
Spring Cloud Circuit Breakerとは?
@がなくなる。
- 13. © 2019 NTT DATA Corporation 13
Spring Cloud Netflix Hystrix Spring Cloud Circuit Breaker
+ Resilience4J
マイクロサービス インスタンス向け マイクロサービス インスタンス向け
※ pom.xmlの修正も忘れずに!
@HystrixCommandとfallback時の実行メソッドだけで済んでいたが、
TimerとCircuitBreakerオブジェクトを用意して、Timerの記録中に
CircuitBreaker経由で処理を実行することが必要となった。
またfallback時の挙動として、処理中の例外が発生した場合には
fallback時の実行メソッドを呼び出すことが必要となった。
- 14. © 2019 NTT DATA Corporation 14
マイクロサービス インスタンス向け
(Histrix Stream)
Spring Cloud Netflix Hystrix Stream
+ Spring Cloud Netflix Turbine
+ Spring Cloud Netflix Hystrix Dashboard
Micrometer + Prometheus
Turbine + Hystrix Dashboardインスタンス向け
マイクロサービス インスタンス向け
(Micrometer)
※ 各システムが利用している
監視ツールに統合させる。
Micrometerはmetrics情報を収集し、
監視ツールにエンドポイントを提供する。
なお、Prometheusの説明は割愛する。
※ pom.xmlの修正も忘れずに!
出典: Spring Boot Guide
<https://docs.spring.io/spring-
boot/docs/current/reference/htmlsingle/#
production-ready-metrics>
Amazon
CloudWatch
等でもできる。
- 15. © 2019 NTT DATA Corporation 15
Spring Cloud Netflix Archaius Spring Cloud Config Server
※ 各マイクロサービスにプロパティ
を配布して起動時にロードさせる。
※ 各マイクロサービスがプロパティ値を取得
するためのエンドポイントを提供する。
マイクロサービス インスタンス向け
(Spring Cloud Config Client)
Spring Cloud Config Server インスタンス向け
Spring Cloud Netflix Archaius インスタンス向け
Spring Boot 起動時に指定先から
指定プロファイルのプロパティを取得する。
-Dspring.profiles.active=”dev”等で
bootstrap.ymlの定義を切り替えができる。
プロパティの格納先を指定する。
インスタンスを起動する。
どうしてもSpring Cloud Netflix Archaiusと同様に利用したい場合は、
Spring Cloud Config Serverのインスタンス上にアプリを作成もできる。
(プロパティを読み込み、そのプロパティをレスポンスとして返すアプリ等)
※ pom.xmlの修正も忘れずに!
- 16. © 2019 NTT DATA Corporation 16
・ SCN Ribbon ☞ SC Load Balancer (2.1.2.RELEASE)
・ SCN Zuul ☞ SC Gateway (2.1.2.RELEASE)
・ SCN Hystrix ☞ SC Circuit Breaker (0.0.1.BUILD-SNAPSHOT)
・ SCN Turbine ☞ Micrometer (1.1.5.RELEASE)
・ SCN Archaius ☞ SC Config Server (2.1.3.RELEASE)
移行パスになるPivotal製品のリリース状況は?
2019/06/24現在
- 17. © 2019 NTT DATA Corporation 17
マイクロサービス開発の一端を担うプロダクトは
群雄割拠、まさに戦国時代・・・
Netflixココ
出典: CNCF Landscape <https://landscape.cncf.io/images/landscape.pdf>