Slide 1

Slide 1 text

マスタ タイトルの書式設定 Azure Functions HTTP トリガーにおける タイムアウトでハマったこと 株式会社リクルート ICT統括室インフラソリューションユニット コミュニケーションプラットフォームグループ 政岡 裕士 2024年12月18日

Slide 2

Slide 2 text

マスタ タイトルの書式設定 2 © 2024 Recruit Co., Ltd. All Rights Reserved. 自己紹介 • Yuji Masaoka | まっぴぃ • Twitter: @mappie_kochi • Zenn: ymasaoka • Blog: とある IT エンジニアの日常 • 株式会社リクルート(2019/5 〜) • リクルート従業員向け Microsoft Azure / Microsoft 365 の管理運用 • Microsoft Azure / Microsoft 365 の開発支援 • AWS を使用した社内システム開発 • 趣味 • Perfume (ファンクラブ会員) • Disney • Jigsaw puzzle

Slide 3

Slide 3 text

マスタ タイトルの書式設定 会社紹介

Slide 4

Slide 4 text

マスタ タイトルの書式設定 4 © 2024 Recruit Co., Ltd. All Rights Reserved. リクルートグループについて 創業 1960年3月31日 「大学新聞広告社」としてスタート グループ 従業員数 51,373名 (2024年3月31日時点) 連結売上収益 34,164億円 (2023年4月1日〜2024年3月31日) 連結営業利益 4,025億円 (2023年4月1日〜2024年3月31日) グループ 企業数 連結子会社 227社 関連会社8社 (2024年3月31日時点) ビジョン・ミッ ション

Slide 5

Slide 5 text

マスタ タイトルの書式設定 5 © 2024 Recruit Co., Ltd. All Rights Reserved. リクルートについて リクルートグループのうちメディア&ソリューション事業を推進する会社 ※2012/10 中核事業会社・機能会社に分社 → 2021/4「リクルート」として統合 リクルート ホールディングス リクルートキャリア リクルート住まいカンパニー リクルートライフスタイル リクルートジョブズ リクルートマーケティングパートナーズ リクルートスタッフィング スタッフサービス・ホールディングス 人材派遣事業 RGF Staffing B.V. HRテクノロジ― 事業 RGF OHR USA, Inc. その他海外派遣グループ会社 Indeed,Inc. Glassdoor,Inc. リクルートテクノロジーズ リクルートコミュニケーションズ 事業 会社 機能 会社 マッチング & ソリューション事業 (株)リクルート

Slide 6

Slide 6 text

マスタ タイトルの書式設定 6 © 2024 Recruit Co., Ltd. All Rights Reserved. リクルートの事業内容について(主なサービス) 6 選択・意思決定を支援する情報サービスを提供し、 「まだ、ここにない、出会い。より速く、シンプルに、もっと近くに」を実現する メディア&ソリューションSBU HRテクノロジーSBU 人材派遣SBU 国内派遣 海外派遣

Slide 7

Slide 7 text

マスタ タイトルの書式設定 7 © 2024 Recruit Co., Ltd. All Rights Reserved. リクルートのビジネスモデルについて 7 リクルートには、ユーザーとクライアントという2つのお客様が存在します。 企業と人(B to C)、企業と企業(B to B)、人と人(C to C)、すべての間に立ち双方にとって最適な マッチングを図る「場」を提供しています。 ユーザーとクライアントを新しい接点で結び、 「まだ、ここにない、出会い。より速く、シンプルに、もっと近くに」の場を創造する

Slide 8

Slide 8 text

マスタ タイトルの書式設定 本題 © 2024 Recruit Co., Ltd. All Rights Reserved.

Slide 9

Slide 9 text

マスタ タイトルの書式設定 Azure Functions HTTP トリガーには 2 つのタイムアウトがある? © 2024 Recruit Co., Ltd. All Rights Reserved.

Slide 10

Slide 10 text

マスタ タイトルの書式設定 10 © 2024 Recruit Co., Ltd. All Rights Reserved. 社内システムの例 Q: どこの部分でタイムアウトする可能性があると思いますか? Webhook POST Approve Document (PATCH) Firewall (IP Range) Entra ID Microsoft Lists Find users data (GET) Enable / Disable users (POST) Create new item (POST)

Slide 11

Slide 11 text

マスタ タイトルの書式設定 11 © 2024 Recruit Co., Ltd. All Rights Reserved. 社内システムの例 Q: どこの部分でタイムアウトする可能性があると思いますか? Webhook POST Approve Document (PATCH) Firewall (IP Range) Entra ID Microsoft Lists Create new item (POST) ① Function app timeout Find users data (GET) Enable / Disable users (POST)

