2019年7月に分析基盤を Cloud Composer & trocco の構成に刷新しましたのでご紹介させて頂きます。
従来の構成や経緯につきましてはこちらの記事を参照ください。
だいぶ簡略化していますが、現在の分析基盤の構成です。GCPのCloud Composerが分析基盤のワークフローを管理、trocco(https://trocco.io/)がクラウド間データ連携を担っています。
尚、データ連携はストリーミング方式と日次連携でデータを組み上げるバッチ処理方式があります。
※troccoは 株式会社primeNumber 様 (https://primenumber.co.jp) のプロダクトです
※troccoはバッチ処理に使用しています
保有するデータについて、メインは先日800万DLを突破した弊社「JapanTaxi」アプリに関するデータです。 ただ、それだけにとどまらずタクシードライバー様を支援するJapanTaxi DRIVER’S、JapanTaxi タブレットの決済情報、タクシー車両の位置情報など多岐にわたるデータを保有しています。
プロダクトが成長するにつれて徐々にデータ量が増大し、パフォーマンスの低下が発生しました。また、このままデータ量が増え続けるとインフラのコスト増も想定されたため2018年12月ごろからリプレイスの検討を始めました。
※実際にリプレイスをするまで一時的なコスト増へと繋がりました
主な課題を整理すると下記の通りになります。
ただし、パフォーマンス低下について一つ一つ精査したところ、主要因はインデックスがきちんと張られていなかったことによるものと判明しました。こちらはSREチームと連携し、地道にチューニングを実施して改善しました。
※本記事とは別にCloud Composerについて記事を執筆する予定です
弊社はマルチクラウド環境であるため、どうにかデータをGCP BigQueryに連携する必要がありました。分析基盤の中心にGCP BigQueryを据えているため同じGCPのサービスであるCloud Composerの採用は上記の理由もあり自然な流れでした。
そうした中でEmbulkのマネージドサービスがあれば……という時にtroccoというサービスを見つけました(なければ自前で運用しなければなりませんでした)。
troccoの採用理由は下記の通りです。
troccoはデータ連携に特化したサービスでCloud Composerと相性が良いです。
プロジェクト開始当初の主な課題が解消されました。
もう少し掘り下げますと
なども良かった点です。
今までの運用課題を踏まえてリプレイスしたこともあり、障害対応の頻度が下がりました。これは単純に他のタスクに稼働を割り当てられるようになり良かったと思います。
また、教育コストが下がったことでデータアナリストでもパイプラインを整備しやすくなりました(自分でデータを集計加工できるようになった)。これにより少人数のBIチームを機能させることにも繋がっています。
troccoは様々なデータソースと連携できます。各データソースと連携するために接続情報を入力します。※管理者以外参照できません
Cloud ComposerからtroccoのAPIを実行する際はtroccoのAPIトークンをCloud Composer側に持つだけ良く、各接続情報はtroccoで一元管理されます。
※接続先は今後も増えていくそうです
メインで使用しているのはSQLServerですが、他にもAppStoreと連携できたことにより今までCloud Functionsで取得していた処理が葬られました。
設定例としてSQLServerからBigQueryに連携する処理をご紹介します。
転送元のDBで動作するSQLを移植すればOKなので簡単です。
日付のカスタム変数&replaceオプションを設定することで特定の日付パーティションにWRITE_TRUNCATEで転送できます。
※日次処理では昨日のデータを取得し、そのデータを昨日日付のパーティションに格納したい場合があるので冪等性が担保される処理が必要となる
trocco自体にもリトライ機構があります。
また、Cloud ComposerからAPI起動しているので使用していませんが、troccoにはスケジュール起動できる機能も備わっています。
設定が完了すると転送元、転送先の設定内容が表示されます。
ちなみに複製ボタンを使うとジョブ自体がまるまる複製されます。複製されたジョブをもとに、クエリと転送先のテーブル設定を書き換えれば同じ転送元からのジョブを簡単に増やしていけます。
ただ、GUI上不安となるのは誤操作です。意図せず変更して保存してしまった場合はなかなか気づくことができません。そのため設定完了後に設定ファイルをJSONでエクスポートできるようになっています。
troccoは今後も機能アップデートを予定しているそうなのでより便利に使えることを楽しみにしています。
Mobility Technologies では共に日本のモビリティを進化させていくエンジニアを募集しています。話を聞いてみたいという方は、是非 募集ページ からご相談ください!