Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
App ServiceやWeb App for Containersによる今どきのナウいリリー...
Search
Noriyuki TAKEI
November 25, 2020
Technology
440
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
App ServiceやWeb App for Containersによる今どきのナウいリリースについて(Blue-Greenデプロイとかカナリアリリースとか)/appservicedeploy
Noriyuki TAKEI
November 25, 2020
More Decks by Noriyuki TAKEI
See All by Noriyuki TAKEI
魔法少女がClaude Codeを監視する / ccportal-deck
noriyukitakei
0
520
魔法少女がClaude Codeを監視する / ccportal-deck
noriyukitakei
3
140
ラズパイ×ローカルLLMで“MAGIシステム”を作る 〜3体のAIによる合議制マルチエージェント〜/magibypi
noriyukitakei
0
93
ループエンジニアリングでE2Eテストを実践
noriyukitakei
0
510
第50回 Tokyo Jazug Night/react-deepdive
noriyukitakei
0
110
RAG構築のためのAzure OpenAI Serviceリファレンスアーキテクチャ詳解/wakarimiragarchitecture
noriyukitakei
0
320
生成AI時代の検索手法〜スターウォーズの登場人物で紐解くベクトル/セマンティック/ハイブリッド検索〜/wakarimiaisearch
noriyukitakei
0
120
Prompt flowでブログ記事紹介ツイートアプリをラクチン開発/wakarimipromptflow
noriyukitakei
0
79
世界一わかりみの深いAzure OpenAI Service/wakarimiaoai
noriyukitakei
1
950
Other Decks in Technology
See All in Technology
俺の仕事は AIに奪われないし、たぶんその BIも要らない
hikaruri
0
470
顧客に向き合う開発組織へ。リアーキテクチャとフィーチャーチーム化で挑む組織改革
safie
0
1.8k
研究開発部の紹介 / Sansan R&D Profile
sansan33
PRO
5
25k
データ界隈LT祭 第1回LT登壇
taromatsui_cccmkhd
1
1.3k
銀行勘定系システムにおける開発プロセス刷新×AIによる環境モダナイゼーション / Development Process Transformation and AI-Driven Environment Modernization
muit
0
2.1k
技術的負債から考える、AI時代のエンジニアリング投資 — ビズリーチの技術的負債と向き合った経験から、変更し続けられるソフトウェアを考える/ technical-debt-con2026
visional_engineering_and_design
3
2.8k
積み重なった技術負債への挑戦 〜初手としての全社ゴト化〜
techtekt
PRO
0
1.2k
SQL文一行も書けない人事がCortexもろもろを使って人事業務を楽にしてみる
ponponmikankan
1
240
Claude Codeを「使うほど育つ」AI秘書にするノウハウ
minorun365
PRO
23
18k
SREは、MCPとAutopilotをこう使え!
kazumax55
2
790
Omarchy Quattro の日本語設定周り
simosako
2
180
AI時代、データエンジニアが一番おもろい
genshun9
0
580
Featured
See All Featured
What's in a price? How to price your products and services
michaelherold
247
13k
4 Signs Your Business is Dying
shpigford
187
23k
Marketing to machines
jonoalderson
1
5.8k
The Director’s Chair: Orchestrating AI for Truly Effective Learning
tmiket
1
300
Rails Girls Zürich Keynote
gr2m
96
14k
Build your cross-platform service in a week with App Engine
jlugia
234
19k
sira's awesome portfolio website redesign presentation
elsirapls
0
410
Test your architecture with Archunit
thirion
2
2.4k
Data-driven link building: lessons from a $708K investment (BrightonSEO talk)
szymonslowik
1
1.3k
Information Architects: The Missing Link in Design Systems
soysaucechin
1
1.1k
Conquering PDFs: document understanding beyond plain text
inesmontani
PRO
4
3.1k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
18k
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 ご清聴ありがとう
ございました。