ドイツはベルリンで開催された、microXchg 2016カンファレンスにて、Rick Buskens氏は“Microservice Deployment Pipelines with Spinnaker”と題したプレゼンをし、Netflixが考案した継続的デリバリプラットフォームであるSpinnakerに関して、同社とGoogleが協力していることについて説明をした。Spinnakerは安全で予測可能なマイクロサービスの配置を複数のクラウドプロバイダをまたいで提供する。
Googleでインフラ開発者のエンジニアリングマネージャを務めるBuskens氏はGoogleがNetflixが開発しているSpinnakerに興味を持っている理由について話した。Netflixはマイクロサービスアーキテクチャを使って動画ストリーミングプラットフォームを構築していることはよく知られている。このアーキテクチャに関連するモジュールの数を考えると、Netflixは頻繁にコードを配置している。
マイクロサービスの失敗はユーザエクスペリエンスの劣化に繋がる。それゆえ、安全に配置するのは重要なことだ。Netflixは安全な配置を保証することについて大きな経験を有している。GoogleはNetflixと協業し、安価で幅広く使われる継続デリバリツールを作ることが目的だ。
継続的デリバリに取り組むことに躊躇している人がたくさんいることを知っています。複雑だからです。また、クラウドプロバイダを選択することにも躊躇しています。ロックインが怖いからです。したがって、Googleでは、クラウドをまたがって、信頼性のある配置を実行できる優れてツールを提供しようと考えています。
Spinnaker[のミュニティ]と共に働くことで、私たちはこの分野のツールのスタンダードを確立したいと考えています。
配置を安全に実行するのが難しいのは‘密封されていない’手動の作業だからだ。そして、開発チームと運用チームの中で責任が分散されるのでさらに複雑になる。これによって、今、何が配置されているのか不確実になり、エラーが発生しやすくなる。また、配置が失敗すれば、配置対象を開発していない人の介入が必要になる。
Buskens氏によれば、継続的デリバリ(CD)は、安全性に関するリスクを軽減する。CDの原則には、すべての変更の段階化、プロダクションに配置できるかどうかの検証、自動化、停止の回避、配置の信頼性と予測性の最大化が含まれる。これらの原則は、変化しないイメージ(VMDKやAMIのようなサーバイメージ、Dockerとrktのようなコンテナ)のような技術を使って構成がぶれるのを防ぎ、特定の環境に限定された配置ステップを作ったり、ブルー/グリーン配置のような配置戦略を提供する。また、テストとフィードバックのループの中から生まれる開発のシグナルとも連携する。
NetflixがSpinnakerを開発したのは、上述した問題をビルドパイプラインを作成、管理することで対処するためだ。Spinnakerはクラウドのための継続的デリバリプラットフォームであり、NetflixのOSSであるAsgardの代替となる。Spinnakerにはビルドの成果物(例えば、Jenkinsのような継続的統合ツールでビルドされたパッケージ)を入力し、対象の環境向けのイメージを作成する。配置のステージ(テスト、検証など)を提供する分割不可能なワークフローからプロダクションゲード(‘プロダクションへのプッシュ’のような)をつなぐのがパイプラインだ。これらのパイプラインは継続的デリバリのフローを作るために連結されることもある。
Spinnakerの中核のコンセプトのうち、‘サーバグループ’は、‘安全で負荷が分散された耐障害性のあるマイクロサービス’であり、基本的な構成情報とロードバランサ、セキュリティグループ、マシンタイプ、キャパシティとレプリケーションの戦略を含む。‘クラスタ’は、サーバグループの論理的な集合だ。そして、‘アプリケーション’が、クラスタの論理的なグループになる。配置では、イメージのロールアウト、トラフィックのカットオーバー、必要であれば、ロールバックを行う。また、Spinnakerはプラガブルな配置戦略も提供する。ブルー/グリーンや‘ハイランダー’、カナリアリリースなどだ。
重要なのはSpinnakerは[Netflixでの]大規模なアプリケーション配置の経験から生まれたということです。どのように動作するか、どのようにスケールするか知っています。ベストプラクティスが埋め込まれているのです。
Spinnakerのひとつのパイプラインは構成情報とステージで構成される。構成情報には、トリガーやパラメータ、通知が含まれる。ステージは‘ステージングにプッシュする’というような‘コンテキストを意識したオペレーション’だ。パイプラインは拡張も再利用もでき、上位のCI(例えばJenkins)と連結することもできる。
Spinnakerは現時点で、複数のクラウドプロバイダをサポートしている。Amazon Web Services、Microsoft Azure、Cloud Foundry、Google Compute Engineだ。
Googleでは、Spinnakerは顧客にDevOpソリューションを提供するときに使えるのではないかと考えています。マルチクラウドソリューションです。ソフトウエアを素早く信頼できる形で配置するために、私たちが確保したいの適切なツーリングとインフラであり、正しいプロセスです。
Spinnakerの‘clouddriver’マイクロサービスを使えば、他のクラウドプロバイダも追加できる。
SpinnakerはNetflixによって2015年11月16日にオープンソース化された。Netflixではプロダクションで使われている。コードはGitHubで公開されている。SlackチャンネルとStackOverflowのタグもある。ロードマップも近日公開予定。素早く検証したいなら、‘ワンクリック’Google Cloud Launcher Spinnakerプラットフォームも使える。チュートリアルもspinnaker.ioとcloud.google.com/solutionsで確認できる。
Rick Buskens氏の公演“Microservices Deployment Pipelines with Spinnaker”はYouTubeで視聴できる。
Rate this Article
- Editor Review
- Chief Editor Action