Más contenido relacionado La actualidad más candente (20) Similar a SpinnakerとKayentaで 高速・安全なデプロイ! (20) Más de NTT Communications Technology Development (20) SpinnakerとKayentaで 高速・安全なデプロイ!4. Microservices
Team A
Service A
Team B
Service B
Team C
Service C
I/F
Ruby
Chef
Document
Python
Ansible
Document
Java
Puppet
Document
各チームが開発するサービスはI/Fを通じて他サービスと連携を行うため、
I/Fをあわせておけば各チームの開発方法は各チームに移譲が可能
5. Dev/Ops
Dev Team A
Service A
Dev Team B
Service B
Dev Team C
Service C
I/F
Dev
Ops
Ops Team
Ruby
Chef
Document
Python
Ansible
Document
Java
Puppet
Document
DevとOpsが分かれていると
Opsは運用しきれない...
15. Spinnakerとは
● マルチクラウド上でContinuous Delivery(CD)を実現するツール
● Imageの作成やサーバグループの作成、デプロイ、条件に応じたスケールなどをパ
イプラインとして組むことでマルチクラウドの上でMicroservicesを実現するためのデ
プロイツール
● CDツールでありCIツールやPaaSではない
● Netflix社が開発し、OSSとして公開されているが現在はGoogleやPivotal,
Microsoft, Mirantisなども開発に参加している
● 公式ドキュメント以外の情報を得るためにはコミュニティに頼るのが現状
● また、Spinnaker自体がMicroservicesでありちょっと複雑
16. Blue / Green Deployment
SpinnakerはBlue/green(Red/black)デプロイメントを実現する
Green (最新版)に問題があった場合はBlue(旧版)にRollbackすることも可能
https://www.spinnaker.io/concepts/
19. SpinnakerとGCPを利用したCI / CD Pipline
Integration Staging Canary Production
JenkinsDeveloper
build
register trigger
trigger
push test
test
deploy & test
Manager
approve
22. Canaryとは
Canary = カナリア = 鳥
炭鉱のカナリア
炭鉱においてしばしば発生する毒ガス早期発
見のための警報として使用された。本種はつ
ねにさえずっているので、異常発生に先駆け
まずは鳴き声が止む。つまり危険の察知を目と
耳で確認できる所が重宝され、毒ガス検知に
用いられた
(カナリア - Wikipedia より)
CC BY-NC 2.0
David & Angie - Canary in a Coal mine... wear a mask!
https://www.flickr.com/photos/studiomiguel/3946174063
25. Kayenta [1]
2018年4月にNetflixとGoogleが共同でOSS化したAutomated Canary Analysis (ACA)の
基盤。[2][3]
実際にはKayentaはSpinnakerの一機能としてACAの動作を行う
基準(Baseline)と新バージョン(Canary)から取得するメトリクスを比較することで、メトリク
スに差分(上、下、上下)にブレがないかを確認することで、新バージョンに問題がないか
を分析することができる。
メトリックスの取得に使えるのは現在 Stackdriver, Prometheus, Datadog
参考
● [1] : https://github.com/spinnaker/kayenta
● [2] : Automated Canary Analysis at Netflix with Kayenta
● [3] : Introducing Kayenta: An open automated canary analysis tool from Google and Netflix
26. Canary Analysis Configuration
● Analysis Type
○ Real Time or Retrospective
● Analysis Config
○ Config Name (詳細は次ページ)
○ Delay, Interval, Lookback Type
● Metrics Scope
○ Baseline の設定
○ Canaryの設定
○ Step
○ Lifetime
○ Resource Type
● Scoring Thresholds
● Execution Options
● Notifications
29. まとめ - パイプラインの自動化 -
Pros
● ソースコードの変更を契機にビルド〜テストまでのパイプラインを自動化
● カナリアリリースで小さく試すことで問題をいち早く発見
● 最新バージョンに問題があった際は前バージョンに切り戻し可能
Cons
● Spinnakerの管理が少々複雑
● 公式の情報以外があまりない
● Pipelineの作成がGUIベース(pipline-templates はあるけど...?)
● 現在Spinnakerと連携可能なCIツールがJenkinsとTravisCIしかない
● Kayentaで使えるメトリクスが限られている
41. サービス間のlatencyなどのメトリックとトレースを収集し、さまざまなバックエンドにエクス
ポートすることができるライブラリ。
Googleの社内で使われていたものを書き直したベンダーニュートラルなOSS
Go, Java, C++, Ruby, Erlang, Python, PHPに対応
ExporterにはAWS X-Ray, Stackdriver, Jaeger, Datadog, Prometheus, Zipkinが利用可能
※言語によって対応しているものしていないものがあるので注意
OpenCensus[1]
[1]: https://opencensus.io/
42. 分散トレーシングの導入にあたって
1. 何をしたいのかを明確にする (Traging or Traginc + Logging, etc...)
2. トレースしたい対象の処理(REST, DB, gRPC, etc...)を明確にして対応を調べる
3. 利用しているプログラミング言語に対応しているかを調べる
4. 他の分散トレーシングツールとの互換性を考える
5. データストアについて考える (データをどれだけ、どの期間持つかなど )
43. Stackdriver Trace[1]
Google Cloud Platformが提供する分散トレースシステム
アプリケーション内のリクエストのトレースや、
ロギングなどを行ったのを右図のように結果として
表示ができる
OpenCensusのライブラリを使ってデータを転送
※Zipkinのトレーサーからデータを送信することも可能 [2]
GCPを使っている場合は無料で利用可能
[1]: https://cloud.google.com/trace/
[2]: https://github.com/openzipkin/zipkin-gcp
44. まとめ - サービス間の問題把握 -
Pros
● サービスの挙動やレイテンシを把握できる
Cons
● トレーサーごとの互換性などを
● プログラミング言語のライブラリごとにできることが異なる
● トレースしたデータの取り扱いが難しい
● そもそも過渡期なので選択が難しい ...