Slide 1

Slide 1 text

© SIOS Technology, Inc. All rights Reserved. App ServiceやWeb App for Containersによる今どきのナウいリ リースについて(Blue-Greenデプロイ とかカナリアリリースとか) Noriyuki TAKEI 2020年11⽉25⽇

Slide 2

Slide 2 text

© 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

Slide 3

Slide 3 text

© 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

Slide 4

Slide 4 text

© 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

Slide 5

Slide 5 text

© SIOS Technology, Inc. All rights Reserved. 今どきのナウいリリース by App Service、Web App for Containers 5 In-Placeデプロイ 既存の環境に新しアプリをエイヤとデプ ロイする⼿法です。 旧来から⽤いられている伝統的な⼿法か と思います。 ただし、ダウンタイムが発⽣する可能性 が⾼いです。

Slide 6

Slide 6 text

© SIOS Technology, Inc. All rights Reserved. 今どきのナウいリリース by App Service、Web App for Containers 6 Blue-Greenデプロイ 現在動いている環境とは別に、新たにリ リースする別の環境を⽤意して、DNSの レコード切り替え等により、旧環境から 新環境にエイヤと切り替える⼿法です。 ダウンタイムほぼゼロ︕︕ 旧環境と新環境の2つのリソースを ⽤意しなければならないので、 ちょっと費⽤がかさむ(´・ω・`) 本セッションの ブログのURL

Slide 7

Slide 7 text

© SIOS Technology, Inc. All rights Reserved. 今どきのナウいリリース by App Service、Web App for Containers 7 カナリアデプロイ 現在動いている環境とは別に、新たにリ リースする別の環境を⽤意して、旧環境 に振られているリクエストを徐々に少し ずつ新環境に割り振っていく⼿法です。 少しずつ切り替えていくので、何か あった際の影響が少ない。 旧環境と新環境の2つのリソースを ⽤意しなければならないので、 ちょっと費⽤がかさむ(´・ω・`)

Slide 8

Slide 8 text

© SIOS Technology, Inc. All rights Reserved. 今どきのナウいリリース by App Service、Web App for Containers 8 各デプロイ⽅法のメリデリはこんな感じ。 デプロイ⽅法 ユーザー影響 コスト 切り戻し In-Placeデプロイ ☓ ◯ ☓ アプリの設計にもよるが、単 なる⼊れ替えなのでサービス が停⽌することが多い。 既存のサーバーに対するアプリ の⼊れ替えなので、他のサー バーを⽤意しなくていい。 もう⼀度同じアプリを上書 きしなければいけないので、 切り戻し⼤変。 Blue-Greenデプ ロイ ◯ ☓ ◯ 旧アプリから新アプリへの切 り替えはロードバランサーや DNSの変更だけなので、ほと んど影響なし。 新旧両⽅のサーバーを⽤意しな ければならないので、コストが かかる。 DNSやロードバランサー を変更するだけで旧サー バーにリクエストが⾏き切 り戻しできるのでラクチン。 カナリアデプロイ ◯ ☓ ◯ 旧アプリから新アプリへの切 り替えはロードバランサーや DNSの変更だけなので、ほと んど影響なし。 新旧両⽅のサーバーを⽤意しな ければならないので、コストが かかる。 DNSやロードバランサー を変更するだけで旧サー バーにリクエストが⾏き切 り戻しできるのでラクチン。

Slide 9

Slide 9 text

© SIOS Technology, Inc. All rights Reserved. 今どきのナウいリリース by App Service、Web App for Containers 9 やってみよう︕︕ 本セッションの ブログのURL

Slide 10

Slide 10 text

© SIOS Technology, Inc. All rights Reserved. 今どきのナウいリリース by App Service、Web App for Containers 10 Blue-Greenデプロイ実践中︕︕ すでにブラウザに「hoge」と表⽰ するアプリがリリースされていると します。 これを「fuga」と表⽰されるアプリ にBlue-Greenデプロイでリリース します。 今の状態は右図のような感じです。 本セッションの ブログのURL

Slide 11

Slide 11 text

© 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デプロイ実践中︕︕

Slide 12

Slide 12 text

© SIOS Technology, Inc. All rights Reserved. 今どきのナウいリリース by App Service、Web App for Containers 12 Blue-Greenデプロイ実践中︕︕ 「名前」に任意の名称を⼊⼒します。「次から設定を 複製」はどっちでもいいです。 本セッションの ブログのURL

Slide 13

Slide 13 text

© SIOS Technology, Inc. All rights Reserved. 今どきのナウいリリース by App Service、Web App for Containers 13 Blue-Greenデプロイ実践中︕︕ 以下の画⾯のように 「bluegreentest-stg」というスロッ トが出来上がっていると思います。

Slide 14

Slide 14 text

© SIOS Technology, Inc. All rights Reserved. 今どきのナウいリリース by App Service、Web App for Containers 14 Blue-Greenデプロイ実践中︕︕ ちょうどイメージにすると、現在は以下の ような状態になります。bluegreentest-stg というスロットが作成されて、その中に bluegreentestというスロット内のApp Serviceが複製されています。以下の図を⾒ るとわかると思いますが、スロットはすべ て同じApp Serviceプランの中に作成され ます。

