Upgrade to Pro — share decks privately, control downloads, hide ads and more …

App ServiceやWeb App for Containersによる今どきのナウいリリー...

App ServiceやWeb App for Containersによる今どきのナウいリリースについて(Blue-Greenデプロイとかカナリアリリースとか)/appservicedeploy

Noriyuki TAKEI

November 25, 2020
Tweet

More Decks by Noriyuki TAKEI

Other Decks in Technology

Transcript

  1. © SIOS Technology, Inc. All rights Reserved. App ServiceやWeb App

    for Containersによる今どきのナウいリ リースについて(Blue-Greenデプロイ とかカナリアリリースとか) Noriyuki TAKEI 2020年11⽉25⽇
  2. © 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
  3. © 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
  4. © 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
  5. © SIOS Technology, Inc. All rights Reserved. 今どきのナウいリリース by App

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    Service、Web App for Containers 40 アクセス制限【スロットをスワップした場合】 つまり変わらずこういう状態です。そらそ うですよね。例えば、ステージングスロッ トのみに施していたアクセス制限が運⽤ス ロットに反映されてしまったら、いきなり アクセスできなくなるユーザーがたくさん 出て⼤騒ぎになります。 本セッションの ブログのURL
  41. © 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
  42. © 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 関連ブログ