自由気ままに書いちゃおう

好きなことをつらつらと・・・

【AWS】CodeDeployのデプロイ設定のタイプ(カナリア、リニア)について

CodeDeployのデプロイ設定に出てくるタイプ(カナリア、リニア)についてです。

 

■はじめに

下記「タイプ」のプルダウンのことです。

リニア、Canary(カナリア)って何が違うのってところが発端です。

■リニアとCanary(カナリア)についての前置き

違いの説明をする前に少しだけ前置きを。

CodeDeployのデプロイで「リニア」「Canary」が出てくるのはデプロイ先がlambda/ECSの場合のみです。

※EC2/オンプレミスがデプロイ先の場合には、どちらも出てきません。

 

どちらもBlue/Greenデプロイメント方式の一つです。

どちらも、既存バージョン/新バージョンという2環境を用意し、トラフィックを徐々に新バージョンの環境に流していくデプロイ方式です。

■リニアとCanary(カナリア)の違いについて

違いは以下の通りです。

・最初少しだけ(※1)トラフィックを新バージョン環境に流す。次に更に(※2)新バージョン環境にトラフィックを流す、と言うことを繰り返し徐々に徐々に新バージョン環境へトラフィックを流し、最終的にすべてのトラフィックを新バージョン環境へ流す

 → 「リニア」です。

 

・最初少しだけ(※1)トラフィックを新バージョン環境に流す。問題なければ、問答無用ですべてのトラフィックを新バージョン環境に流す。

 → 「Canary(カナリア)」です。

 

※1: 「最初少しだけ」の割合は任意に決めることができます。

※2:「更に」の割合も任意に決めることができます。「最初少しだけ」から「更に」の間隔(=Interval)も任意の分数を指定可能です。

 

前述の通り、リニアとCanaryの違いは、トラフィックを新バージョン環境に流す際の「えいやっ」(=思い切り)の度合いの違いです。

■補足: All-at-Once について

「Canary」「リニア」以外に「All-at-Once」というものがあります。

「All-at-Once」は「Canary」「リニア」と異なり「最初少しだけ」という部分がなく、ある時点で全てのトラフィックを既存バージョンから新バージョンに流すデプロイ方式です。

 

そのため、Blue/Greenデプロイメント方式は「Canary」「リニア」「All-at-Once」の3方式が主流ということになります。

■デプロイ設定のテンプレートについて

CodeDeployにてデプロイ設定を行う際、AWSが用意しているデプロイ方式のテンプレートがあります。

下記はその一部です。

また、上図右上の「デプロイ設定の作成」をクリックすることで自分好みのデプロイ設定を作成することもできます。それをクリックした後の画面が冒頭の画面です。

 

以上です。