Slide 15

Slide 15 text

© SIOS Technology, Inc. All rights Reserved. 今どきのナウいリリース by App Service、Web App for Containers 15 Blue-Greenデプロイ実践中︕︕ ここでシステム管理者が新しいアプリをデ プロイして、右図ような状態になったとし ます。。先程作成した新しいスロット (bluegreentest-stg)には、fugaと表⽰さ れる新しいアプリがあります。実際にユー ザーがアクセスしているのは、 bluegreentestスロットにある旧アプリで す。bluegreentest-stgスロットにある新 アプリにはまだリクエストが来ていないの で、システム管理者は安全に新アプリをテ ストすることができます。

Slide 16

Slide 16 text

© SIOS Technology, Inc. All rights Reserved. 今どきのナウいリリース by App Service、Web App for Containers 16 Blue-Greenデプロイ実践中︕︕ そして、ここからがBlue-Greenデ プロイの実⾏なのですが、旧アプリ (hoge)と新アプリ(fuga)を⼊れ替え ます。先程のスロット⼀覧画⾯にア クセスして、「スワップ」をクリッ クします。

Slide 17

Slide 17 text

© SIOS Technology, Inc. All rights Reserved. 今どきのナウいリリース by App Service、Web App for Containers 17 Blue-Greenデプロイ実践中︕︕ 「ソース」にスワップ元のスロット、「ターゲット」 にスワップ先のスロットを選択します。「運⽤」と表 ⽰されているスロットは、実際にエンドユーザーがア クセスしている本番のスロットになります。最後に 「スワップ」をクリックします。しばらくすると完了 します。

Slide 18

Slide 18 text

© SIOS Technology, Inc. All rights Reserved. 今どきのナウいリリース by App Service、Web App for Containers 18 Blue-Greenデプロイ実践中︕︕ ⾒た⽬にはわかりませんが、スワップ されています。試しにbluegreentest のスロットにあるApp Serviceにアク セスしたら「fuga」と表⽰されるはず です。

Slide 19

Slide 19 text

© SIOS Technology, Inc. All rights Reserved. 今どきのナウいリリース by App Service、Web App for Containers 19 カナリアデプロイ実践中︕︕ 現在、先程作成したbluegreentest- stgに新アプリが適⽤済みの状態と します。 エンドユーザーのアクセスは旧アプ リに向いているものとします。 この状態から、新アプリにだけ全体 のアクセスの20%を向けるというこ とをやっみたいと思います。

Slide 20

Slide 20 text

© SIOS Technology, Inc. All rights Reserved. 今どきのナウいリリース by App Service、Web App for Containers 20 カナリアデプロイ実践中︕︕ 現在の状態は、App Serviceのポー タルで⾒ると以下のような状態で す。 本セッションの ブログのURL

Slide 21

Slide 21 text

© SIOS Technology, Inc. All rights Reserved. 今どきのナウいリリース by App Service、Web App for Containers 21 カナリアデプロイ実践中︕︕ デプロイスロットの⼀覧画⾯で、右 図のようにbluegreentest-stgのス ロットの「トラフィック」を20にし て「保存」をクリックします。 本セッションの ブログのURL

Slide 22

Slide 22 text

© SIOS Technology, Inc. All rights Reserved. 今どきのナウいリリース by App Service、Web App for Containers 22 カナリアデプロイ実践中︕︕ 以下のようなイメージの状態になりまし た。 本セッションの ブログのURL

Slide 23

Slide 23 text

© SIOS Technology, Inc. All rights Reserved. 今どきのナウいリリース by App Service、Web App for Containers 23 注意点があります︕︕ 本セッションの ブログのURL

Slide 24

Slide 24 text

© SIOS Technology, Inc. All rights Reserved. 今どきのナウいリリース by App Service、Web App for Containers 24 スワップした際に引き継がれる設定とそうでない設定があります。こ れに注意しないと、スワップしたときに思わぬ動作をすることがあり ます。設定が引き継がれるタイミングは2つあります。 新規にスロットを作成したときに、 親のスロットから引き継がれる スロットをスワップしたときに 引き継がれる 本セッションの ブログのURL

Slide 25

Slide 25 text

© SIOS Technology, Inc. All rights Reserved. 今どきのナウいリリース by App Service、Web App for Containers 25 以下のそれぞれのユースケースで挙動を⾒てみます。 • バックアップ • スロットを新規作成した場合 • スロットをスワップした場合 • アクセス制限 • スロットを新規作成した場合 • スロットをスワップした場合 本セッションの ブログのURL

Slide 26

Slide 26 text

© SIOS Technology, Inc. All rights Reserved. 今どきのナウいリリース by App Service、Web App for Containers 26 バックアップ【スロットを新規作成した場合】 App ServiceやWeb App for Containersには、その中 のファイルをバックアップする機能があります。

Slide 27

Slide 27 text

