SlideShare une entreprise Scribd logo
1  sur  30
SpringOne 2GX 2015の報告会
・ Cloud Native: PaaS編
・ Spring Cloud at Netflix
Tommy Ludwig
@TommyLudwig
1
2
PLATFORM AS A SERVICE
An exploratory look at Lattice as an example of a PaaS
いくつかの前提
• 信頼できないコンポネントで、信頼できるシステムを構築する
必要がある
– インスタンス単位では100%の稼働率は不可能だろう
• 運用コストは開発コストより何倍も大きい
– 開発が数ヶ月かかったプロダクトは数年間以上運用するだろう
– 継続的デリバリーでコスト削減
– Platformがあると運用コストを激しく削減できる
3
PaaSを始めよう
• PaaSを使ってみたーい!
• でも、BOSHやCloud
Foundryをローカルにインス
トールしようと思っても…
– なかなか難しい
– 手間がかかる
4
そのためのLattice
• http://lattice.cf/
• 簡単に始められる
• 負担が少ない
• Cloud Foundryの多くのコン
ポーネントをそのまま利用
• ただし、欠けているところも
あります
– 後で説明します
5
6
LET’S DO IT LIVE!
Lattice demo
Latticeをインストールしましょう
必要なもの
• Linux or OSX
• Vagrant 1.7+
• Virtual Box
• Lattice release
• ltc CLI
Guide
• HPにあるGetting started
• GitHubにあるREADME
7
Latticeのセットアップの流れ
• GitHubのリリースページからlattice-bundleをダウンロード
– https://github.com/cloudfoundry-incubator/lattice-release/releases
• CLIであるltcをダウンロード
• ltc target local.lattice.cf
8
$ curl -O http://receptor.local.lattice.cf/v1/sync/linux/ltc
# 上がLinux用 -or- 下がOSX用
$ curl -O http://receptor.local.lattice.cf/v1/sync/osx/ltc
# then:
$ chmod a+x ltc
# 希望であれば、ltcをパスに入れたらさらに使いやすい
Deploy to Lattice
Docker hubから
• Goで書かれた簡単なサンプル
アプリをデプロイ
• http://lattice-app.local.lattice.cfからアクセス
Docker hubにないプロジェクトをデ
プロイしたい場合はBuilding and
Launching Droplets
9
ltc create lattice-app cloudfoundry/lattice-app
Monitoring / Operations
• ログをtail
–
– lattice-appの各インスタンスのログを収集して表示する
• 稼働中のアプリを確認
–
• スケール(アップ・ダウン)
– #インスタンスを3つに変更
• アプリ詳細
–
10
ltc logs lattice-app
ltc list
ltc scale lattice-app 3
ltc status lattice-app
Visualization(可視化)
• CLIで
–
–
• 見づらくないですか?!
11
ltc visualize
ltc cells
X-Ray登場
• http://xray.cf/
• Latticeのreceptorに向けて、同じデータをキレイな可視化
12
失敗テスト
• lattice-appのインスタンスを10個までスケール
• http://lattice-app.local.lattice.cfに数回アクセス
– Indexが変わることを確認
• http://lattice-app.local.lattice.cf/exitに数回アクセス
– アクセスしたインスタンスはシャットダウンする
• X-Rayなどで監視しながらhttp://lattice-app.local.lattice.cfをリフレッシュし
続ける。
– インスタンスいくつか落ちたのにもかかわらずエラーなくページがロード
– 10秒くらいで落ちたインスタンスがもう一回立ち上がっている
13
ltc scale lattice-app 10
Lattice cluster
• ローカルはすごく簡単で便利ですが、一つのVMに過ぎない
ローカルには限界があります。
• ClusterをデプロイしたいならTerraformが必要です。
• 現在、最新版0.6.0はAWSしか対応していない。
• 0.5.0以前はAWS、DigitalOcean、Google Compute Engine、
Openstackを対応していた。
• ここのドキュメンテーションを参考にしてください。
14
最後にCloudFoundryとの比較
Cloud Foundry
• マルチテナント
• 全コンポネントがHA
• セキュリティの設定豊富
• ローリングデプロイ
• Data serviceを提供している
Lattice
• シングルテナント
• コンポネントによりHA
• セキュリティは少ない
• Red/blackデプロイが可能
• Data serviceがない
15
本番にはおすすめしない
SPRING CLOUD @ NETFLIX
16
目次
• サービスディスカバリ (Eureka)
• Client側ロードバランシング (Ribbon)
• サーキットブレーカー (Hystrix)
• ストリーム統合(Turbine)
• メトリックス
– Spectator
– Atlas
17
18
サービスディスカバリ (Eureka)
• サービスディスカバリ (Eureka)
– Spring Boot + Netflix Eureka (by 谷本さん:@cero_t)
• Server
– Dependency org.springframework.cloud:spring-cloud-starter-eureka-server
– Annotation @EnableEurekaServer
• Client
– Dependency org.springframework.cloud:spring-cloud-starter-eureka
– Property eureka.client.serviceUrl.defaultZone: http://localhost:8761/eureka/
– Annotation @EnableEurekaClient / @EnableDiscoveryClient
Eureka dashboard
19
更に便利に使いましょう
• spring-cloud-netflix-contrib – 今後Spring Cloud Netflixに移行する予定の
Netflix OSS。
– Springの標準@EventListenerでステータス変更通知を受け取れる
– EurekaStatusChangedEvent
– RESTサービス以外にも便利
• 例えば、MessagingサービスがOUT_OF_SERVICEになった時、そこへのメッセージを止める
• EurekaはただのSpring Bootアプリなので好きなだけカスタマイズできる
– 自社の運用に便利なエンドポイントが追加できる
• EurekaサーバにHystrixのダッシュボードを追加したり、継続的デリバリー
との連携したり、メトリックスのダッシュボードなど
20
Client側ロードバランシング (Ribbon)
• RestTemplateがAuto-configurationでRibbonを使用
• Eurekaに登録されたサービスIDを利用し、実際のホスト名・ポート
が知らなくていい。例えば、membershipというサービスを呼ぶ時:
• 様々なロードバランシングのルール:
– RoundRobinRule ←デフォルト
– AvailabilityFilteringRule
– WeightedResponseTimeRule
• デフォルトでGETリクエストは失敗した場合、リトライされる
– もちろん、コンフィグで変えられます。
21
サーキットブレーカー (Hystrix)
• 障害し出したら関係するシステムまで影響し悪循環が始まる
– Hystrixを通して、問題があるシステムを呼ばず悪循環を止められる
• 注意:Exceptionが発生しても、正常時処理の代わりにできる
ことが特にないサービスは使えない(例:ペイメントサービス)
• 追加するのは簡単
– Dependency org.springframework.cloud:spring-cloud-starter-hystrix
– Annotation @EnableHystrix / @EnableCircuitBreaker
– 守りたいメソッドに @HystrixCommand(fallbackMethod = “myFallback”)
– myFallback(…)というフォールバックのメソッドを実装
22
Hystrix
• メソッドのtimeoutをコンフィグできる
– @HystrixProperty(name = “execution.isolation.thread.timeoutInMilliseconds”,
value = “5000”)
• 注意:@HystrixCommandは別のthread poolで実行される
– なので、デフォルトでThreadLocalなどを使ってはいけない
– @HystrixProperty(name = “execution.isolation.strategy”, value =
“SEMAPHORE”)
• これで解決できますが、@HystrixCommandが実行中にスレッドがブロックされます
• 日本語資料:NetflixのHystrixにも使われるCircuit Breaker patternを
調べてみた
23
Turbine
• Hystrixの複数Streamを統合する
– あるアプリの各インスタンスの/hystrix.streamを/turbine.streamに
– Eureka Serverからダッシュボードを提供すると良いでしょう。
• ちなみに、Netflixではインスタンスが多すぎてあまり使われ
ないらしいです。
– その代わりに、メトリックスとして同じ情報を提供します。
24
Hystrix dashboard
25
Metrics
• Spectator
– Spring Cloud Netflixでの対応はBrixton.M3から
– Java 8+での使用、従来のメトリックス・ライブラリServoがdeprecated
– AutowiredでRegistryをインジェクト
– 使い方:
• 注意事項
– タグ名がユニークになるように作ってください。ユーザ名などを避けるべき
• そうしないとタグの数が爆発する恐れがある
• Spring Boot Actuatorの/metricsで見られます。
26
Atlas – メトリックス可視化
• Atlas
• URLでqueryを投げてグラフを表示をするという仕組み
• そのURLをすぐに共有できて、他の人も同じものが見れます
• 例えば
• 情報元
27
/api/v1/graph?
e=2012-01-01T00:00
&q=
name,sps,:eq,
nf.cluster,nccp-silverlight,:eq,
:and,
:sum
Atlas graph
28
情報元
Lattice: A Cloud-Native
Platform for Your Spring
Applications
– Slides
– Video
– http://lattice.cf/
29
情報元
Spring Cloud at Netflix
– Slides
– Video
– Netflix OSS
– Spring Cloud Netflix
30

