2018年12月現在における Redash のはじめかた

この記事は Redash Advent Calendar 2018 1日目の記事です。

adventar.org

Redash Meetup を主催しているなかで、参加者アンケートを取っているのですが「これから Redash の導入を検討している」というかたが毎回2-3割程度いらっしゃるので、今日現在 Redash をはじめるにはどのようなステップを踏むとよいのか。というのを、主に環境構築の視点でまとめてみます。

まずは手軽なデモサイトに触れてみる

Redash には公式に提供されているデモサイトがあります。

Login to Redash

利用できるデータは BigQuery の Public datasets などがあるので、データを準備する必要もなく試してみることができるので、気軽に Redash の機能を確認したり、手触りを確かめたりすることができます。

注意点としては、デモサイトとして公開されているため、自分が書いた SQL が他者にも見えてしまいますし、クエリの作成者の名前が Google 認証から取得されたものになるということがあります。これらについて了承できない場合は、ログインして他者のクエリを眺めてみるだけにしておくのが良いかもしれません。

Redash のハンズオン資料に触れてみる

デモサイトである程度雰囲気を掴んだら、Redash Meetup のハンズオンイベントでも活用した資料に沿って、Redash の機能を幅広く体験してみることをおすすめします。

github.com

環境構築をするために Git と Docker が必要になるため、エンジニアでないとつまづくことがあるかもしれませんが、Git も Docker も多くの方が導入手順のブログなどを書かれているので、それらの記事を参考に準備することは、それほど難しくないと思います。

デモサイトと違い自分だけの環境なので、クエリやグラフの追加はもちろん、ユーザーを追加などの管理機能も試すことができるので、導入前にユーザーや権限の管理はどうなっているのか、どのようなデータソースに対応しているのかなどを試すサンドボックス環境としても利用しやすくなっています。

Redash のリポジトリにある docker-compose.yml を使わずにこのハンズオン資料をおすすめする理由としては、利用方法を広範かつ平易に説明されているというのも大きいですが、サンプルデータとして MySQL の world データベースがすぐに利用できる状態になっているため、Redash を試すためにデータを準備するというステップを踏まなくてよいというのも、大きなメリットのひとつだと考えています。

また、利用されている Redash もバージョンアップされているため、本記事の対象者とは少し異なりますが、古いバージョンから移行したら何が変わるのか?というのを検証する環境としてもなかなか便利に利用できます。

導入について考える

デモやハンズオン資料に触れ、 Redash の導入になんらかのメリットがあると感じることがあれば、いかにして導入するかということを考えることになるでしょう。

セットアップの手順は公式ドキュメントに記載があるので割愛しますが、導入の要点について軽く紹介します。

Redash 導入の前に、データ基盤を整える

Redash を導入する時点で、何をデータソースにするかということにはある程度想定しているものがあると思いますが、Redash は誰でも簡単に利用することができるという利点の裏返しで、誰でも意図せず重いクエリを実行できてしまうことがある。ということも理解しておきましょう。

具体的には Redash を活用する場合、リードレプリカの作成や、BigQuery などのデータウェアハウスに対象のデータを入れておくなどの準備が多くの場合で必要になります。

もし、Redash 導入時点でそういった環境が用意できていないのであれば、立ち止まって Redash 導入の前にデータ基盤を整えることを強くおすすめします。

Docker 上で運用することを前提に準備

Redash は2018年12月1日現在、Docker で依存するミドルウェアPython モジュールなどを導入・管理する方式が推奨されており、公式に提供されている AMI も Docker を使用したものになっています。そのため、Docker についての基本的な知識や dockerdocker-compose コマンドの使いかたを知っておく必要があります。

Redash は細かい設定や運用をしなくとも安定して動作しますが、ワーカーが詰まった場合など再起動することも運用としてはありえるので、AMI などでお手軽に導入したものの docker-compose コマンドは使ったことがなく再起動のしかたがわからないというような状態は避けるようにしましょう。

メモリは最低 2GB。IO 性能は Redash 運用上重要

マシンのスペックについても少し触れておきます。

Redash は利用要件にもよりますが、メモリは 2GB ほど確保できれば安定して利用することができます。AWS EC2 で言えば t2.small が最低要件になると考えるとよいでしょう。もちろん 2GB より多く割り当てられるのであれば、それに越したことはありません。

ストレージについては少し気にする必要があります。Redash はクエリの実行結果をキャッシュとして PostgreSQL のテーブルに書き込みます。大量のデータを Redash で扱いたい場合はキャッシュ読み書きで IO が多く発生するため、SSD など IO 性能のよいストレージを利用することがおすすめです。

特に EC2 で利用する場合 EBS の gp2 ストレージを利用する機会が多いと思いますが、先のように大量のデータを扱いたい場合には、バーストクレジットを消費しきってしまう場合もあるため、サイジングには注意が必要です。

環境変数を知っておく

Redash は環境変数で様々な設定を変更することができます。

環境変数のリストは公式ドキュメントや 、以下の記事が参考になります。

qiita.com

運用当初から細かなチューニングをする必要はありませんが、REDASH_DISABLED_QUERY_RUNNERS で不要なクエリランナーを無効化することでメモリ消費を減らしたり、QUERY_RESULTS_CLEANUP_MAX_AGE を適切に設定し、肥大化したキャッシュをデフォルトより短いスパンで削除できることは覚えておくとよいでしょう。

クエリが詰まった時のチェックポイントを知っておく

Redash 運用について、よく聞く困りごとのひとつに「クエリの実行が詰まる」という問題があります。

原因については状況や構成によるので一概には言えませんが、手前味噌ながら以下のスライドの16ページを見ていただくと、詰まった時にどこを調査すると良いのかというのがイメージしやすくなると思います。

speakerdeck.com

運用に困ったら

Redash の運用でもし困ることがあったら、Redash のフォーラムも利用してみてください。

discuss.redash.io

まだまだトピックは少ないですが、日本語でやり取りできますし、運用知見のあるかたがコメントしてくださることも多いので、困った時に頼っていただけるとうれしいです。

まとめ

Redash はオープンソースであるため、IaaS ベンダーにも依存せず利用者それぞれにあった環境で利用することができます。

これから Redash の導入を検討したい、名前は聞いたことがあるが、触ったことがないというかたにとって、この記事がちょっとしたきっかけになってくれたら嬉しいです。

Redash Advent Calendar 2018 2日目は Redash のメンテナーとしても一部ユーザーにおなじみの kyoshida さんによる記事です。お楽しみに!