Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Speaker Deck
PRO
Sign in
Sign up
for free
App ServiceやWeb App for Containersによる今どきのナウいリリースについて(Blue-Greenデプロイとかカナリアリリースとか)/appservicedeploy
Noriyuki TAKEI
November 25, 2020
Technology
0
130
App ServiceやWeb App for Containersによる今どきのナウいリリースについて(Blue-Greenデプロイとかカナリアリリースとか)/appservicedeploy
Noriyuki TAKEI
November 25, 2020
Tweet
Share
More Decks by Noriyuki TAKEI
See All by Noriyuki TAKEI
noriyukitakei
0
70
noriyukitakei
0
710
noriyukitakei
0
43
noriyukitakei
0
330
noriyukitakei
15
16k
noriyukitakei
0
710
noriyukitakei
0
590
noriyukitakei
27
9.2k
noriyukitakei
2
380
Other Decks in Technology
See All in Technology
clustervr
0
210
zak3
1
180
go5paopao
2
340
manuelmeyer
0
130
oracle4engineer
0
3.6k
hikiaki
0
180
viva_tweet_x
3
2.6k
mii3king
0
420
yunoda
0
110
norioikedo
0
210
yosuke_matsuura
PRO
0
170
buildersbox
0
170
Featured
See All Featured
wjessup
339
16k
tanoku
86
8.6k
sugarenia
233
850k
holman
288
130k
keithpitt
401
20k
zakiwarfel
88
3.4k
colly
188
14k
geeforr
332
29k
frogandcode
128
20k
lauravandoore
437
28k
skipperchong
8
710
tanoku
258
24k
Transcript
© SIOS Technology, Inc. All rights Reserved. App ServiceやWeb App
for Containersによる今どきのナウいリ リースについて(Blue-Greenデプロイ とかカナリアリリースとか) Noriyuki TAKEI 2020年11⽉25⽇
© SIOS Technology, Inc. All rights Reserved. About Me 2
BCPVUNF Noriyuki TAKEI Ҫ ٓߦ Information • サイオステクノロジー株式会社 • Microsoft MVP for Azure • VS Code Meetup Organizer Favorites • Azure • Squash • Sweets blog https://tech-lab.sios.jp/ core skill Azure Kubernetes Service Cloud Native, Serverless全般 Twitter @noriyukitakei
© SIOS Technology, Inc. All rights Reserved. 今どきのナウいリリース by App
Service、Web App for Containers 3 App Service、Web App for Containersってなに︖ Azure Container RegistryにDockerイメージをアップロードするだけで、 フルマネージドなプラットフォーム上にWebアプリケーションを迅速に構 築、デプロイ、スケーリングすることが出来る。ほぼApp Serviceと同じ機 能を持っている。 Web App for Containers 専⽤のポータルからソースコードやアーカイブをアップロードするだけで、 フルマネージドなプラットフォーム上にWebアプリケーションを迅速に構 築、デプロイ、スケーリングすることが出来る。 App Service 本セッションの ブログのURL
© SIOS Technology, Inc. All rights Reserved. 今どきのナウいリリース by App
Service、Web App for Containers 4 そしてApp ServiceやWeb App for Containersは、様々なデプロイ ⽅法に対法しています。これらを活⽤すると無停⽌で楽ちんなデプロ イが可能です︕︕ In-Placeデプロイ Blue-Greenデプロイ カナリアリリース 本セッションの ブログのURL
© SIOS Technology, Inc. All rights Reserved. 今どきのナウいリリース by App
Service、Web App for Containers 5 In-Placeデプロイ 既存の環境に新しアプリをエイヤとデプ ロイする⼿法です。 旧来から⽤いられている伝統的な⼿法か と思います。 ただし、ダウンタイムが発⽣する可能性 が⾼いです。
© SIOS Technology, Inc. All rights Reserved. 今どきのナウいリリース by App
Service、Web App for Containers 6 Blue-Greenデプロイ 現在動いている環境とは別に、新たにリ リースする別の環境を⽤意して、DNSの レコード切り替え等により、旧環境から 新環境にエイヤと切り替える⼿法です。 ダウンタイムほぼゼロ︕︕ 旧環境と新環境の2つのリソースを ⽤意しなければならないので、 ちょっと費⽤がかさむ(´・ω・`) 本セッションの ブログのURL
© SIOS Technology, Inc. All rights Reserved. 今どきのナウいリリース by App
Service、Web App for Containers 7 カナリアデプロイ 現在動いている環境とは別に、新たにリ リースする別の環境を⽤意して、旧環境 に振られているリクエストを徐々に少し ずつ新環境に割り振っていく⼿法です。 少しずつ切り替えていくので、何か あった際の影響が少ない。 旧環境と新環境の2つのリソースを ⽤意しなければならないので、 ちょっと費⽤がかさむ(´・ω・`)
© SIOS Technology, Inc. All rights Reserved. 今どきのナウいリリース by App
Service、Web App for Containers 8 各デプロイ⽅法のメリデリはこんな感じ。 デプロイ⽅法 ユーザー影響 コスト 切り戻し In-Placeデプロイ ☓ ◯ ☓ アプリの設計にもよるが、単 なる⼊れ替えなのでサービス が停⽌することが多い。 既存のサーバーに対するアプリ の⼊れ替えなので、他のサー バーを⽤意しなくていい。 もう⼀度同じアプリを上書 きしなければいけないので、 切り戻し⼤変。 Blue-Greenデプ ロイ ◯ ☓ ◯ 旧アプリから新アプリへの切 り替えはロードバランサーや DNSの変更だけなので、ほと んど影響なし。 新旧両⽅のサーバーを⽤意しな ければならないので、コストが かかる。 DNSやロードバランサー を変更するだけで旧サー バーにリクエストが⾏き切 り戻しできるのでラクチン。 カナリアデプロイ ◯ ☓ ◯ 旧アプリから新アプリへの切 り替えはロードバランサーや DNSの変更だけなので、ほと んど影響なし。 新旧両⽅のサーバーを⽤意しな ければならないので、コストが かかる。 DNSやロードバランサー を変更するだけで旧サー バーにリクエストが⾏き切 り戻しできるのでラクチン。
© SIOS Technology, Inc. All rights Reserved. 今どきのナウいリリース by App
Service、Web App for Containers 9 やってみよう︕︕ 本セッションの ブログのURL
© SIOS Technology, Inc. All rights Reserved. 今どきのナウいリリース by App
Service、Web App for Containers 10 Blue-Greenデプロイ実践中︕︕ すでにブラウザに「hoge」と表⽰ するアプリがリリースされていると します。 これを「fuga」と表⽰されるアプリ にBlue-Greenデプロイでリリース します。 今の状態は右図のような感じです。 本セッションの ブログのURL
© SIOS Technology, Inc. All rights Reserved. 今どきのナウいリリース by App
Service、Web App for Containers 11 App Service(もしくはWeb App for Containers)の管理画⾯にア クセスして、左部メニューの「デ プロイスロット」をクリックしま す。すでにbluegreentestスロッ トというのが出来上がっています。 この名前はApp Service名とイ コールです。ここに新しいスロッ トを追加しましょう。「+スロッ トの追加」をクリックします。 Blue-Greenデプロイ実践中︕︕
© SIOS Technology, Inc. All rights Reserved. 今どきのナウいリリース by App
Service、Web App for Containers 12 Blue-Greenデプロイ実践中︕︕ 「名前」に任意の名称を⼊⼒します。「次から設定を 複製」はどっちでもいいです。 本セッションの ブログのURL
© SIOS Technology, Inc. All rights Reserved. 今どきのナウいリリース by App
Service、Web App for Containers 13 Blue-Greenデプロイ実践中︕︕ 以下の画⾯のように 「bluegreentest-stg」というスロッ トが出来上がっていると思います。
© SIOS Technology, Inc. All rights Reserved. 今どきのナウいリリース by App
Service、Web App for Containers 14 Blue-Greenデプロイ実践中︕︕ ちょうどイメージにすると、現在は以下の ような状態になります。bluegreentest-stg というスロットが作成されて、その中に bluegreentestというスロット内のApp Serviceが複製されています。以下の図を⾒ るとわかると思いますが、スロットはすべ て同じApp Serviceプランの中に作成され ます。
© SIOS Technology, Inc. All rights Reserved. 今どきのナウいリリース by App
Service、Web App for Containers 15 Blue-Greenデプロイ実践中︕︕ ここでシステム管理者が新しいアプリをデ プロイして、右図ような状態になったとし ます。。先程作成した新しいスロット (bluegreentest-stg)には、fugaと表⽰さ れる新しいアプリがあります。実際にユー ザーがアクセスしているのは、 bluegreentestスロットにある旧アプリで す。bluegreentest-stgスロットにある新 アプリにはまだリクエストが来ていないの で、システム管理者は安全に新アプリをテ ストすることができます。
© SIOS Technology, Inc. All rights Reserved. 今どきのナウいリリース by App
Service、Web App for Containers 16 Blue-Greenデプロイ実践中︕︕ そして、ここからがBlue-Greenデ プロイの実⾏なのですが、旧アプリ (hoge)と新アプリ(fuga)を⼊れ替え ます。先程のスロット⼀覧画⾯にア クセスして、「スワップ」をクリッ クします。
© SIOS Technology, Inc. All rights Reserved. 今どきのナウいリリース by App
Service、Web App for Containers 17 Blue-Greenデプロイ実践中︕︕ 「ソース」にスワップ元のスロット、「ターゲット」 にスワップ先のスロットを選択します。「運⽤」と表 ⽰されているスロットは、実際にエンドユーザーがア クセスしている本番のスロットになります。最後に 「スワップ」をクリックします。しばらくすると完了 します。
© SIOS Technology, Inc. All rights Reserved. 今どきのナウいリリース by App
Service、Web App for Containers 18 Blue-Greenデプロイ実践中︕︕ ⾒た⽬にはわかりませんが、スワップ されています。試しにbluegreentest のスロットにあるApp Serviceにアク セスしたら「fuga」と表⽰されるはず です。
© SIOS Technology, Inc. All rights Reserved. 今どきのナウいリリース by App
Service、Web App for Containers 19 カナリアデプロイ実践中︕︕ 現在、先程作成したbluegreentest- stgに新アプリが適⽤済みの状態と します。 エンドユーザーのアクセスは旧アプ リに向いているものとします。 この状態から、新アプリにだけ全体 のアクセスの20%を向けるというこ とをやっみたいと思います。
© SIOS Technology, Inc. All rights Reserved. 今どきのナウいリリース by App
Service、Web App for Containers 20 カナリアデプロイ実践中︕︕ 現在の状態は、App Serviceのポー タルで⾒ると以下のような状態で す。 本セッションの ブログのURL
© SIOS Technology, Inc. All rights Reserved. 今どきのナウいリリース by App
Service、Web App for Containers 21 カナリアデプロイ実践中︕︕ デプロイスロットの⼀覧画⾯で、右 図のようにbluegreentest-stgのス ロットの「トラフィック」を20にし て「保存」をクリックします。 本セッションの ブログのURL
© SIOS Technology, Inc. All rights Reserved. 今どきのナウいリリース by App
Service、Web App for Containers 22 カナリアデプロイ実践中︕︕ 以下のようなイメージの状態になりまし た。 本セッションの ブログのURL
© SIOS Technology, Inc. All rights Reserved. 今どきのナウいリリース by App
Service、Web App for Containers 23 注意点があります︕︕ 本セッションの ブログのURL
© SIOS Technology, Inc. All rights Reserved. 今どきのナウいリリース by App
Service、Web App for Containers 24 スワップした際に引き継がれる設定とそうでない設定があります。こ れに注意しないと、スワップしたときに思わぬ動作をすることがあり ます。設定が引き継がれるタイミングは2つあります。 新規にスロットを作成したときに、 親のスロットから引き継がれる スロットをスワップしたときに 引き継がれる 本セッションの ブログのURL
© SIOS Technology, Inc. All rights Reserved. 今どきのナウいリリース by App
Service、Web App for Containers 25 以下のそれぞれのユースケースで挙動を⾒てみます。 • バックアップ • スロットを新規作成した場合 • スロットをスワップした場合 • アクセス制限 • スロットを新規作成した場合 • スロットをスワップした場合 本セッションの ブログのURL
© SIOS Technology, Inc. All rights Reserved. 今どきのナウいリリース by App
Service、Web App for Containers 26 バックアップ【スロットを新規作成した場合】 App ServiceやWeb App for Containersには、その中 のファイルをバックアップする機能があります。
© SIOS Technology, Inc. All rights Reserved. 今どきのナウいリリース by App
Service、Web App for Containers 27 バックアップ【スロットを新規作成した場合】 ではスロットを作成してみます。その際、忘れ ずに「次から設定を複製」で複製元のスロット を選択して下さい。 本セッションの ブログのURL
© SIOS Technology, Inc. All rights Reserved. 今どきのナウいリリース by App
Service、Web App for Containers 28 バックアップ【スロットを新規作成した場合】 複製したスロットを⾒てみます。複製され ていませんね。バックアップを取りたいの はだいたい運⽤スロットのみだと思うので、 妥当な動作かなと思います。
© SIOS Technology, Inc. All rights Reserved. 今どきのナウいリリース by App
Service、Web App for Containers 29 バックアップ【スロットを新規作成した場合】 今の状態をイメージにすると、こんな感じですね。 本セッションの ブログのURL
© SIOS Technology, Inc. All rights Reserved. 今どきのナウいリリース by App
Service、Web App for Containers 30 バックアップ【スロットをスワップした場合】 では、先程の状態からスワップして⾒てみましょう。 まずは運⽤スロットから。なるほど、スワップしても 運⽤スロットの設定は変わらないですね。
© SIOS Technology, Inc. All rights Reserved. 今どきのナウいリリース by App
Service、Web App for Containers 31 バックアップ【スロットをスワップした場合】 次はステージングスロットです。ステー ジングスロットも変わらずバックアップ されない設定になっていますね。
© SIOS Technology, Inc. All rights Reserved. 今どきのナウいリリース by App
Service、Web App for Containers 32 バックアップ【スロットをスワップした場合】 つまりイメージにすると右図のような 感じなのですが、たしかにスワップし たときにバックアップの設定もスワッ プされてしまうと、今までバックアッ プを取っていた運⽤スロットがスワッ プ後にバックアップ取られなくなった とかなると、もう⼤騒ぎです(汗) 本セッションの ブログのURL
© SIOS Technology, Inc. All rights Reserved. 今どきのナウいリリース by App
Service、Web App for Containers 33 アクセス制限【スロットを新規作成した場合】 App ServiceやWeb App for Containersには、IPアドレスでアクセ ス制限をできます。 右図のような制限を設定していた場合 に、スロットを新規作成した場合を⾒ ていきましょう。スロットの新規作成 ⽅法は先程と同じ⼿順です。
© SIOS Technology, Inc. All rights Reserved. 今どきのナウいリリース by App
Service、Web App for Containers 34 アクセス制限【スロットを新規作成した場合】 今のイメージはこんな感じです。 本セッションの ブログのURL
© SIOS Technology, Inc. All rights Reserved. 今どきのナウいリリース by App
Service、Web App for Containers 35 アクセス制限【スロットを新規作成した場合】 ではスロットを新規作成して、複 製されたスロットを⾒てみましょ う。まずは運⽤スロットからです が、設定が複製されています。
© SIOS Technology, Inc. All rights Reserved. 今どきのナウいリリース by App
Service、Web App for Containers 36 アクセス制限【スロットを新規作成した場合】 つまりこういう今の状態は右図のとおりとなってい ます。
© SIOS Technology, Inc. All rights Reserved. 今どきのナウいリリース by App
Service、Web App for Containers 37 アクセス制限【スロットをスワップした場合】 次はスロットをスワップした場合です。両⽅のス ロットとも同じ設定が⼊っていて、この状態でス ワップしても差がわからないので、運⽤スロットの 設定を削除して以下のような状態にしてみます。
© SIOS Technology, Inc. All rights Reserved. 今どきのナウいリリース by App
Service、Web App for Containers 38 アクセス制限【スロットをスワップした場合】 ではスロットをスワップしてみ て、運⽤スロットの⽅から⾒て みましょう。うん、アクセス制 限設定なしですね。
© SIOS Technology, Inc. All rights Reserved. 今どきのナウいリリース by App
Service、Web App for Containers 39 アクセス制限【スロットをスワップした場合】 ステージングスロットは先程と変わ らずアクセス制限設定ありです。
© SIOS Technology, Inc. All rights Reserved. 今どきのナウいリリース by App
Service、Web App for Containers 40 アクセス制限【スロットをスワップした場合】 つまり変わらずこういう状態です。そらそ うですよね。例えば、ステージングスロッ トのみに施していたアクセス制限が運⽤ス ロットに反映されてしまったら、いきなり アクセスできなくなるユーザーがたくさん 出て⼤騒ぎになります。 本セッションの ブログのURL
© SIOS Technology, Inc. All rights Reserved. 今どきのナウいリリース by App
Service、Web App for Containers 41 まとめますと以下です。 スワップするときは何が引き継がれて 何が引き継がれないのか⼗分注意する。 スワップされる設定の詳細については以下の 公式ドキュメントにて︕︕ https://docs.microsoft.com/ja-jp/azure/app-service/deploy-staging-slots#which-settings- are-swapped
© SIOS Technology, Inc. All rights Reserved. 最後に︕︕ 42 本セッションの
ブログのURL App ServiceやWeb App for Containersによる⾊んなリリース⽅法(Blue-Greenデ プロイやカナリアリリース) https://tech-lab.sios.jp/archives/22822 App ServiceやWeb App for ContainersでのカスタムドメインのSSL https://tech-lab.sios.jp/archives/23123 Azure App ServiceのVNet統合 https://tech-lab.sios.jp/archives/22563 関連ブログ
© SIOS Technology, Inc. All rights Reserved. 最後に︕︕ 43 ご清聴ありがとう
ございました。