Contenu connexe

Tendances

Tendances (20)

[CEDEC 2021] 運用中タイトルでも怖くない! 『メルクストーリア』におけるハイパフォーマンス・ローコストなリアルタイム通信技術の導入事例
[CEDEC 2021] 運用中タイトルでも怖くない! 『メルクストーリア』におけるハイパフォーマンス・ローコストなリアルタイム通信技術の導入事例[CEDEC 2021] 運用中タイトルでも怖くない! 『メルクストーリア』におけるハイパフォーマンス・ローコストなリアルタイム通信技術の導入事例
[CEDEC 2021] 運用中タイトルでも怖くない! 『メルクストーリア』におけるハイパフォーマンス・ローコストなリアルタイム通信技術の導入事例
 
AKS と ACI を組み合わせて使ってみた
AKS と ACI を組み合わせて使ってみたAKS と ACI を組み合わせて使ってみた
AKS と ACI を組み合わせて使ってみた
 
K8s meetup containerized_cloud_foundry
K8s meetup containerized_cloud_foundryK8s meetup containerized_cloud_foundry
K8s meetup containerized_cloud_foundry
 
Cloud Foundry V2を、もうちょっと深掘りしよう
Cloud Foundry V2を、もうちょっと深掘りしようCloud Foundry V2を、もうちょっと深掘りしよう
Cloud Foundry V2を、もうちょっと深掘りしよう
 
