Open13

大量のデータをいい感じに処理してみたい、というふわっとした動機で作るGleamアプリケーション

Kaikei EzakiKaikei Ezaki

大量のデータをリアルタイムで処理してみたいというのが動機になる。

以下のNOAAのデータが、高頻度の更新かつ大規模(9万行くらいのJSON)なデータ元だったので、活用する。
MVPとして、アラートの種類を分別してカウント、更新された場合のみインクリメントするような簡易的なUIを想定している。
カウンターのリアルタイム版的な。

https://api.weather.gov/alerts

Kaikei EzakiKaikei Ezaki

なんとかGleamでNOAAのJSONをパースできるようになった。
エラーハンドリングがまだまだだけど、一旦できあがったからよしとする。
1週間くらいかかったので、嬉しい。

Kaikei EzakiKaikei Ezaki

JSOのパースとDBへの保存まで実装完了した。
Insertをバルクでやる方法を知らないので、500件くらいのInsertが走ってしまいよくないと思う。

Kaikei EzakiKaikei Ezaki

Sever-sent Evnetを活用して、NOAAから取得したデータをフロントエンドまで、Severityを含んで送信することに成功した。
一度に返ってくるJSONは9万行あるが、さすがに毎回すべて新しいデータというわけではないので、差分のみ更新しているが、これならNOAAのからの取得を5分に1度とかでも良い気がする。

Kaikei EzakiKaikei Ezaki

Gleam <-> GoなどのGleamを核としたマイクロサービス群で、gRPCを使いたい。
知識不足なのもあるだろうが、JSONをフロントエンドからバックエンドへ渡してやる際に色々定義したり考慮するのが面倒だし、ミスも起きるので避けたい。

gRPC自体は複雑すぎて、自分の理解が及ばないと感じたので、Connect, CUE, Bufを使って軽量な感じでやりたい。