はじめに
企業の応募要件で、到達保証について理解していることが必須条件としてあったのですが、初めて見た概念?でして、まとめてみました。
到達保証(Delivery Guarantees)とは?
メッセージ配信システムやデータストリーム処理で非常に重要な概念である。
到達保証には、「Exactly-Once(正確に一度)」、「At-Least-Once(少なくとも一度)」、「At-Most-Once(最大でも一度)」の3つのタイプがあります。
これらは、データの信頼性と整合性をどのように確保するかという問題に対する異なるアプローチを提供します。
正確に一度(Exactly-Once)
この保証タイプは、メッセージが正確に一度だけ受信されることを保証します。これは、重複やデータの損失なしに、データが正確に処理されることを意味します。例えば、銀行の取引システムではこのレベルの厳格さが求められます。ただし、この保証を実現することは技術的に最も難しく、システムのパフォーマンスに影響を与える可能性があります。
少なくとも一度(At-Least-Once)
メッセージが少なくとも一度は受信されることを保証します。これは、メッセージが失われることはないが、同じメッセージが複数回受信される可能性があることを意味します。システムは、重複したメッセージを適切に処理する能力が必要ですが、これによってデータの損失を避けることができます。多くの場合、バランスが取れた選択と見なされます。
最大でも一度(At-Most-Once)
メッセージが最大でも一度だけ受信されることを保証します。これにより、メッセージの重複受信は発生しませんが、メッセージの損失が発生する可能性があります。リアルタイムのデータストリーム処理や、メッセージの損失が許容されるシナリオで使用されます。パフォーマンスが優先される場合に適していますが、データ損失のリスクを考慮する必要があります。
終わりに
割と簡単な概念でした。バックエンドエンジニアには知っておくべき内容ではないかと思いました。まだまだ勉強不足なのがわかったいい機会でもありましたね。
最後まで読んでいただき、ありがとうございました!