20190722 Building handy CI with zuul and OpenStack
20190722 Building handy CI with zuul and OpenStack20190722 Building handy CI with zuul and OpenStack
20190722 Building handy CI with zuul and OpenStack
 
VSCodeで始めるAzure Static Web Apps開発
VSCodeで始めるAzure Static Web Apps開発VSCodeで始めるAzure Static Web Apps開発
VSCodeで始めるAzure Static Web Apps開発
 
知って欲しいPaaSの話
知って欲しいPaaSの話知って欲しいPaaSの話
知って欲しいPaaSの話
 
Githubを使って簡単に helm repoを公開してみよう
Githubを使って簡単に helm repoを公開してみようGithubを使って簡単に helm repoを公開してみよう
Githubを使って簡単に helm repoを公開してみよう
 
Edge Computing と k8s でなんか話すよ
Edge Computing と k8s でなんか話すよEdge Computing と k8s でなんか話すよ
Edge Computing と k8s でなんか話すよ
 
Prometheus monitoring from outside of Kubernetes
 〜どうして我々はKubernetes上のPromet...
Prometheus monitoring from outside of Kubernetes
 〜どうして我々はKubernetes上のPromet...Prometheus monitoring from outside of Kubernetes
 〜どうして我々はKubernetes上のPromet...
Prometheus monitoring from outside of Kubernetes
 〜どうして我々はKubernetes上のPromet...
 
Spring social の基礎
Spring social の基礎Spring social の基礎
Spring social の基礎
 
Wagby on Cloud Foundry
Wagby on Cloud FoundryWagby on Cloud Foundry
Wagby on Cloud Foundry
 
TungstenFabricでOpenStackとk8sをラクラク管理
TungstenFabricでOpenStackとk8sをラクラク管理TungstenFabricでOpenStackとk8sをラクラク管理
TungstenFabricでOpenStackとk8sをラクラク管理
 
バッチを Akka Streams で再実装したら100倍速くなった話 #ScalaMatsuri
バッチを Akka Streams で再実装したら100倍速くなった話 #ScalaMatsuriバッチを Akka Streams で再実装したら100倍速くなった話 #ScalaMatsuri
バッチを Akka Streams で再実装したら100倍速くなった話 #ScalaMatsuri
 
