この記事では『カナリアリリース』について、以下の内容を図を用いてわかりやすく解説します。
- カナリアリリースとは
- カナリアリリースの流れ
- カナリアリリースの由来
- カナリアリリースとブルーグリーンデプロイメントとの違い
- カナリアリリースのメリットとデメリット
カナリアリリースとは
カナリアリリース(Canary Release)は、ソフトウェアやサービスの新バージョンをリリースする際に、全体に一度に反映せず、一部のユーザーやリクエストだけに新バージョンを提供する手法です。
カナリアリリースは、リスクを最小限に抑えつつ新機能を安全にリリースすることができるのが特徴です。新バージョンで問題が発生した場合には、迅速にロールバック(旧バージョンに戻す)が可能であるため、本番環境で動作確認を行いながら確実にリリースを進めることができます。
補足
カナリアリリースは、「カナリーリリース」や「カナリーデプロイメント」や「カナリーテスト」とも呼ばれています。
カナリアリリースの流れ
カナリアリリースの具体的な流れを以下に示します。
- 一部のユーザーに新バージョンを提供する
- 例えば、全ユーザーの1%〜10%だけに新バージョンをアクセスさせます。
- ログやモニタリングツールで動作を確認する
- 新バージョンに不具合がないかをチェックします。
- 徐々に範囲を拡大する
- 問題が確認されなければ、対象範囲を段階的に広げ、最終的には全ユーザーに展開します。
- 問題が発生した場合にロールバックする
- 問題が発生した場合は、すぐに旧バージョンに戻します。
旧バージョンと新バージョンの振り分け方法は様々な方法があります。例えば、ロードバランサーを用いる場合は、一般的にユーザーごとの振り分けではなくリクエストごとの振り分けになります。最初は全リクエストの1%〜10%だけに新バージョンに振り分けます。新バージョンで問題が起きないことを確認したら、段階的に新バージョンの割合を増やしていきます。
カナリアリリースの由来
カナリアリリースの名前は、炭鉱における「カナリア」の使用に由来しています。
かつて炭鉱では、有毒ガス(一酸化炭素など)が発生していないかを確認するためにカナリアを連れて行きました。カナリアは人間よりもガスに敏感で、ガス漏れがあるといち早く反応します。このおかげで、炭鉱員は危険を察知し、早めに避難することができました。
この「先行して危険を察知する」という考え方をソフトウェア開発にも応用したのが「カナリアリリース」です。新バージョンにアクセスしてテストに参加する一部ユーザーを、ガス漏れを察知するカナリアに見立てて、「カナリアリリース」という名前が付けられています。
カナリアリリースとブルーグリーンデプロイメントとの違い
カナリアリリースとブルーグリーンデプロイメントとの違いを以下に示します。
カナリアリリース | ブルーグリーンデプロイメント | |
手法 | 新バージョンを段階的に一部のユーザーやリクエストに展開する | 2つの環境(ブルー環境とグリーン環境)を切り替えてリリースする |
リリース対象 | 一部のユーザーまたはリクエストのみ | 全ユーザー |
安全性の確認 | 段階的にテストしながら展開する | 環境切り替え後に全体の動作確認をする |
ロールバックの方法 | 問題発生時は対象範囲を旧バージョンに戻す | 問題発生時は旧環境(ブルー)に切り戻す |
適しているケース | 徐々に影響を広げたい、高リスクの機能リリースするケース | 環境の即時切り替えで一度にリリースしたいケース |
上記の表から分かるように、カナリアリリースは段階的にリリースして安全性を確認しながらリリースするのに対して、ブルーグリーンデプロイメントは環境を切り替えて即時に全ユーザーへリリースします。
カナリアリリースのメリットとデメリット
カナリアリリースのメリットとデメリットを以下に示します。
メリット
- 本番環境でのテストが可能
- 開発環境では見つからなかった不具合も、本番環境での小規模テストにより発見できます(アプリケーションが本番環境に公開されると、開発環境では予測できなかった不具合が発生することがあります)。
- これが、カナリアリリースの最大のメリットです。
- 問題があればすぐに元に戻せる
- 旧バージョンと新バージョンを並行稼働しているため、新バージョンでの問題発生時に迅速に旧バージョンへロールバックできます。
- 稼働停止時間がない
- 切り替えは並行稼働中に行われるため、システムの停止が発生しません。
デメリット
- 追加コストが発生
- 現バージョンと新バージョンを同時に稼働させるため、サーバーのリソースやコストが増加します。
- 時間と労力がかかる
- 本番環境での小規模テストを行いながら段階的にリリースするため、全ユーザー公開までに時間と手間がかかります。
本記事のまとめ
この記事では『カナリアリリース』について、説明しました。
カナリアリリースは、ソフトウェアやサービスの新バージョンを安全にリリースする手法です。一部のユーザーやリクエストに新バージョンを段階的に提供し、問題がないかを確認しながら最終的に全体へ展開します。
- 由来
- 炭鉱でのカナリア使用にヒントを得たリスク軽減の考え方。
- ブルーグリーンデプロイメントとの違い
- カナリアリリースは徐々に安全性を確認し、ブルーグリーンは即時切り替えが特徴。
- メリット
- 本番環境での小規模テストが可能、迅速なロールバック、稼働停止時間なし。
- デメリット
- コスト増加や時間・労力がかかる点に注意が必要。
お読み頂きありがとうございました。