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
320
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
クラウドデザインパターンを使ってクールな設計をしよう/jazug12th
noriyukitakei
1
130
アウトプットはいいぞ!!〜人生折り返し地点からの情報発信で学びが楽しくなった話〜/outputisgood
noriyukitakei
0
43
世界一わかりみの深いDurable Functions/wakarimi_durablefunctions
noriyukitakei
0
1.1k
Ignite 振り返り & Azure 更新情報!/igniteakimatsuri
noriyukitakei
0
1.9k
世界一わかりみの深い クラウドネイティブなアプリ開発入門 on Azure 第2回 〜App Serviceでアプリをラクチン実行〜/wakarimiazure002
noriyukitakei
0
120
世界一わかりみの深い クラウドネイティブなアプリ開発入門 on Azure 第1回 〜Azureでクラウドネイティブを実現するには〜/wakarimiazure001
noriyukitakei
0
170
世界一わかりみの深いOAuth入門 / wakarimioauth
noriyukitakei
29
14k
Microsoft Ignite Recap Community Day〜現場で使えるIginiteUpdate〜/ignite-recap
noriyukitakei
0
1.9k
世界一わかりみの深い Docker&コンテナ入門 〜 Dockerのファイルシステムってどうなってるの? 〜/wakarimidocker_filesystem
noriyukitakei
1
440
Other Decks in Technology
See All in Technology
経営統合をきっかけに会社をエンジニアリングした話 / btconjp-2023
carta_engineering
0
150
ML PM, DS PMってどんな仕事をしているの?
line_developers
PRO
1
250
SPA・SSGでSSRのようなOGP対応!
simo123
2
160
AI Builderについて
miyakemito
0
930
20230123_FinJAWS
takuyay0ne
0
120
Cloudflare Workersで動くOG画像生成器
aiji42
1
500
NGINXENG JP#2 - 2-NGINXの動作の詳細
hiropo20
1
140
Kaggleシミュレーションコンペの動向
nagiss
0
280
もし本番ネットワークをまるごと仮想環境に”コピー”できたらうれしいですか? / janog51
corestate55
0
380
金属加工屋の営業マンがSTマイクロで・・・
usashirou
0
170
OPENLOGI Company Profile
hr01
0
12k
IoT から見る AWS re:invent 2022 ― AWSのIoTの歴史を添えて/Point of view the AWS re:invent 2022 with IoT - with a history of IoT in AWS
ma2shita
0
280
Featured
See All Featured
Gamification - CAS2011
davidbonilla
75
4.1k
A better future with KSS
kneath
230
16k
Creatively Recalculating Your Daily Design Routine
revolveconf
207
11k
Agile that works and the tools we love
rasmusluckow
320
20k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
13
1.1k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
24
4.6k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
6
840
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
500
130k
The MySQL Ecosystem @ GitHub 2015
samlambert
240
11k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
15
1.2k
Producing Creativity
orderedlist
PRO
335
38k
Practical Orchestrator
shlominoach
178
8.9k
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 ご清聴ありがとう
ございました。