The Usage and Patterns of MagicOnion
The Usage and Patterns of MagicOnionThe Usage and Patterns of MagicOnion
The Usage and Patterns of MagicOnion
 
CyberAgent: How We Deployed Production Kubernetes Clusters on OpenStack witho...
CyberAgent: How We Deployed Production Kubernetes Clusters on OpenStack witho...CyberAgent: How We Deployed Production Kubernetes Clusters on OpenStack witho...
CyberAgent: How We Deployed Production Kubernetes Clusters on OpenStack witho...
 
Knative Lambda Runtimeを試してみた
Knative Lambda Runtimeを試してみたKnative Lambda Runtimeを試してみた
Knative Lambda Runtimeを試してみた
 
OpenStack APIを使った新しいアプリケーションモデル
OpenStack APIを使った新しいアプリケーションモデルOpenStack APIを使った新しいアプリケーションモデル
OpenStack APIを使った新しいアプリケーションモデル
 
Kubernetesの良さを活かして開発・運用!Cloud Native入門 / An introductory Cloud Native #osc19tk
Kubernetesの良さを活かして開発・運用!Cloud Native入門 / An introductory Cloud Native #osc19tkKubernetesの良さを活かして開発・運用!Cloud Native入門 / An introductory Cloud Native #osc19tk
Kubernetesの良さを活かして開発・運用!Cloud Native入門 / An introductory Cloud Native #osc19tk
 
Deploying secure service mesh for applications on k8s with using A10's Lighti...
Deploying secure service mesh for applications on k8s with using A10's Lighti...Deploying secure service mesh for applications on k8s with using A10's Lighti...
Deploying secure service mesh for applications on k8s with using A10's Lighti...
 

Similaire à SpringOne 2015 報告会 - Lattice + Spring Cloud Netflix

Whats new Apache CloudStack
Whats new Apache CloudStackWhats new Apache CloudStack
Whats new Apache CloudStack
Kimihiko Kitase
 
Jenkins User Conference 東京 2015
Jenkins User Conference 東京 2015Jenkins User Conference 東京 2015
Jenkins User Conference 東京 2015
Kohsuke Kawaguchi
 
CloudStack最新アップデート
CloudStack最新アップデートCloudStack最新アップデート
CloudStack最新アップデート
Kimihiko Kitase
 
cf-containers-broker を使ってローカル環境もサービスの恩恵をうける
cf-containers-broker を使ってローカル環境もサービスの恩恵をうけるcf-containers-broker を使ってローカル環境もサービスの恩恵をうける
cf-containers-broker を使ってローカル環境もサービスの恩恵をうける
Takeshi Morikawa
 

Similaire à SpringOne 2015 報告会 - Lattice + Spring Cloud Netflix (20)

OSC2012-Fukuoka-CloudStack-Update
OSC2012-Fukuoka-CloudStack-UpdateOSC2012-Fukuoka-CloudStack-Update
OSC2012-Fukuoka-CloudStack-Update
 
Apache Spark on Kubernetes入門(Open Source Conference 2021 Online Hiroshima 発表資料)
Apache Spark on Kubernetes入門(Open Source Conference 2021 Online Hiroshima 発表資料)Apache Spark on Kubernetes入門(Open Source Conference 2021 Online Hiroshima 発表資料)
Apache Spark on Kubernetes入門(Open Source Conference 2021 Online Hiroshima 発表資料)
 
serverless openstack 101
serverless openstack 101serverless openstack 101
serverless openstack 101
 
Cloud Foundry Container-to-Container Networking
Cloud Foundry Container-to-Container NetworkingCloud Foundry Container-to-Container Networking
Cloud Foundry Container-to-Container Networking
 
OpenStack Atlanta Summit Report: Neutron, Nova and design summit sessions
OpenStack Atlanta Summit Report: Neutron, Nova and design summit sessionsOpenStack Atlanta Summit Report: Neutron, Nova and design summit sessions
OpenStack Atlanta Summit Report: Neutron, Nova and design summit sessions
 
