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

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

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⽇

    View full-size slide

  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

    View full-size slide

  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

    View full-size slide

  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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  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

    View full-size slide

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

    View full-size slide

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

    View full-size slide