2017年8月開催のKafka Summitで発表されたKSQLというApache Kafka用分散ストリーミングSQLエンジンがあるのですが、そのKSQL向けのWebUIを作りました。

KSQLの紹介記事


名前の由来は、熊本県にある通潤橋という橋です。
(橋の中に水路の通水管が通っていて、橋から放水する様子がストリーミングっぽい)

ソース

なぜ作ったのか?

世の中にストリーミング処理のフレームワーク/ライブラリはいくつかありますが、僕はNorikraとFlinkを使った経験があります。
Flinkは分散処理できるし耐障害性に優れているので、とても良く出来ていると思います。
ですが、NorikraのようにWebUIでSQLだけ書けばストリーミング処理が出来る手軽さが欲しいとずっと思っていました。

KSQLはまだdeveloper previewですが、発表以来個人的に注目しています。
ksql-cliという公式CLIクライアントがありますが、ちゃんとしたWebUIが無いのでせっかくだから自分で作ってみるかーというのが開発のきっかけです。

(Tsūjunを作り始めた時には気づかなかったけどWebUIも一応あります。ドキュメントには記載が無さそうなので、ひっそりと存在しているという印象です)

Software stack

UI

  • TypeScript
  • Vue.js
  • Fetch API *サーバからのレスポンスをストリーミング処理するために使用

Serverside

  • Kotlin
  • Spring Boot
  • WebFlux

ちなみに、WebFluxがマッチするアプリケーションのタイプは以下のようなものがあります。

  • Gateway
  • Streaming scenario
  • High traffic

今回作ったTsūjunはブラウザとKSQLサーバのGatewayとして動作しつつデータをストリーミング処理するので、とてもWebFlux向けでした。

まとめ

まだ一部のKSQL構文にしか対応してませんが、今後も継続的に開発していくのでKSQLを使ってる方は使ってみてください。