Whats new Apache CloudStack
Whats new Apache CloudStackWhats new Apache CloudStack
Whats new Apache CloudStack
 
ひしめき合うOpen PaaSを徹底解剖! PaaSの今と未来
ひしめき合うOpen PaaSを徹底解剖! PaaSの今と未来ひしめき合うOpen PaaSを徹底解剖! PaaSの今と未来
ひしめき合うOpen PaaSを徹底解剖! PaaSの今と未来
 
2015-07-27 Docker Introduction 〜Dockerの基礎とユースケースに関する考察〜
2015-07-27 Docker Introduction 〜Dockerの基礎とユースケースに関する考察〜2015-07-27 Docker Introduction 〜Dockerの基礎とユースケースに関する考察〜
2015-07-27 Docker Introduction 〜Dockerの基礎とユースケースに関する考察〜
 
OpenStack入門 2016/06/10
OpenStack入門 2016/06/10OpenStack入門 2016/06/10
OpenStack入門 2016/06/10
 
Jenkins User Conference 東京 2015
Jenkins User Conference 東京 2015Jenkins User Conference 東京 2015
Jenkins User Conference 東京 2015
 
OpenContrail Users Event at OpenStack Summit Paris 行ってきました
OpenContrail Users Event at OpenStack Summit Paris 行ってきましたOpenContrail Users Event at OpenStack Summit Paris 行ってきました
OpenContrail Users Event at OpenStack Summit Paris 行ってきました
 
CloudStack最新アップデート
CloudStack最新アップデートCloudStack最新アップデート
CloudStack最新アップデート
 
Qlik Cloudデータ統合:Data Gateway - Data Movementのセットアップ
Qlik Cloudデータ統合:Data Gateway - Data MovementのセットアップQlik Cloudデータ統合:Data Gateway - Data Movementのセットアップ
Qlik Cloudデータ統合:Data Gateway - Data Movementのセットアップ
 
Jjug springセッション
Jjug springセッションJjug springセッション
Jjug springセッション
 
[OracleCodeTokyo2019] Kubernetesで実現する運用自動化の新しいアプローチとは
[OracleCodeTokyo2019] Kubernetesで実現する運用自動化の新しいアプローチとは[OracleCodeTokyo2019] Kubernetesで実現する運用自動化の新しいアプローチとは
[OracleCodeTokyo2019] Kubernetesで実現する運用自動化の新しいアプローチとは
 
OpenLineage による Airflow のデータ来歴の収集と可視化(Airflow Meetup Tokyo #3 発表資料)
OpenLineage による Airflow のデータ来歴の収集と可視化(Airflow Meetup Tokyo #3 発表資料)OpenLineage による Airflow のデータ来歴の収集と可視化(Airflow Meetup Tokyo #3 発表資料)
OpenLineage による Airflow のデータ来歴の収集と可視化(Airflow Meetup Tokyo #3 発表資料)
 
2015-01-27 Introduction to Docker
2015-01-27 Introduction to Docker2015-01-27 Introduction to Docker
2015-01-27 Introduction to Docker
 
Yahoo!Japan北米DCでOCPのツボをみせてもらってきました - OpenStack最新情報セミナー 2016年5月
Yahoo!Japan北米DCでOCPのツボをみせてもらってきました - OpenStack最新情報セミナー 2016年5月Yahoo!Japan北米DCでOCPのツボをみせてもらってきました - OpenStack最新情報セミナー 2016年5月
Yahoo!Japan北米DCでOCPのツボをみせてもらってきました - OpenStack最新情報セミナー 2016年5月
 
cf-containers-broker を使ってローカル環境もサービスの恩恵をうける
cf-containers-broker を使ってローカル環境もサービスの恩恵をうけるcf-containers-broker を使ってローカル環境もサービスの恩恵をうける
cf-containers-broker を使ってローカル環境もサービスの恩恵をうける
 
今日から使えるCouchbaseシステムアーキテクチャデザインパターン集
今日から使えるCouchbaseシステムアーキテクチャデザインパターン集今日から使えるCouchbaseシステムアーキテクチャデザインパターン集
今日から使えるCouchbaseシステムアーキテクチャデザインパターン集
 

SpringOne 2015 報告会 - Lattice + Spring Cloud Netflix