© SIOS Technology, Inc. All rights Reserved. 今どきのナウいリリース by App Service、Web App for Containers 27 バックアップ【スロットを新規作成した場合】 ではスロットを作成してみます。その際、忘れ ずに「次から設定を複製」で複製元のスロット を選択して下さい。 本セッションの ブログのURL

Slide 28

Slide 28 text

© SIOS Technology, Inc. All rights Reserved. 今どきのナウいリリース by App Service、Web App for Containers 28 バックアップ【スロットを新規作成した場合】 複製したスロットを⾒てみます。複製され ていませんね。バックアップを取りたいの はだいたい運⽤スロットのみだと思うので、 妥当な動作かなと思います。

Slide 29

Slide 29 text

© SIOS Technology, Inc. All rights Reserved. 今どきのナウいリリース by App Service、Web App for Containers 29 バックアップ【スロットを新規作成した場合】 今の状態をイメージにすると、こんな感じですね。 本セッションの ブログのURL

Slide 30

Slide 30 text

© SIOS Technology, Inc. All rights Reserved. 今どきのナウいリリース by App Service、Web App for Containers 30 バックアップ【スロットをスワップした場合】 では、先程の状態からスワップして⾒てみましょう。 まずは運⽤スロットから。なるほど、スワップしても 運⽤スロットの設定は変わらないですね。

Slide 31

Slide 31 text

© SIOS Technology, Inc. All rights Reserved. 今どきのナウいリリース by App Service、Web App for Containers 31 バックアップ【スロットをスワップした場合】 次はステージングスロットです。ステー ジングスロットも変わらずバックアップ されない設定になっていますね。

Slide 32

Slide 32 text

© SIOS Technology, Inc. All rights Reserved. 今どきのナウいリリース by App Service、Web App for Containers 32 バックアップ【スロットをスワップした場合】 つまりイメージにすると右図のような 感じなのですが、たしかにスワップし たときにバックアップの設定もスワッ プされてしまうと、今までバックアッ プを取っていた運⽤スロットがスワッ プ後にバックアップ取られなくなった とかなると、もう⼤騒ぎです(汗) 本セッションの ブログのURL

Slide 33

Slide 33 text

© SIOS Technology, Inc. All rights Reserved. 今どきのナウいリリース by App Service、Web App for Containers 33 アクセス制限【スロットを新規作成した場合】 App ServiceやWeb App for Containersには、IPアドレスでアクセ ス制限をできます。 右図のような制限を設定していた場合 に、スロットを新規作成した場合を⾒ ていきましょう。スロットの新規作成 ⽅法は先程と同じ⼿順です。

Slide 34

Slide 34 text

© SIOS Technology, Inc. All rights Reserved. 今どきのナウいリリース by App Service、Web App for Containers 34 アクセス制限【スロットを新規作成した場合】 今のイメージはこんな感じです。 本セッションの ブログのURL

Slide 35

Slide 35 text

© SIOS Technology, Inc. All rights Reserved. 今どきのナウいリリース by App Service、Web App for Containers 35 アクセス制限【スロットを新規作成した場合】 ではスロットを新規作成して、複 製されたスロットを⾒てみましょ う。まずは運⽤スロットからです が、設定が複製されています。

Slide 36

Slide 36 text

© SIOS Technology, Inc. All rights Reserved. 今どきのナウいリリース by App Service、Web App for Containers 36 アクセス制限【スロットを新規作成した場合】 つまりこういう今の状態は右図のとおりとなってい ます。

Slide 37

Slide 37 text

© SIOS Technology, Inc. All rights Reserved. 今どきのナウいリリース by App Service、Web App for Containers 37 アクセス制限【スロットをスワップした場合】 次はスロットをスワップした場合です。両⽅のス ロットとも同じ設定が⼊っていて、この状態でス ワップしても差がわからないので、運⽤スロットの 設定を削除して以下のような状態にしてみます。

Slide 38

Slide 38 text

© SIOS Technology, Inc. All rights Reserved. 今どきのナウいリリース by App Service、Web App for Containers 38 アクセス制限【スロットをスワップした場合】 ではスロットをスワップしてみ て、運⽤スロットの⽅から⾒て みましょう。うん、アクセス制 限設定なしですね。

Slide 39

Slide 39 text

© SIOS Technology, Inc. All rights Reserved. 今どきのナウいリリース by App Service、Web App for Containers 39 アクセス制限【スロットをスワップした場合】 ステージングスロットは先程と変わ らずアクセス制限設定ありです。

Slide 40

Slide 40 text

© SIOS Technology, Inc. All rights Reserved. 今どきのナウいリリース by App Service、Web App for Containers 40 アクセス制限【スロットをスワップした場合】 つまり変わらずこういう状態です。そらそ うですよね。例えば、ステージングスロッ トのみに施していたアクセス制限が運⽤ス ロットに反映されてしまったら、いきなり アクセスできなくなるユーザーがたくさん 出て⼤騒ぎになります。 本セッションの ブログのURL

Slide 41

Slide 41 text

© 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

Slide 42

Slide 42 text

© 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 関連ブログ

Slide 43

Slide 43 text

© SIOS Technology, Inc. All rights Reserved. 最後に︕︕ 43 ご清聴ありがとう ございました。