📊

AWS QuickSightを用いたデータ分析基盤の構築

に公開

こんにちは、ハコベルでエンジニアとして運送手配・配車管理システムの開発をしております北大路です。システムに蓄積されたデータをより活用したい、分析したいというお声に応えるため、ダッシュボード開発に取り組んだ際の経験を記事にいたします。

概要

システム開発をしていると、ユーザーから「蓄積されたデータをもっと自由に触りたい」とか「推移をグラフで見たい」とか言われることありませんか? そういう要求ってたいてい、急に来て、すぐやりたいって言われませんか?でも、BIツールって山ほどあるし、開発エンジニアにとっては必ずしも専門分野ではないですよね。

QuickSightなら普段忙しく開発しているエンジニアが片手間でデータ分析基盤とダッシュボードを作れます。本記事では、AWS上でサービス開発しているエンジニア向けに、QuickSightを使った分析基盤の構築方法を紹介します。

背景

サービスの標準機能やUIだけでは、顧客ごとに異なる関心に基づいたデータを提供することが難しい場合があります。そこで、柔軟なデータ分析基盤の構築が必要となります。

データ分析基盤に求められる要件

  • サービスの本番環境のパフォーマンスに影響を与えないこと

    • 分析用の複雑なクエリは負荷が高く、本番環境で実行するとユーザー体験を損なうだけでなく、場合によっては障害にもつながるリスクがあります
    • トランザクション処理と分析処理は特性が異なるため、環境を分離することが望ましいです
  • 正規化されたデータベースを分析に適した形に加工できること

    • 本番データベースは正規化され複数テーブルに分散していますが、分析では非正規化されたフラットなデータが必要です
    • 顧客ごとに異なる分析ニーズに対応するため、柔軟なデータ加工が求められます
  • 高速に目的の情報を提供できること

    • ダッシュボードはビジネス上の意思決定に用いられるため、レスポンスの遅延はユーザーの思考を妨げます

一般的なデータパイプライン構築

データ分析基盤を作るとき、一番めんどくさいのがデータパイプラインです。通常は以下のような作業が必要になります:

  • データ転送: ダンプ出力、ファイル転送、ダンプ取込と、それぞれにプログラムを書いてワークフローを組む
  • データ加工処理: クエリをどこで実行するか、そのためのプログラムをデプロイするか、どうスケジュール実行するか、について検討し実装する
  • パフォーマンス・チューニング: 加工後のデータ格納先でインデックス設計やチューニングを行う

今回のアプローチ

QuickSightとAurora MySQLのClone機能を使ったところ、データパイプライン構築のための作業はかなり楽になりました:

  • データ転送: Cloneだけで完結。Jenkinsを用いて日次でAurora MySQLのCloneを実行しています
  • データ加工: QuickSightのデータセットのカスタムSQLで完結(実行環境、デプロイ、スケジューリングが全部入ってる)。顧客の求める分析要件に適したデータの加工をカスタムSQLで行います
  • パフォーマンス: 加工結果はSPICEに格納されるので、インデックス設計もチューニングも不要

全体構成

構成の利点

  1. サービス本番環境への影響なし

    サービス本番環境のデータベースへの負荷を気にせず、複雑な問い合わせが可能です。

  2. 効率的なデータ加工

    複雑なデータの加工も、データセットのカスタムSQLに記述してSPICEに取り込むことで高速アクセスが可能になります。ややこしいカスタムSQLは作成画面でプレビューがタイムアウトすることもありますが、データソース(MySQL)が応答可能な限り、時間がかかってもSPICEに取り込んでくれます。

    SPICEとは:QuickSightの高速インメモリ計算エンジン(Super-fast, Parallel, In-memory Calculation Engine)の略称です。データをインメモリに保持することで高速な分析処理を実現します。

  3. 自動化されたデータパイプライン

    SPICE更新はスケジュール実行できるので、Cloneジョブの後続としてスケジュールしておけば、転送から加工まで一連のパイプラインを簡単に組むことができます。

  4. ダウンタイムなし

    データベースのClone中もSPICEの更新中も、ダッシュボードは以前のスナップショットにアクセスできるため、顧客へのダウンタイムはありません。

  5. 多様なデータソース対応

    データセットにはAuroraデータベースのみならず、CSVファイルからの直接指定やS3上のファイルなど、多くの外部データを利用可能です。

感想

構築して感じたのは、意外とあっけなくできたということです。データベースをCloneして、あとは好きにクエリを書くだけなので当然かもしれません。データ分析基盤構築にとってもっとも頭を悩ますデータパイプラインが簡単に実装できるのはエンジニアにとって大きなメリットです。

ダッシュボードのビジュアライズは表、チャート、ダイアグラム、マップなど必要十分なコンポーネントが装備されている印象です。

AWSを用いて提供しているサービスであれば、QuickSightは最も有力な選択肢といえるでしょう。

Hacobell Developers Blog

Discussion