Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
layerx-bakuraku-how-to-handle-incoming-webhooks...
Search
shnjtk
March 08, 2023
Technology
3.9k
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
470
バクラクビジネスカード 運用業務に対する技術的な取り組み
shnjtk
0
180
20250707-AI活用の個人差を埋めるチームづくり
shnjtk
6
5.3k
プロダクト開発におけるAI時代の開発生産性
shnjtk
2
580
爆速開発文化を支える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
620
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
なぜ、あなたのAPIは使われないのか? AX時代の設計原則、ガードレール、運用体制
yokawasa
1
240
ここは地獄!つらい朝会を体験することで、チームとしてのより良い振る舞いに気づくワークショップ / The stand-up meeting from hell in the game industry
scrummasudar
0
380
全社でのソフトウェアサプライチェーン攻撃対策をやってみた with Takumi Guard
z63d
0
320
変更し続けられるシステムをどう保つか — AI時代のSSoTという設計原則
kawauso
1
1.4k
脱Jenkins、インターン生が挑んだCIツールGitHubActions移行
mixi_engineers
PRO
1
210
iOS/Androidの二刀流エンジニアがFlutter & TypeScriptへ越境後の現在地 - Flutterがメインになって見えた景色と現在の醍醐味 / Dual-Platform Mobile Engineer Shifts to Flutter & TypeScript - The View and Real Thrill of Going Flutter-First
bitkey
PRO
0
110
テックカンファレンス三大ステークホルダーの文化人類学 ─ 違いを認め合う関係性作り
bash0c7
4
910
CloudWatchから始めるAWS監視
butadora
0
270
現場をAIで動かす「フィジカル AI」の組み込み設計の考え方【SORACOM Discovery 2026】
soracom
PRO
0
130
書籍セキュアAPIについて
riiimparm
0
360
データエンジニアこそ組織のオントロジーに向き合うべき — 問いに答えるAIから、事業を動かすAIへ
gappy50
4
1.1k
AI Agent を本番環境へ―― Microsoft Foundry × Azure Serverless で作る Enterprise-Ready な基盤
shibayan
PRO
1
620
Featured
See All Featured
Color Theory Basics | Prateek | Gurzu
gurzu
0
400
Organizational Design Perspectives: An Ontology of Organizational Design Elements
kimpetersen
PRO
1
780
How to Ace a Technical Interview
jacobian
281
24k
The AI Search Optimization Roadmap by Aleyda Solis
aleyda
1
6k
More Than Pixels: Becoming A User Experience Designer
marktimemedia
3
470
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
254
22k
Sam Torres - BigQuery for SEOs
techseoconnect
PRO
0
440
Principles of Awesome APIs and How to Build Them.
keavy
128
18k
The Mindset for Success: Future Career Progression
greggifford
PRO
0
430
Money Talks: Using Revenue to Get Sh*t Done
nikkihalliwell
0
420
Leadership Guide Workshop - DevTernity 2021
reverentgeek
1
330
Noah Learner - AI + Me: how we built a GSC Bulk Export data pipeline
techseoconnect
PRO
0
340
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 バクラク事業に興味がある方、ぜひカジュアルにお話しましょう!!