Tsūjunという名前のKSQL向けWebUIを作った
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を使ってる方は使ってみてください。