カナリアリリースとは?由来やブルーグリーンデプロイメントとの違いなどを解説!

この記事では『カナリアリリース』について、以下の内容を図を用いてわかりやすく解説します。

  • カナリアリリースとは
  • カナリアリリースの流れ
  • カナリアリリースの由来
  • ブルーグリーンデプロイメントやローリングアップデートとの違い
  • カナリアリリースのメリットとデメリット

カナリアリリースとは

カナリアリリースとは

カナリアリリース(Canary Release)は、ソフトウェアやサービスの新バージョンをリリースする際に、全体に一度に反映せず、一部のユーザーやリクエストだけに新バージョンを提供する手法です。

カナリアリリースは、リスクを最小限に抑えつつ新機能を安全にリリースすることができるのが特徴です。新バージョンで問題が発生した場合には、迅速にロールバック(旧バージョンに戻す)が可能であるため、本番環境で動作確認を行いながら確実にリリースを進めることができます。

カナリアリリースは、「カナリーリリース」や「カナリーデプロイメント」や「カナリーテスト」とも呼ばれています。

カナリアリリースの流れ

カナリアリリースの具体的な流れを以下に示します。

  • 一部のユーザーに新バージョンを提供する
    • 例えば、全ユーザーの1%〜10%だけに新バージョンをアクセスさせます。
  • ログやモニタリングツールで動作を確認する
    • 新バージョンに不具合がないかをチェックします。
  • 徐々に範囲を拡大する
    • 問題が確認されなければ、対象範囲を段階的に広げ、最終的には全ユーザーに展開します。
  • 問題が発生した場合にロールバックする
    • 問題が発生した場合は、すぐに旧バージョンに戻します。

旧バージョンと新バージョンの振り分け方法は様々な方法があります。例えば、ロードバランサーを用いる場合は、一般的にユーザーごとの振り分けではなくリクエストごとの振り分けになります。最初は全リクエストの1%〜10%だけに新バージョンに振り分けます。新バージョンで問題が起きないことを確認したら、段階的に新バージョンの割合を増やしていきます。

カナリアリリースの由来

カナリアリリースの名前は、炭鉱における「カナリア」の使用に由来しています。

かつて炭鉱では、有毒ガス(一酸化炭素など)が発生していないかを確認するためにカナリアを連れて行きました。カナリアは人間よりもガスに敏感で、ガス漏れがあるといち早く反応します。このおかげで、炭鉱員は危険を察知し、早めに避難することができました。

この「先行して危険を察知する」という考え方をソフトウェア開発にも応用したのが「カナリアリリース」です。新バージョンにアクセスしてテストに参加する一部ユーザーを、ガス漏れを察知するカナリアに見立てて、「カナリアリリース」という名前が付けられています。

カナリアリリースとブルーグリーンデプロイメントとローリングアップデートの違い

カナリアリリースとブルーグリーンデプロイメントとローリングアップデートとの違いを以下に示します。

比較項目カナリアリリースブルーグリーンデプロイメントローリングアップデート
手法一部のユーザーやリクエストに新バージョンを提供し、段階的に展開する2つの環境(ブルー環境とグリーン環境)を切り替えて一度にリリースする全インスタンスを段階的に新バージョンに切り替える
リリース対象最初は一部のユーザーやリクエスト。問題がなければ全体へ拡大する全ユーザー全ユーザー
安全性の確認一部のユーザーやリクエストで動作確認を行いながら、公開範囲を広げる切り替え前に新環境で動作確認を行い、切り替え後も監視する更新中に段階的に動作確認を行う
ロールバックの方法問題発生時は新バージョンへの振り分けを止め、対象範囲を旧バージョンに戻す問題が発生した場合、アクセス先を旧環境へ切り戻す問題が発生した場合、更新したインスタンスを段階的に旧バージョンに戻す
適しているケース高リスクの新機能や変更を段階的にリリースし、安全性を確認したい場合アクセス先をまとめて切り替え、全体に新バージョンを展開したい場合サービスの停止時間を抑えつつ、サーバーやコンテナを順番に更新したい場合

上記の表から分かるように、カナリアリリースは、新バージョンを一部のユーザーやリクエストに限定して提供し、問題がないかを確認しながら、段階的に適用範囲を広げる方法です。

ブルーグリーンデプロイメントは、2つの環境を切り替えて一度に新バージョンをリリースする手法です。

ローリングアップデートは、インスタンス(アプリケーションを動かすサーバーやコンテナなど)を段階的に新しいバージョンに切り替える方法です。

あわせて読みたい

ブルーグリーンデプロイメントとローリングアップデートについては、以下の記事で詳しく説明しています。興味のある方は下記のリンクからぜひチェックをしてみてください。

カナリアリリースのメリットとデメリット

カナリアリリースのメリットとデメリットを以下に示します。

メリット

  • 本番環境でのテストが可能
    • 開発環境では見つからなかった不具合も、本番環境での小規模テストにより発見できます(アプリケーションが本番環境に公開されると、開発環境では予測できなかった不具合が発生することがあります)。
    • これが、カナリアリリースの最大のメリットです。
  • 問題があればすぐに元に戻せる
    • 旧バージョンと新バージョンを並行稼働しているため、新バージョンでの問題発生時に迅速に旧バージョンへロールバックできます。
  • 稼働停止時間がない
    • 切り替えは並行稼働中に行われるため、システムの停止が発生しません。

デメリット

  • 追加コストが発生
    • 現バージョンと新バージョンを同時に稼働させるため、サーバーのリソースやコストが増加します。
  • 時間と労力がかかる
    • 本番環境での小規模テストを行いながら段階的にリリースするため、全ユーザー公開までに時間と手間がかかります。

本記事のまとめ

この記事では『カナリアリリース』について、説明しました。

カナリアリリースは、ソフトウェアやサービスの新バージョンを安全にリリースする手法です。一部のユーザーやリクエストに新バージョンを段階的に提供し、問題がないかを確認しながら最終的に全体へ展開します。

  • 由来
    • 炭鉱でのカナリア使用にヒントを得たリスク軽減の考え方。
  • ブルーグリーンデプロイメントとの違い
    • カナリアリリースは徐々に安全性を確認し、ブルーグリーンは即時切り替えが特徴。
  • メリット
    • 本番環境での小規模テストが可能、迅速なロールバック、稼働停止時間なし。
  • デメリット
    • コスト増加や時間・労力がかかる点に注意が必要。

お読み頂きありがとうございました。

スポンサーリンク