🔎

App Runner で BI 基盤を爆速構築した

に公開

Bizibl でプロダクト開発部長をしている金井です。今回は昨年末に一念発起して構築した BI ツール(Metabase)について紹介します。

背景

非エンジニアでもお客様のデータを安全に見れるようにしたかったのと、定期的に確認しているプロダクトの実績値(参加人数や開催数など)や、参加者属性や施策効果を分析するためのダッシュボードが欲しかったので BI ツールを導入しました。

クエリの結果を CS メンバーに共有する際にも、従来は SQL を実行して CSV に落とし、それを共有するという手順を踏んでいましたが、正直これは面倒でした。BI ツールならクエリを書いて URL を共有するだけで済むので、業務工数を減らすのにも有効なんじゃないかなと思いました。

BI ツール・インフラの選定

ツール

BI ツールには Metabase を採用しました。無料で複数アカウント発行が可能かつ、OSS なので自社インフラに載せてセキュアに運用できるため選択しました。現状予定はないですがカスタマイズも可能なので、必要に応じて手を入れられるのも魅力でした。
https://www.metabase.com/

インフラ

インフラは AWS の App Runner を採用しました。

理由はシンプルで、「安い」「構築が簡単」「管理工数が少ない」の三拍子そろっていたからです。EC2、ECS、API Gateway + Lambda も候補にしましたが、社内用のアプリにしてはオーバースペックだったり構築が面倒だったのでパスしました。

App Runner はここ数年で WAF の紐付けが可能になったり Secrets Manager からのシークレット指定ができるようになったりと、社内アプリを作る分には申し分ないレベルでアップデートされていたのもポイントでした。

↓参考にした記事

https://go-to-k.hatenablog.com/entry/2022/02/13/035248

構成図

Metabase の Image を App Runner で起動します。Metabase の無償プランでは MFA が有効化できなかったため、WAF で社員の IP アドレスからのみにアクセスを制限しました。また、Metabase に設定するの DB 接続情報は Secrets Manager で秘匿化しました。

Metabase のイメージは Docker Hub から取得、ローカルでビルドしそのまま ECR に Push しました。単発構築なのでデプロイパイプラインは組まず、ソースコードをいじる予定もなかったのでインスタントに作成しました。

インフラリソース構築

Terraform で以下を構築しました。

  • RDS リードレプリカ追加
    • Metabase のソース DB として指定するため
    • 管理用 DB は書き込みが発生するため、プライマリの DB インスタンスに接続する必要あり
  • Secrets Manager の設定
    • DB 接続情報(エンドポイント・ユーザー名・パスワード)を秘匿管理
  • IAM 設定
    • App Runner から ECR と Secrets Manager を参照するためのポリシー
  • セキュリティグループ設定
    • RDS へのアクセスを許可
  • WAF 設定
    • Metabase には MFA がないため、IP アドレス制限を実施
    • アクセス拒否時はカスタム HTML を返す仕様(デザイナーがデザイン)

App Runner の環境変数は Secrets Manager から指定しましたが、Terraform の書き方に少しはまったのと、IP アドレス制限をする際にカスタムドメインだけではなく、App Runner が自動で発行するデフォルトドメインも制限対象にするのがポイントだったくらいでかなり簡単に構築できました。

実際に使ってみて

定期的に見る数値(参加人数や開催時間など)をダッシュボードに固定しておくことで、請求作業の集計が大幅に楽になりました。
しかし、当初の目的だった「非エンジニアでも顧客データを見れるようになること」は達成には及ばず、BI ツールを利用することの学習コストが障壁になってしまいました。やはり普段見ている SaaS の管理画面と比べるとどうしても操作に慣れずオンボードしないというのがありました。
ただ、月次集計作業時のデータを見たり顧客分析の結果を見たりと、ある意味本来の BI ツールの使い方は非エンジニアでもできてきています。

課題としては、全社的に「データを参照する」文化は広がった一方で、「自分でクエリを書いて分析する」文化はまだ根付いていないこと。また、IP 制限は接続元のグローバル IP が変わるたびに設定変更が必要で、VPN などで固定化したいところです。

半年ほど運用していますがコストに関しては予想通り激安です。App Runner すごい。。

まとめ

App Runner × Metabase の構成は、軽量で管理工数もほぼゼロ、小規模な社内 BI 基盤にはかなり向いています。今回の構築は帰省先での空き時間にサクッとやったものですが、十分実用的で、これからも社内のデータ活用の一助になってくれそうです。


Bizibl では開発エンジニアを絶賛採用しています!カジュアル面談に興味がある方はこちらから!
https://open.talentio.com/r/1/c/bizibl/pages/99945

株式会社Bizibl Technologies テックブログ

Discussion