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
shnjtk
March 08, 2023
Technology
4k
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
510
バクラクビジネスカード 運用業務に対する技術的な取り組み
shnjtk
0
190
20250707-AI活用の個人差を埋めるチームづくり
shnjtk
6
5.4k
プロダクト開発におけるAI時代の開発生産性
shnjtk
2
600
爆速開発文化を支える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
LTのテーマ どうきめてる?〜5つの型と私のやり方〜
yama3133
1
100
例外の正しい扱い方 そのエラー try-catchして大丈夫?
jinwatanabe
3
500
株式会社シーエーシー エンジニア向け会社紹介資料
cac
0
57k
ユーザー価値を届け続けるためにウォンテッドリーが大切にしている文化
kotaminato
0
150
品質と信頼性を地続きにする
grimoh
0
370
AIネイティブプロダクトで顧客価値を最大化するプロダクトエンジニアとFDEの協働
righttouch
PRO
0
310
20260912_スクラムにジェネラリストは必要か
ryugen04
0
420
Adaptive Warehouse を今すぐ導入すべき理由と迷ったときの判断基準
__allllllllez__
0
230
白金鉱業Meetup Vol.25 アウトカムが二値のデータに対するCausal Impact
brainpadpr
0
190
Deploying a Full-Stack Bun-Native Framework on Cloudflare Workers
7nohe
0
170
アプリをもっと"iOSアプリっぽく"する小さな工夫 / Small Touches That Make Your App Feel More Like an iOS App
matsuji
1
890
Railsのように考える: See through the Master
snoozer05
PRO
3
820
Featured
See All Featured
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
46
3k
A Guide to Academic Writing Using Generative AI - A Workshop
ks91
PRO
1
460
How to build an LLM SEO readiness audit: a practical framework
nmsamuel
1
900
KATA
mclloyd
PRO
35
15k
Large-scale JavaScript Application Architecture
addyosmani
515
110k
The AI Revolution Will Not Be Monopolized: How open-source beats economies of scale, even for LLMs
inesmontani
PRO
3
3.7k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
254
22k
Believing is Seeing
oripsolob
1
220
Jess Joyce - The Pitfalls of Following Frameworks
techseoconnect
PRO
1
410
技術選定の審美眼(2025年版) / Understanding the Spiral of Technologies 2025 edition
twada
PRO
120
120k
Money Talks: Using Revenue to Get Sh*t Done
nikkihalliwell
0
500
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
130k
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 バクラク事業に興味がある方、ぜひカジュアルにお話しましょう!!