DevOpsの最大の魅力は、継続的統合と継続的デリバリ(CI/CD)によってソフトウェアのデリバリを加速できることだ。ただしCI/CDでソフトウェアをリリースするには、カナリアテストを実施して、最新のパッチを本番環境でテストする必要がある。これはどこでも行われていることだが、上手に行うのは難しい。この問題を解決するため、GoogleとNetflixはカナリアテストを自動的に行うツール「Kayenta」をオープンソースとして公開した。
Google Cloudの製品マネージャーAndrew Phillips氏は、あるインタビューで、カナリアテストとは、鉱山にカナリアを持ち込んで一酸化炭素の有無を確かめたように、ユーザーの一部に新しいコードを提供して、本番環境で問題が起きないかを確認することだと説明している。通常、この作業は手動で行われ、開発者はダッシュボードでカナリアが死なないか(つまりコードに問題が起きないか)を観察する。この手法は一般的なものだが、 問題を見過ごしてしまうことも多い。
Apache 2ライセンスで公開されたKayentaは、GoogleとNetflixが共同開発したソフトウェアだ。このプログラムは、Netflixの社内カナリアシステムから生まれた。Kayentaは、問題が起こりやすく時間がかかる、 面倒なカナリアテストを手動で行う手間を減らすことで、企業のチームが製品の変更内容を素早くプッシュできるように設計されている。
Kayentaは、人気のあるオープンソースのマルチクラウド継続的デリバリプラットフォームである「Spinnaker」と連携している。これによりKayentaは、「Google Cloud Platform」、「Kubernetes」、オンプレミスサーバや、他のクラウドプラットフォームで動作するという。
これを利用すれば、企業のチームはSpinnakerのパイプラインに自動のカナリア分析ステージを簡単にセットアップできる。チームはその後、Kayentaがテストの評価に使用する指標を決定する。この指標によって、最新のコードに対して実行したカナリアテストの総合スコアが算出される。スコアが満たすべきベンチマーク値を設定すること可能だ。Kayentaはスコアを評価して、自動的にカナリアテストの成否を判定したり、人間による承認プロセスに進んだり、変更内容をロールバックさせたりすることができる。
Netflixは社内で実際にKayentaを利用している。全面的にクラウドを利用しており、早くからDevOpsを取り入れていたNetflixで利用できるとすれば、どんな組織でも試してみる価値があると言っていいだろう。筆者は、KayentaはCI/CDが企業のソフトウェア開発に取り込まれるための大きな1歩になるとみている。
この記事は海外CBS Interactive発の記事を朝日インタラクティブが日本向けに編集したものです。