Tableau Server on AWSのベストプラクティス
BIアプリケーションとして、Microsoft Power BIとSFDCのTableau は人気を二分しています。
Tableau のサーバサイド製品であるTableau ServerのAWS導入時のベストプラクティスを実体験をもとに示していきたいと思います。また、Tableau ONLINEとの比較やQuickSightとの比較も実体験をもとにしていきたいと思います。
Tableau ServerのAWS導入時の全体構成とEC2
Tableau としても下記をヘルプページに乗せておりますが、少し教科書的な部分があります。
Amazon Web Services に Tableau Server をインストールする - Tableau
Tableau Serverはシングルノード構成、HA構成の大きく二つがあります。(Act Standbyの構成もありますが、シングルノード構成の延長のため割愛)
各構成でのAWSダイアグラムを下記に示します。いずれも基本はEC2ですが、大きなポイントを列挙します。
※データベースとしてRedshiftを載せていますが、他のデータベースでもOKです。ただ後述しますが、Redshiftがおすすめです。
- ドライブを複数にする事がポイントです。最低でも、OS用のEBSと、Tableau Serverインストール用のEBSです。そして、シングルノード構成や3HAのInitial NodeではTableau Serverのバックアップファイル保存用にもう1ドライブつけることが小さいですがポイントになります。(S3にこのバックアップファイルをUploadする事がほとんどだとは思いますが)
- シングルノード構成や3HAのInitial NodeにはEC2のAutoRecoveryを設定します。これは、耐障害性を高めるためです。
- インスタンスタイプは公式のページにもあるように、Rシリーズがおすすめです。
- WindowsServerを利用する場合、Windowsの動的ポートの拡張を行います。
https://kb.tableau.com/articles/issue/tableau-server-port-exhaustion-problems?lang=ja-jp
シングルノード構成
- 3HA構成の時には、ロードバランサを利用するとおもいますが、SSL(HTTPS)の終端と、StickySessionのONは設定するのが望ましいです。ただし、Tableau 純正の性能試験ツールであるTabjoltを利用する場合、StickySession=OFFとHTTPのリスナーをロードバランサで設定する必要があります。
HA構成(3ノード構成)
Tableau ServerでのLIVE接続 vs Hyper(抽出)
Tableau Server ではレポートに使用するデータベースを都度接続するか(Hyper)、あらかじめ抽出するか(Hyper)から選択できます。
AWS設定上のではいずれの接続でもPrivateLinlk設定ですが、両者は以下の特徴があります。
- LIVE接続
- オンライン:即時制のあるデータを利用可能。オンラインレスポンスは劣る
- バッチ:抽出のバッチが不要
- Hyper(抽出)
- オンライン:即時制のあるデータは利用できない。オンラインレスポンスは早い
- バッチ:抽出のバッチが必要
上記に加え、AWS利用上の注意点としては、データベースインスタンスは稼働時間にたいして課金がされます。つまり、Hyper(抽出)においてはバッチ実行時のみにデータベースを利用する事がコストメリットが大きいです。これとベストマッチするのは、Redshift Serverlessです。
ですので、Redshift Serverless+Tableau Server のホスティングが現時点では最も良い構成と思われます。
QuickSight vs Tableau Server
機能面ではQuickSightとTableau では差が大きいために、単純な比較はできないものの、非機能や構成面で比較したいと思います。
QuickSightを利用する場合の構成は下記になります。サーバレスであるために、非常にシンプルです。また、スケールを意識しなくてよいのは大きなアドバンテージです。
AWS内でデータが閉じるのもよい点です。
一方で、QuickSightがサポートするのは抽出(SPICE)のみですが、Tableau であればバッチ記述が必要な更新をスケジュール設定できるのは、大きな強みです。
QuickSightは「ちょっとBIを試したい」というニーズには大きく適合すると思われます。