オープンソースの分散メッセージストリーミングツールApache Kafkaの商用化サービス(リアルタイムデータストリーミング)を提供しているConfluentが今週、Kafkaのユーザーにとって嬉しい機能を発表した。それは、Kafkaを使ってメッセージを、“正確に一度だけ”送る能力だ。
それのどこがすごいのか、門外漢には分かりづらいが、Kafkaのような高速メッセージングツールを使っている人たちにとっては、長年の見果てぬ夢だった。コミュニティの人たちは、実現不可能とも思っていた。
通常、メッセージを送る側は、それが届いたという受信確認を待つ。しかしConfluentのCTO Neha Narkhedeによると、Kafkaのような分散メッセージングシステムでは、途中で問題が起きることがある。コンピューターのエラー、ネットワークの障害、などなど。しかしたとえば金融関連のトランザクションなどでは、メッセージは確実に一度だけ送られてほしい。二度以上は、ノーだ。
多くの人びとが“正確に一度だけ”は達成不可能な目標と考えているのは、それを実現するためのスピードと正確さのトレードオフが大きすぎるからだ。しかしNarkhedeによると、同社はこの問題に大量の技術者をつぎ込み、1年がかりでやっと、長年探し求めていた解に到達した。
それを実現している技術的細部はきわめて多い。そしてNarkhedeによると、随所に技術的なトレードオフもあるが、でもみんなが考えるほど多くはない。というか、彼女によると、同社はこの問題を解決しただけでなく、メッセージのスピードを犠牲にすることなくそれを達成したのだ。
“正確に一度だけのモードでも、パフォーマンスのオーバヘッドはほとんど無視できる。そして通常モードでは、パフォーマンスは従来より向上した”、と彼女は語る。
その新しいリリースは、通常の利用で20%速くなり、“正確に一度だけ”の機能を使うと3〜10%のスピードペナルティが生じる。彼女によると、正確に一度だけではつねに多少のオーバヘッドは生ずるが、今後数か月の努力でそれをできるだけなくしていきたい、という。
彼女によると、この機能を眉唾で見ている人がまだ多い。頭がおかしいんじゃないか、と言う人もいる。長年、誰も解決できなかった問題だ。実際にそのとおり動くことを、どうやって確認するのだ? …彼女はコミュニティが抱(いだ)いている疑念を、このように表現した。
“何千時間もテストをした。パフォーマンスにはとくに気をつけた。Kafkaのアーキテクチャを抜本的に再検討し、全体的な高速化を図った。一年がかりで、やっと使えるようになった”、とこれまでの努力を彼女は説明する。
Confluentは3月に5000万ドルを調達し、調達総額は8000万ドルになった。Kafkaは最初、LinkedInで作られ、その後オープンソースのコミュニティへ移った。Confluentは、2014年に創業された。