Slide 12

Slide 12 text

マスタ タイトルの書式設定 12 © 2024 Recruit Co., Ltd. All Rights Reserved. 社内システムの例 Q: どこの部分でタイムアウトする可能性があると思いますか? Webhook POST Approve Document (PATCH) Firewall (IP Range) Entra ID Microsoft Lists Create new item (POST) ① Function app timeout ② Request Timeout Find users data (GET) Enable / Disable users (POST)

Slide 13

Slide 13 text

マスタ タイトルの書式設定 そう HTTPトリガーはリクエストレスポンスの 時間も考えないといけない © 2024 Recruit Co., Ltd. All Rights Reserved.

Slide 14

Slide 14 text

マスタ タイトルの書式設定 14 © 2024 Recruit Co., Ltd. All Rights Reserved. • Function app timeout は、関数自体の処理実行可能時間を定義するもの • HTTP トリガーの場合は、Function app timeout に加えて Request/Response も考慮 が必要 Function app timeout • https://learn.microsoft.com/en-us/azure/azure-functions/functions- scale#timeout © 2024 Recruit Co., Ltd. All Rights Reserved.

Slide 15

Slide 15 text

マスタ タイトルの書式設定 15 © 2024 Recruit Co., Ltd. All Rights Reserved. Request timeout • https://learn.microsoft.com/en-us/troubleshoot/azure/app- service/web-apps-performance-faqs#why-does-my-request-time-out- after-230-seconds • Azure Functions HTTP トリガーを使う際は、Request timeout を考慮した リファクタリングの意識が必須 全てのプランの HTTP トリガーは Azure Load Balancer 影響の タイムアウトが発生する (Win: 230 sec / Linux: 240 sec)

Slide 16

Slide 16 text

マスタ タイトルの書式設定 なんでこんなことが起こったのか? © 2024 Recruit Co., Ltd. All Rights Reserved.

Slide 17

Slide 17 text

マスタ タイトルの書式設定 17 © 2024 Recruit Co., Ltd. All Rights Reserved. 社外ゲストアカウントのクリーニング申請書 • 1 つの申請書内で 100+ の アカウント入力の申請書が多発 • 1 メアドあたり最低でも 3 秒は 処理に時間が必要 © 2024 Recruit Co., Ltd. All Rights Reserved. 240 秒で処理が完結 できないものが発生 (想定が甘かった)

Slide 18

Slide 18 text

マスタ タイトルの書式設定 18 © 2024 Recruit Co., Ltd. All Rights Reserved. Function App が起こした挙動 SmartDB にはエラーを返したが、関数自体の処理は裏で継続 SmartDB Webhook Function App 実行結果

Slide 19

Slide 19 text

マスタ タイトルの書式設定 どう直したか? © 2024 Recruit Co., Ltd. All Rights Reserved.

Slide 20

Slide 20 text

マスタ タイトルの書式設定 以下を利用した処理のリファクタリングを実施 Durable Functions Azure Queue / Services Bus © 2024 Recruit Co., Ltd. All Rights Reserved.

Slide 21

Slide 21 text

マスタ タイトルの書式設定 21 © 2024 Recruit Co., Ltd. All Rights Reserved. Durable Function 採用型 Durable Function を構成して、処理の規模を小さくリファクタリングする Webhook POST Approve Document (PATCH) Firewall (IP Range) Entra ID Microsoft Lists Find users data (GET) Enable / Disable users (POST) Create new item (POST)

Slide 22

Slide 22 text

マスタ タイトルの書式設定 22 © 2024 Recruit Co., Ltd. All Rights Reserved. MQ 採用型 キュートリガーを配置して、Request / Response だけ切り出す Webhook POST Approve Document (PATCH) Firewall (IP Range) Entra ID Microsoft Lists Find users data (GET) Enable / Disable users (POST) Create new item (POST) or Service Bus Azure Queue

Slide 23

Slide 23 text

マスタ タイトルの書式設定 結論 HTTPトリガー使う時は リクエストレスポンスの考慮が必須 © 2024 Recruit Co., Ltd. All Rights Reserved.

Slide 24

Slide 24 text

マスタ タイトルの書式設定 さいごに

Slide 25

Slide 25 text

マスタ タイトルの書式設定 25 © 2024 Recruit Co., Ltd. All Rights Reserved. We Are Hiring!! • リクルートで Microsoft Azure / Microsoft 365 やりたい人いませんか? https://www.recruit.co.jp/employment/mid-career/ https://www.recruit.co.jp/employment/mid-career/