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
layerx-bakuraku-how-to-handle-incoming-webhooks...
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
shnjtk
March 08, 2023
Technology
4.1k
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
layerx-bakuraku-how-to-handle-incoming-webhooks-with-difference-specifications-in-unified-way
shnjtk
March 08, 2023
More Decks by shnjtk
See All by shnjtk
EMになってもProduct Engineerであり続けるには
shnjtk
0
520
バクラクビジネスカード 運用業務に対する技術的な取り組み
shnjtk
0
190
20250707-AI活用の個人差を埋めるチームづくり
shnjtk
6
5.4k
プロダクト開発におけるAI時代の開発生産性
shnjtk
2
610
爆速開発文化を支えるProduct Engineerの 開発生産性向上の取り組み
shnjtk
16
14k
layerx-0-to-1-product-development-in-compound-startups
shnjtk
1
2.2k
layerx-bakuraku-how-to-achieve-agility-and-security
shnjtk
1
630
layerx-invoice-practical-devops-20211029
shnjtk
6
17k
layerx-invoice-practical-aws-architecture
shnjtk
1
2.9k
Other Decks in Technology
See All in Technology
ソフトウェア ファクトリー - 再現性のあるソフトウェアの工場づくり / Software factory
iktakahiro
1
410
【Data Engineering Summit2026_登壇資料】医療ビッグデータ×AIエージェントを支えるデータ基盤とハーネスエンジニアリング
jmdc_presentation
0
140
Loop Engineering これくらいでいい
mikanichinose
0
230
"優秀な誰か"の下位互換にならないために
yut0naga1_fa
1
1.7k
12 個 Tool と、 4,096 Token
hlum
0
140
Running Kotlin + Quarkus with Lambda
nealle
1
450
宣言型部分更新は何を解決しどこへ向かうのか
shuta13
1
340
LocalStack を使ったサーバーレスアプリケーション開発 / Serverless Development with LocalStack
kakakakakku
1
410
全PRの83%が AIレビューだけでマージできるようになった開発組織は その後どうなったか @2026/10
athug
0
140
AI時代のPRレビューにどう向き合うか?
kairim0
1
220
Datadog の学び方 - あるいは、オブザーバビリティを学ぶとは何か
mananyuki
1
560
無理せず続ける、子育てエンジニアの学び
codmoninc
PRO
0
710
Featured
See All Featured
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
38
3.1k
Are puppies a ranking factor?
jonoalderson
2
4k
Become a Pro
speakerdeck
PRO
31
6.3k
How GitHub (no longer) Works
holman
316
150k
Design in an AI World
tapps
1
350
Marketing Yourself as an Engineer | Alaka | Gurzu
gurzu
0
330
Context Engineering - Making Every Token Count
addyosmani
9
1.2k
Testing 201, or: Great Expectations
jmmastey
46
8.3k
Avoiding the “Bad Training, Faster” Trap in the Age of AI
tmiket
0
270
30 Presentation Tips
portentint
PRO
1
430
Beyond borders and beyond the search box: How to win the global "messy middle" with AI-driven SEO
davidcarrasco
3
280
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
49
3.6k
Transcript
複数の外部接続環境で 仕様の異なるIncoming Webhookを 統一的に扱うためのアーキテクチャ 2023.3.9 @shnjtk 株式会社LayerX
© 2023 LayerX Inc. 2 自己紹介 高江 信次 LayerX バクラク事業部 バクラクビジネスカード
開発チーム EM兼TechLead 2019年12月にLayerXにジョイン バクラク事業の立ち上げ期からサービス全体のインフラ開発・運用を担当 現在はバクラクビジネスカードの開発・運用に従事 @shnjtk
© 2023 LayerX Inc. 3 バクラクシリーズラインナップ * 経費精算のSlack連携は申請内容の通知のみ 稟議・支払申請・経費精算・ワークフロー ・AIが領収書を5秒でデータ化
・承認はチャットアプリから ・シームレスな内部統制構築 仕訳・支払処理効率化 ・AIが請求書を5秒でデータ化 ・仕訳データを自動学習、 手入力ゼロへ ・改正電子帳簿保存法に対応 ・利用料無料 ・即時追加発行 ・1億円以上決済可能 法人向けクレジットカード ・無料で始められる ・手入力ゼロで証憑管理 ・改正電子帳簿保存法に対応 帳票保存・ストレージ
© 2023 LayerX Inc. 4 バクラクビジネスカードの外部サービス連携 (Incoming Webhook) 決済電文、カード状態変更、etc. 本人確認結果通知
入金通知 サービスによってWebhookの仕様が異なる (リトライの有無、バックオフ間隔、最大リトライ回数など)
© 2023 LayerX Inc. 5 アーキテクチャ設計時の検討事項 • サービスの不具合でWebhookを処理できなかった場合に、自社のタイミングでリトライできるよう にしたい ◦
初めて接続するサービスであるため、本番運用時にどのようなメッセージが届くか事前に全て を把握することは不可能 ◦ 特に決済サービスについては、メッセージの内容や送信パターンは加盟店次第であるため、 運用開始時点の処理ロジックでは対応できないケースが発生する可能性がある ◦ 仮に不具合があった場合に、修正してリリースした後、手動でリトライをかける仕組みが欲しい
© 2023 LayerX Inc. 6 アーキテクチャ 処理順序 1. API Gateway経由でLambdaでメッセージを受信
2. LambdaでメッセージをS3に保管し、ジョブを作成してSQSに送信 3. 上記処理が成功したらLambdaはレスポンスとして200 OKを返す 4. workerでSQSからジョブを受信し、S3からメッセージを取得して処理を実行 設計のポイント • workerの処理が失敗した場合、ジョブがSQS(ソースキュー)からDLQに移される ◦ 手動でソースキューに戻せばリトライ可能 • メッセージはそのままS3に保管されているため、デバッグの際に実データを見ながら 調査・検証できる
Confidential © 2022 LayerX Inc. 7 メリット・デメリット メリット デメリット •
リトライを任意のタイミングで実行できる • Webhookのメッセージが失われないため、サービスに不具合があっても修正をリリースした後にリトライ できる • Webhookが大量に届いた場合でも一旦Lambdaで受けてキューイングするため、結果的にスロットリン グになりworkerの処理能力に合わせてメッセージを処理できる • Webhookを受けた時にDBなどのデータを照合・検証して200 OK以外のレスポンスを返す必要がある 場合、ソースコードやリリースの管理が複雑になる ◦ 例) Lambdaとworkerでモデルを共通化するためにmonorepoを導入するなど ◦ 今回は外部サービスのWebhook仕様として常に200 OKを返せばよいシンプルなものであったた め、Lambdaとworkerは別リポジトリで独立して管理している
© 2023 LayerX Inc. 8 まとめ • 仕様が異なる複数のIncoming Webhookを処理する際は、 Lambda
+ S3 + SQS で一度メッセージを保管してworkerで処理することで、リトライの仕組みを 自社仕様で統一できる • Webhookを受けた時点でメッセージが保管されるため、サービスに不具合が あった場合でも修正して後からリトライできる
© 2023 LayerX Inc. 9 バクラク事業に興味がある方、ぜひカジュアルにお話しましょう!!