応募トーク
これは応募されたトークです。聞きたいと思うトークをSNSで拡散しましょう。選考時に参考にさせていただきます。
talk
気象データのリアルタイム配信と可視化(ja)
スピーカー
Satoru Kadowaki
対象レベル:
初級
カテゴリ:
Best Practices/Patterns
説明
気象庁から提供されるファイルベースの気象データをRQやZeroMQを使ってリアルタイムにユーザへ提供する仕組みを紹介します。
ファイルの受信から利用者への提供までをPythonで実現しました。
データベースにはElasticsearch/MySQL/Amazon S3を組み合わせて構築し、
同期処理になりがちな部分を非同期環境としてインプリメントしています。利用者はウェブブラウザでリアルタイムに気象データを見ることができます。
目的
Pythonでシステムを構築する際のポイントを学びます。分散サービスによるデータ配信の仕組みや、MySQL/Amazon S3のような同期処理が必要となるサービスについて非同期環境に組み込む手法の例を事例から学びます。
また、気象データをウェブブラウザで可視化する方法についても説明します。
概要
ファイルベースによるデータの取得/配信は様々なところで行われていますが、気象データのようなよりリアルタイム性が重視されるデータを多数のクライアントに配信するにはマイクロサービスにより負荷の分散やパフォーマンスを十分に考慮する必要があります。
本セッションでは気象庁のデータ配信を行っている気象業務支援センターから提供される気象GPV(Grid Point Value, 格子点値)データをリアルタイムに配信/可視化できるシステムを紹介します。
具体的な問題としては気象データのようなリアルタイム性が重視されるデータにおいて、
- ファイルベース配信において利用者への分配提供をどのように実現するか
- 日々蓄積するデータをどのようにして蓄積/提供するか
のような点についてどのように解消するかがカギとなりますが、ZeroMQやRQのようなマイクロサービスとElasticsearch, Amazon S3を利用することによってパフォーマンスを考慮したシステムを実現します。
また、気象データは多数のデータ種類があり、利用者は全てのデータを必要とせず、ある特定のデータのみを必要とするケースも多く、あるルールに従ったデータ分配が必要とされるようなケースでは、ルールとの整合性を取りながら性能を確保していく必要があります。
このようなケースにおいてはMySQLのようなRDBを利用することも多いですが、少し古いMySQLのような非同期アクセスを提供しないサービスにおいてもTornadoやRedisと組み合わせることにより同期環境のボトルネックを軽減できます。
システムは以下のような概要図となりますが、本セッションではPythonで構築されたリアルタイムファイル配信の仕組みを中心に実際に受信した気象GPVデータをウェブブラウザで可視化するデモを含めながら紹介します。
![][1]
[1]: https://bytebucket.org/bakfoo/pub/wiki/pycon2016kadowaki/pycon2016.png