MF KESSAI(以下弊社)のデータエンジニア、@yasumamfkです。
弊社は30名ほどの組織(エンジニア10名)ですが、データ分析・基盤構築を専門に扱うチーム・専任を置いています。 この記事では、本チームがどのようにデータ基盤の構築を行っているのかについて解説したいと思います。
チームのミッション
本チームのミッションは審査システムの改善や社内で利用されるKPIを算出するために必要なデータ基盤整備、分析、収集、およびそれらを利用したサービスの開発
です。
これまで本チームでは自動審査システムの改善や法人の名寄せシステム、また社内向けの情報基盤の構築を行ってきました。以下、それらのシステムで利用されている技術を説明したいと思います。
データ基盤
各サービス個別に利用している技術に違いはありますが、共通してデータ収集・加工を行うインフラが必要です。
当初とは一部異なる技術を利用している部分もありますが、一貫していかに安心・高速処理可能
なデータ基盤を構築できるか、ということを念頭におき基盤の構築を行いました。
以下では全サービスに共通するデータの収集(保存)・加工・投入について説明したいと思います。
データ収集(保存)
基盤整備をする上で、利用するデータストアが安定し使いやすいものですと他との連携が行いやすいです。 本チームではほぼ全てのデータを一度Bigqueryに投入し、そこから加工する形を取っています。 *データのソースは、弊社の本番環境(GCP)にあるMySQLや外部サービス(API)などからの情報。
ワークフロー
データの抽出・加工(変換)・投入は一元管理できるようCloud Composerを利用しています。
当初はdigdagを利用していましたが、専用のVM構築・運用やVM内のリソース管理、そしてデプロイの仕組みなど考える事が多くなってしまっていました。そこでよりワークフロー開発に集中できるように、マネージドサービスであるCloud Composerに乗り換えました。
データのソースごとにワークフローを管理していて、各リソースからデータを取得・加工・新規データの投入までを行います。
データの加工と投入
リソースから抽出したデータを加工するには多くの場合SQLで実施しています。数百万レコードのデータを扱うのでリソースを気にせず、かつ処理スピードの速いBigqueryを加工フェーズでも活用しています。
ただ、加工したデータの検証が難しいのでセンシティブなデータ加工を行う場合や複雑な処理にはpythonを利用しています。
Bigqueryへのデータ投入も非常に簡単で、公式のSDKを利用すれば特に悩まずデータの投入が可能です。
おわりに
ある程度データ基盤が整ったので、今後はとにかくデータを蓄積してサービスに利用できるデータを増やしていきたいと思います。
もっと詳しい話を聞きたい方、AIを用いたサービスに興味ある方はぜひお気軽にMF KESSAIへ遊びにきてください! (ご連絡はこちらから)