BIツール"metabase"を日本語対応版にバージョンアップした話
こんにちは。
株式会社div開発チームのリーダー兼エンジニア採用人事の片岡(@mato_kata)といいます。
前回はエンジニアブログの目的を書きましたが、今回はエンジニアブログらしく技術のお話です。
はじまり
divではデータ可視化のためにmetabaseというBIツールを利用して、TECH::CAMPのデータを可視化しています。バージョンは0.29系でした。
そして最近リリースされた0.30.3に関する公式のツイートを見ると、日本語対応が入ったとのツイートがありました。
そこで、このタイミングでバージョンアップすることにしました。今回はこのバージョンアップに関するお話となります。
今回やったことを3行でまとめる
①metabase環境のクローンを作る
②クローンしたmetabase環境をバージョンアップをする
③route53でDNSレコードの変更して新metabaseに切替する
元々の環境
サーバ環境
metabase環境はAWSを用いていますが、サーバ管理コストを抑えるためにElastic Beanstalk(以下、EB)のdocker環境上に構築していました。
DNS
EBが作成したELBのDNS名に直接アクセスするのではなく、ELBのDNS名をDNSに登録してユーザに分かりやすい名前でアクセスできるようにしていました。
作業方針
既存環境を残したまま新環境に切替をしたかったので、EBのクローンを作成してからバージョンアップし、新metabase環境にDNSのレコードを変更して切替を実現することにしました。
これを図にまとめるとこのようになります。
今回やったこと
1. metabase環境のクローンを作る
AWS Webコンソールにログインして、EBを開きます。
EBで動いているmetabase環境をクリックして以下のような画面を出してから、「アクション」→「環境のクローンの作成」をクリックします。
環境名と環境URL(EBのURL)を入力します。環境URLを入力したら「使用可能かチェック」をクリックして、利用できるURLかどうかを確認します。
RDS/EC2/ELB/セキュリティグループ等、EBのクローン作成が行われます。しばらく待ちましょう。(手元の環境では10分以上かかりました)
待っていると以下のような画面が出てきます。これでクローン完了です。
注意点(2019/05/18追記)
Beanstalkの仕様なのですが、クローン作成時のRDSは素のRDSかBeanstalkを作った時のスナップショットが元になります。現在RDSに入っているデータは引き継がれないので注意しましょう。データを引き継ぐ場合はRDSのスナップショットを取得して、新規でBeanstalkを作る必要があります。
2. metabaseバージョンアップ
metabaseバージョンアップはこの資料に従って実施していきます。
なお資料には書かれていませんが、0.29系と0.30系はDBのテーブル構造が変わるので一度バージョンアップすると元に戻せません。そこで気になる場合は、失敗した時に元に戻れるようにバックアップ(スナップショット)を取っておきましょう。
まず0.30.3のEB用metabaseをダウンロードします
そしてファイルがダウンロードできたら、クローンしたEB環境を開いて「アップロードとデプロイ」をクリックします。
「ファイルを選択」で先程ダウンロードしたmetabaseのファイルを選択し、バージョンラベルを記載してから「デプロイ」をクリックします。
このような画面になり環境更新が行われます。
このまま待つとヘルスが警告になりますが、OKになるまで待ちます。
3. DNSレコードの変更
metabaseのDNSレコードを変更します。metabaseアクセス用DNSレコードには旧metabase環境のELBが登録されているので、これを新metabase環境のELBに変更します。
ここではroute53での切替方法を説明します。まずroute53を開きましょう。
metabaseを登録したDNSレコードがあるHosted Zoneを開き、対象のDNSレコードを選択します。そしてAliasをYesになっていることを確認してから、Alias Targetに対し新metabase環境のELBを選択します。(ELB名が不明な場合は、こちらを開いてELB名を確認します)
その後右下にある「Save Record Set」をクリックして保存します。
保存後、DNSのレコード変更が反映されるのに少し時間がかかりますので待ちます。レコードが更新されたら、今までと同じURLを使ってmetabaseにアクセスしましょう。
ログインすると、以下のような画面になってバージョンアップできています。ちゃんと日本語で出力されていますね。
もし動作しない場合は、慌てずにDNSのレコードをもとに戻しましょう。
これだけで元に戻ります。
まとめ
いかがだったでしょうか。
ツールのバージョンアップというのは、今回のように元に戻せない場合があるため気を使うことが多いです。しかしこのようにEBを使っているとEC2/RDS/ELB一式のクローンが作れるので、これを利用しない手はありませんね。
しかもダメだった時はDNSレコードを元に戻すだけ、という気軽さです。こういう安全性を確保した上で、どんどん新しいシステムを利用していきたいと思います。
そして現在エンジニア採用中です。サービス内容や教育に興味を持たれた方は是非一度お話ししたいです。Wantedlyで募集しておりますので、応募をお待ちしております!