データ分析基盤チームでエンジニアをしている宮井です。社内のデータ分析基盤を開発しています。
5/29に開催されたMachine Learning Casual Talks #10(以下、MLCT)にて
内製のデータ分析プラットフォームであるCroisについて発表してきました。
会場はメルカリ様のオフィスでした。
MLCTは機械学習を用いたシステムを実際に運用していく中で得た知見やノウハウを共有する勉強会です。
発表したスライドは以下です。
Crois自体は機械学習を組み込んだシステムではありませんが、機械学習を用いたシステムを実行できる基盤として、
どのような技術を使って実現しているか、どういったトラブルがあったか、を共有させていただこうと思い、
今回発表させていただきました。
スライドの内容の補足
発表時に触れられなかったことをスライドの各セクションごとに補足します。
1.Croisの概要
- Croisはメインの機能として以下の3つを提供し、それらを操作できるAPIとWebUIを提供しています。
- コンテナの実行基盤
- 要求されたスペックを持つインスタンス上でコンテナを実行する機能です。
- コンテナのカタログ
- Croisでは入出力の構成が決まったコンテナをモジュールと呼んでいます。登録されているモジュールを一覧できる機能です。
- 例えば、BigQeuryへのクエリ発行を行うモジュールやS3へファイルをコピーするモジュールがあります。
- ワークフローエンジンとジョブスケジューラー
- YAMLでワークフローを定義できます。モジュールの実行順やパラメータ・入出力ファイルの設定ができます。
- cronの形式でスケジュール実行を設定できます。
- 過去のジョブもすべて閲覧できるようになっており、モジュールの出力したログもすべて取得できます。
- 上記以外の機能としてユーザーグループごとにジョブの実行やワークフローの編集といった機能ごとに権限を設定できる機能があります。
- プロダクトの設計思想などについてははてな様との対談記事にも紹介があります。
2.Croisの仕組み
3.開発フローの工夫
- 「CI周りの知識が必要とされると敷居が高い」と書いていますが、この部分はデータサイエンティストではなくITプランナーの方にモジュールを作ってもらうときに感じたことになります。
- データサイエンスチームではCI/CDツールを用いた開発が行われていないのか?と質問があったため、補足です。
- Croisは様々なユーザーを対象としているためテンプレートとして簡単にできるものを提供し、自分でやりたいようにやりたいレベルの人には最低限必要なことを伝え、独自にやってもらう形をとっています。
5.起こった変化
- こうした変化が起こった要因となったことに、Croisの便利さはもちろんあると思いますが、それ以外にも、ユーザーマニュアルを作成したり、要望を聞くWikiなどを整備し必要とされる機能を開発していったことがあると思っています。
Q&Aや懇親会でいただいた感想など
- CIにDroneを使っている理由は?
- 弊社のエンジニアチームでメジャーなCIなので使っています。
- OSSのCIの中で、コンテナベースかつYAMLでフローが設定できるためです。
- リクルートはDataRobotを使っていると聞いたが、内製で作るのはなぜ?
- 自分たちにあったカスタマイズができるのが理由です。
- ユーザーの要望を聞き入れて作っている感じか、基盤側が主導して作っている感じか?
- ユーザーの要望を聞き入れて作っていくスタイルです。そうして利用を広げていっています。
- 幅広いユーザーに使われるデータ系プロダクトはユーザーのレベル感に合わせるのが難しそう。
- プロダクトオーナーのITプランナーがそのあたりのレベル感を調整しています。
- 現在、CroisではSQL, YAMLを書けて、ある程度エンジニアリングに理解のあるITプランナーまでをターゲットに設定しています。
- Croisで何ができるかがよくわからなかった。
- スライドで不足していた機能面の説明を補足に書かせていただきました。
感想
メルカリ様の発表でもYAMLのETL処理を定義できる内製のワークフローエンジンが出てきました。
データサイエンスを活用したプロジェクトを進めるにあたり、そういったワークフローエンジンが求められているのだと改めて実感しました。
発表の中では4000並列で処理を行っているといった内容もあり、Croisももっとスケーラビリティを高めて、
様々なワークロードに対応できるようにしないといけないなと感じました。
良い刺激になった勉強会でした。また機会があればぜひ参加させていただこうと思います。
広告
RCOアドテク部では一緒に使いやすいデータ分析基盤を作ってくれる優秀なエンジニアを募集しています。
採用ページ