Google Cloud Platform

Spinnaker 1.0 : マルチクラウド対応の継続的デリバリ プラットフォーム

Google はたくさんのコードをデプロイしています。数千ものサービスのために(そのうち 7 つは世界中で 10 億人以上のユーザーを抱えています)、1 日に数万回もデプロイを行っているのです。その過程で、私たちはソフトウェアを短時間でデプロイする方法のベスト プラクティスを学びました。自動リリース、イミュータブル インフラストラクチャ、漸進的ロールアウトと高速ロールバックなどです。

Spinnaker を作った Netflix のチームと私たちが共同作業を始めたのは 2014 年のことです。そのとき私たちは、このリリース管理プラットフォームに対して、安全で信頼できるリリースを頻繁に行うために私たちが考えていた原則の多くが具現化されていると感じました。

そのポテンシャルに目を見張った私たちは、Spinnaker を世に出すために Netflix と共同作業を行い、2015 年 11 月にオープンソース化しました。その後、Spinnaker コミュニティは大きく成長し、今では Microsoft や Oracle、Target、Veritas、Schibsted、Armory、Kenzan などの企業がコントリビューターに名を連ねています。

私たちはこのたび、Netflix や Waze、Target、Cloudera などの企業が本番環境で使っている、オープンソースでマルチクラウド対応の継続的デリバリ プラットフォーム、Spinnaker 1.0 をリリースしました。併せて、Spinnaker 自体のデプロイを簡素化する新しいオープンソース CLI(コマンドライン)ツールの Halyard も公開しています。

この投稿では、ソフトウェア開発プロセスで Spinnaker が果たす役割について紹介します。


なぜ Spinnaker なのか

企業向けの優れたリリース管理ソリューションと呼ぶにふさわしい Spinnaker の機能と今回の新機軸を見ていきましょう。

オープンソースとマルチクラウド デプロイ
私たち Google Cloud Platform(GCP)チームはオープン クラウドを支持しています。そして Spinnaker も、リッチな UI ダッシュボードも含めて 100 % オープンソースです。ローカル、オンプレミス、クラウドのいずれの環境にもインストールでき、仮想マシン(VM)と Kubernetes のどちらでも実行できます。

Spinnaker は、リリース パイプラインをターゲット クラウド プロバイダから分離することでデプロイ プロセスを合理化します。これにより、プラットフォームの完全なマイグレーションや、複数のクラウドへの同一アプリケーションのデプロイを単純化できます。

Spinnaker には組み込みで Google Compute Engine、Google Container Engine、Google App Engine、AWS EC2、Microsoft Azure、Kubernetes、OpenStack の各サポートが含まれています。また、Spinnaker コミュニティがサポート対象を毎年追加しており、近く Oracle Bare Metal と DC/OS がサポートされます。

マルチクラウドへのリリースであれ、ベンダー ロックインの防止であれ、Spinnaker はそれぞれの企業に最適な形でアプリケーションのデプロイを支援します。

リリースの自動化

Spinnaker によるデプロイはカスタム リリース パイプラインでオーケストレートされ、パイプラインのステージには、統合 / システム テスト、サーバー グループのスピンアップ / ダウン、手動承認、一定時間の留保、カスタム スクリプトや Jenkins ジョブの実行など、ほとんど何でも組み込むことができます。

Spinnaker は、既存の継続的インテグレーション(CI)ワークフローとシームレスに統合できます。Git、Jenkins、Travis CI、Docker レジストリ、cron などのスケジューラ、さらには他のパイプラインからでもパイプラインの起動が可能です。

デプロイ戦略のベスト プラクティス

Spinnaker はそのままの形で、カナリア リリース、Red-Black(Blue-Green)デプロイメント、トラフィック スプリッティング、シンプルなロールバックなどの高度なデプロイ戦略をサポートしています。

このようなことが実現できている 1 つの理由は、アプリケーションの変更に応じてサーバー フリート全体を再デプロイするイミュータブル インフラストラクチャにあります。これに対して実行中のマシンにアップデートを設定する従来のアプローチでは、ロールアウトが遅く、リスキーなものになるのに加え、デバッグしづらいコンフィギュレーション ドリフトが起きてしまいます。

Spinnaker では、ステージング環境の Red-Black デプロイメントや本番環境への Red-Black ローリングなど、使いたいデプロイ戦略を選択するだけで、必要な数十ものステップが水面下でオーケストレートされます。エンタープライズ級のロールアウトでも、独自のデプロイ ツールを作成したり、Jenkins スクリプトの複雑な組み合わせをメンテナンスしたりする必要はありません。

ロール ベースの認可とパーミッション

大規模企業の場合、中央の DevOps チームが管理する複数の製品分野で Spinnaker を採用することがよくあります。Spinnaker は、プロジェクトやアカウントに対するロール ベースのアクセス制御を必要とする管理者向けに、OAuth、SAML、LDAP、X.509 証明書、GitHub チーム、Azure グループ、Google グループなど複数の認証および認可オプションをサポートしています。

また、手動判定ステージのためにパーミッションを適用することもできます。人間による判定を必要とするステージを設定すると、特定の人物の承認がなければ決してリリースには進みません。

Halyard によるインストール、管理の単純化

Spinnaker 1.0 と同時に、Spinnaker の本番用インスタンスを従来よりも簡単にインストール、構成、アップグレードするための新しい CLI ツール、Halyard もリリースされました。

Spinnaker 1.0 のリリース以前は、Spinnaker を構成する個々のマイクロサービスを管理する必要がありましたが、1.0 以降はバージョンが付けられ、セマンティック バージョニングに従います。Halyard を使用すれば、最新の Spinnaker にアップグレードするときも CLI コマンドを 1 つ実行するだけで済みます。


使ってみよう

Spinnaker による高速かつ安全で、あえて言えば退屈なデプロイをぜひ体験してください。

Spinnaker の詳細や使い方は、新しい spinnaker.io サイトに詳しく掲載されています。今すぐ試してみようという方は、ここをクリックすれば、数回のクリックで Spinnaker をインストールして実行できる Google Cloud Launcher のマーケットプレイスに移動できます。

質問やフィードバック、Spinnaker コミュニティへの参加などについては、Spinnaker の Slack チャンネルにお越しください。イシューの報告は Spinnaker の GitHub リポジトリ、質問は spinnaker タグを使った Stack Overflow でも受け付けています。

その他の資料


* この投稿は米国時間 6 月 6 日、Product Manager である Christopher Sanson によって投稿されたもの(投稿はこちら)の抄訳です。

- By Christopher Sanson, Product Manager