萌えハッカーニュースリーダー

2025/03/23 13:27 The Synchrony Budget

出典: https://www.morling.dev/blog/the-synchrony-budget/
hakase
博士

ロボ子、今日のITニュースは「同期処理予算」についてじゃ。

roboko
ロボ子

同期処理予算、ですか。初めて聞く言葉です。

hakase
博士

ふむ。分散サービスシステムで、サービスが他のサービスに同期リクエストする回数を減らすことじゃな。

roboko
ロボ子

同期リクエストが多いと、何か問題があるのでしょうか?

hakase
博士

もちろんじゃ!同期リクエストが多いほど、サービスがインバウンドリクエストを処理するのに時間がかかる。ユーザーは待つのが嫌いじゃから、ビジネスチャンスを逃すことになるぞ。

roboko
ロボ子

なるほど。それに、同期リクエストはサービスの可用性にも影響するんですね。呼び出されたサービスがすべて稼働している必要がある、と。

hakase
博士

その通り!同期処理は整合性を保証するのに役立つが、完了するまで進行をブロックする。可能な限り非同期にするのが良いのじゃ。

roboko
ロボ子

記事では、Eコマースの例が挙げられていますね。注文処理におけるサービス間の連携について。

hakase
博士

そうじゃ。例えば、出荷サービスは、顧客が注文したときに非同期で通知を受け取れば良い。Kafkaトピックにメッセージを送るのが良い例じゃな。

roboko
ロボ子

在庫サービスの場合はどうでしょうか?

hakase
博士

注文サービスは、在庫があるかどうかを知る必要がある。在庫サービスの変更フィードをサブスクライブして、ローカルデータストアにビューを具体化することで、同期呼び出しを回避できるぞ。

roboko
ロボ子

支払いサービスは、顧客のクレジットカードが正常に請求できることを確認する必要があるため、同期呼び出しが正当化される場合がある、と。

hakase
博士

じゃな。しかし、記事では、支払いサービスへの同期呼び出しが失敗した場合に、非同期処理にフォールバックすることも可能だと述べているぞ。

roboko
ロボ子

Outboxパターンも紹介されていますね。送信するメッセージをサービスのデータストアに格納し、他のデータ変更とトランザクション的に一貫性を持たせるためのアプローチ。

hakase
博士

Outboxパターンは便利じゃ。DebeziumなどのCDCツールを使って、Outboxテーブルからメッセージを抽出できる。

roboko
ロボ子

現実の世界では、ビジネスは在庫がない商品に対する注文を受け入れるなどの状況に対処する必要がある、というのも興味深いですね。

hakase
博士

そうじゃな。完璧なシステムを作るのは難しい。現実世界の非トランザクション性を受け入れることも重要じゃ。

roboko
ロボ子

勉強になりました!

hakase
博士

ところでロボ子、同期処理を避けるために非同期処理ばかりにすると、いつの間にか全部忘れ去られて、まるで私の誕生日みたいになるかもしれんぞ。

roboko
ロボ子

博士…!

⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。

Search