Amazon QuickSight使ってみたと注意点

## はじめに

Amazon QuickSightは、AWSが提供するフルマネージドのビジネスインテリジェンスサービスです。

ビジネスとして不確定な市場に新しいサービスを立ち上げる時に、DevOpsやアジャイルの観点を取り込んでサービス開発をすることも多いのではないでしょうか。
不確定な市場にサービスを打ち出すに当たっては、利用者のフィードバックや動向から、新たな価値を生み出すことが重要になってきます。

Amazon QuickSightを用いることで、ビジネス視点のデータ可視化とともに、ビジネスの課題発見や新たな価値発見につなげることが期待できます。

そんなQuickSightを興味本位で触ってみた感想と、はまりやすかった点をお伝えできたらなと思います。

:warning: 
情報は、2020/12/21時点の情報です。
また、実際に運用しているシステムで利用した情報でないため、間違った情報もあるかもしれません。
間違いなどあったら、是非コメントください

## Amazon QuickSightについて

Amazon QuickSightでできることとしては、各種クラウドサービスで収集したデータの可視化となります。
S3やRDS, RedshiftといったAWSのデータソースの他に、GitHubやTwitter、Salesforceなどの外部サービスと連携できることも特徴の一つです。
外部サービスと連携することで、開発情報やマーケティングに対するインサイトを得られるようになっています。

またAmazon QuickSightには、2つのエディションが存在しています。
`Standard Edition`と`Enterprise Edition`があり、それぞれで利用できる機能が異なります。

それぞれのエディションの機能の違いを簡単にまとめると、以下のようになっています。

|機能名|Standard|Enterprise|
|:---|:---|:---|
|SPICE[^1]の利用|:o:|:o:|
|ダッシュボードや分析の共有|:o:|:o:|
|モバイルデバイスとの連携|:o:|:o:|
|閲覧者ユーザの追加|:x:|:o:|
|VPC内リソース、オンデマンドリソースとの連携|:x:|:o:|
|メールでのレポート機能|:x:|:o:|
|ML Insight[^2]の利用|:x:|:o:|

それぞれのEditionの比較と、利用料金の違いは [Amazon QuickSightの料金](https://aws.amazon.com/jp/quicksight/pricing/?nc=sn&loc=4)にまとめられています。
導入の際の参考にしてください。

[^1]: 高速にデータを処理するインメモリエンジン<br/>[SPICEへのデータインポート](https://docs.aws.amazon.com/ja_jp/quicksight/latest/user/spice.html)

[^2]: QuickSightが用意している機械学習の利用<br/>[ML インサイトの使用](https://docs.aws.amazon.com/ja_jp/quicksight/latest/user/making-data-driven-decisions-with-ml-in-quicksight.html)

---

利用方法については多くのサイトにまとめられていたりするので、ここからは利用してみて良さそうな点やハマってしまった注意点などをまとめます。

## 良かった点

### 1. データ間の結合が楽

以下は、QuickSightが配布しているのデータの編集画面になります。
このように同じRDSのテーブル間のデータの結合がグラフィカルに実施できるだけでなく、異なるデータソース間での結合も容易に実施できます。

![quicksight.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/320615/0ab85cb1-3693-db61-2330-95642c2048e1.png)

例えばフロントエンドのデータレポートをS3バケットに出力して、バックエンドのデータをRDSに配置しているようなシステムであれば、
通常、それぞれのデータを取得して整形して新たに結合したデータを、特定のAWSリソースに格納するなどの必要が出てるかもしれません。

QuickSightであれば複雑なクエリを発行することなくデータの結合が実現できます。

### 2. QuickSightのユーザとしてIAMユーザがそのまま利用できる

QuickSightのユーザとしてQuickSightのユーザを発行することもできますし、IAMユーザをそのまま利用することもできます。

そのため、チーム内の開発者や運用者は自分のIAMユーザをそのまま利用することもできますし、チーム外部のビジネスユーザを招待する時にはQuickSight用のユーザを作成することもできます。

## 注意点

利用方法については多くのサイトにまとめられていたりするので、ここでは利用に際してはまりやすかった注意点などをまとめます。

### 1. Enterprise Editionでしかできないことが多い

上記に簡単にEdition毎の違いについてまとめましたが、Enterprise Editionでしかできないことが案外多いです。

一番大きな違いとしては、VPC内リソースへのアクセスができないことです。
運用しているシステムからビジネスメトリクスに利用するデータを取得する際に、実際に利用しているRDSなどのデータを利用したいケースがあると思います。

AWSでサービス運用をする際、バックエンドシステムのデータベースは通常VPCのプライベートサブネットに配置するかと思います。
Amazon RDSだから、QuickSightからも簡単に接続できるだろうと思い、接続しようとしたらうまく接続ができませんでした。

公式ドキュメントの[VPC への接続 Amazon QuickSight](https://docs.aws.amazon.com/ja_jp/quicksight/latest/user/working-with-aws-vpc.html)をみても、どのように設定するかがわかりにくい...

ということで、実際には以下のブログにある設定が必要になりました。

[Amazon QuickSightのプライベートVPC内のデータアクセスの設定方法について](https://aws.amazon.com/jp/blogs/news/amazon-quicksight-private-vpc-access/)

### 2. ML Insightを使うための条件がある

売りの一つであるML Insightを利用するためにも条件があります。
簡単なデータを作ることで"予測"などが使えるのかと思ったら、そうではありませんでした。

ML Insightを使うためには、以下の公式ドキュメントにあるように、ある程度データが蓄積されたデータ要件を満たす必要があります。

[ML Insights を Amazon QuickSight で使用するためのデータセット要件](https://docs.aws.amazon.com/ja_jp/quicksight/latest/user/ml-data-set-requirements.html)

そのため運用初期から、予測や異常検知の機能を利用することを期待するのは厳しいかもしれません。

## まとめ

多くのサービスチームでは、監視の観点でサービスを支えるシステムのメトリクスやログの可視化を実施していると思います。
インフラ・アプリケーション監視ツールとして[Datadog](https://www.datadoghq.com/ja/)や[New Relic](https://newrelic.com/jp), [Prometheus](https://prometheus.io/)などを活用して、システムの状態を監視し、以上が発生した時には素早く復旧できるように実施していると思います。

ビジネス成長のためのBIツールとして、[Amazon QuickSight](https://aws.amazon.com/jp/quicksight/)を使ってみるのはいかがでしょうか？