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
570
爆速開発文化を支える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
ゼロをイチにする仕事が終わったあと
smasato
0
140
「勝手に広まる」人気 AI エージェントを爆速で作ろう!(AWS Summit Japan 2026講演資料)
minorun365
PRO
10
2.8k
背中から、背中へ /paying forward to community
naitosatoshi
0
210
本当の”仕事”を手放せる未来が見えた
mu7889yoon
0
210
5分でわかるDuckDB Quack
chanyou0311
4
290
開発組織のAI活用レベルを可視化する「エンジニア版AI番付」の取り組み
fuzzy31u
0
100
NDIAS CTF 2026 問題解説会資料
bata_24
0
160
AWS Summit 2026で見えたSIerにとっての Amazon Quickの位置づけ
maf_0521
0
150
勉強会企画をアプリで構造化してみた 〜そこで見えた、AIとの付き合い方〜 / I've structured a study group plan using an app.
pauli
0
280
AIペネトレーションテスト・ セキュリティ検証「AgenticSec」紹介資料
laysakura
2
7.9k
起点・思考・出力で分解する 〜PM業務の自動化設計〜
kazu_kichi_67
2
1.2k
Fabricをフル活用する AI Agent Hub -製造業特化AIエージェントの設計
iotcomjpadmin
0
190
Featured
See All Featured
<Decoding/> the Language of Devs - We Love SEO 2024
nikkihalliwell
1
270
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
287
14k
Why Mistakes Are the Best Teachers: Turning Failure into a Pathway for Growth
auna
0
180
A Guide to Academic Writing Using Generative AI - A Workshop
ks91
PRO
1
340
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
47
8.2k
Music & Morning Musume
bryan
47
7.3k
16th Malabo Montpellier Forum Presentation
akademiya2063
PRO
0
160
Measuring & Analyzing Core Web Vitals
bluesmoon
9
870
SEO for Brand Visibility & Recognition
aleyda
0
4.6k
Practical Orchestrator
shlominoach
191
11k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4.3k
[RailsConf 2023] Rails as a piece of cake
palkan
59
6.7k
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 バクラク事業に興味がある方、ぜひカジュアルにお話しましょう!!