
trocco® の品質を守る、とても普通な取り組み
こんにちは。マネージド ETL&ワークフローサービスの trocco® を開発している、primeNumber CTO の鈴木(@kekekenta)です。
trocco® はデータエンジニアの方々の様々な手間を削減し、より価値ある業務に集中していただくためのプロダクトです。BigQueryなどを中心にした分析基盤構築をサポートします。
昨年、Series B の資金調達を終え、より多くのお客様に価値を提供するべく trocco® の開発を進めております。
2022/06/07 に BtoB tech meetup#1 が開催され、trocco® の品質を上げる取り組み について紹介いたしました。
この記事では、発表内容を抜粋して紹介いたします。
こちらが、当日の発表資料です。
発表の内容
trocco® のご紹介

trocco® は、MySQL や S3 などのデータを BigQuery を始めとしたデータウェアハウス(DWH)に統合し、分析基盤を構築するためのデータエンジニアリングサービス です。大企業からスタートアップまで様々な企業にご利用いただいており、お客様からは「trocco® 無しでは分析基盤構築は考えられない」など、嬉しいフィードバックを多々頂いてます。
もしご興味がありましたら、以下のサービス説明ページをご覧ください。
https://trocco.io/lp/index.html
Rails、React、Kubernetesを中心とした技術スタック

Kubernetes を使ったジョブ基盤については、紹介スライドをご覧ください。
Embulkを利用したデータ統合SaaSの構築と運用
フルタイムメンバー15名ほどでtrocco®を開発しています

データを扱うプロダクトとして、品質は最重要事項です

一方、品質を維持するのはとても難しいです

接続先が多いことが品質を維持することに難しさがある要因の一つです。
また、機能開発が活発で、1日平均9プルリクエストをリリースしていてるため検証が大変ということも上げられます。
そこで、我々が取り組んでいることをいくつか紹介します。
1. リリース前のステージング確認
まずはステージング確認についてです。
ステージング確認は、以下の方針で行っています。
各プルリクエストの改修内容について、QAテスターの方が動作検証を行い、検証ログに残す
検証ログの内容をエンジニアが確認し、ダブルチェックを行う
実際の流れを紹介します。
まず、「1. 実装者がプルリクエストにステージングでの動作検証項目を記載」します。

次に、「2. QAテスターの方がプルリクエストの記載内容を元に、ステージング確認を実施」します。
確認内容を(必要であれば)スクショ付きでGitHub上にログに残します。
最後に、「3. エンジニアが検証ログのチェックを行い、問題なければリリース」します。

ステージング確認は今の所上手く回せていて、リリース後に大きな問題が発覚することもなく運用できています。
これまでは、実装者自身が確認を行っていましたが、QAテスターの方に入社いただき、フローを整備することでエンジニアがより開発に集中できるようになりました🎉🎉

2. trocco®を使ったtrocco®のデータ品質検証
次に、我々が社内で「QAデータチェック」と読んでいる品質検証についてご紹介します。
リリースや突然の接続先の仕様変更により、転送データが変更されてしまわないように、trocco®の機能を使って実際のデータで転送を行い、転送データの検証を行っています。

QA用のBigQueryに対して定期的にデータ転送を行い、転送結果が期待するものと完全に一致することを確認しています。
入力値に対して結果が期待するものであることを検証するという点では、テストコードの考え方と同じです。
これを、trocco®のワークフローとBigQueryデータチェック機能を使って実現しています。

ワークフローはデータ転送タスクやBigQueryデータチェックの依存関係をUI上で定義することが出来る機能です。

BigQueryデータチェックでは、クエリを入力し、出力結果に対してエラー条件を指定できます。Redashのアラート機能をイメージしていただくと近いかもしれません。
ワークフローとBigQueryデータチェックを組み合わせて、転送データが完全に一致することを検証しています。

「例えばGoogle広告の場合、まず各種レポートごとにデータ転送を実施。後続の検証フェーズでBigQueryデータチェックを使って、それぞれの出力テーブルの内容を検証しています。」の方が通じやすいかもです
社内では、この仕組をQAデータチェックと呼んでいます。
接続先の追加・改修が行われるたびに、QAデータチェックの検証を追加しています。
また、ステージングから本番にリリースする前に、必ず一通りのデータ転送を検証して成功することを確認しています。
QAデータチェックはエンジニアでなくとも作成することが出来るため、QAテスターの方を中心に整備しています。
エンジニアでなくてもテストコードを書くのと同じことが出来るようになっています。
3. チェックリストの導入

開発者、テスターに属人化されない品質担保のために、チェックシートの作成・整備を進めています。
最後に

trocco®の顧客数は日々増えており、まだ見えていないけどQAとして早めにやっていくべきことは大量にあると思います。
是非、これを読んで少しでも trocco® のQAに興味を持っていただいた方がいましたら、お話させて下さい!
QAエンジニア、WEBエンジニアを募集しています
trocco® を一緒に伸ばしていっていただけるQAエンジニア、WEBエンジニアを絶賛募集中です。伸びしろしか無い、面白いプロダクトだと自負しています。
データエンジニアリングの経験は問いません(私も含め、現メンバーもほとんどがデータエンジニアリング未経験でジョインしています)。
この記事を読んで、少しでも興味を持っていただけましたら、是非カジュアル面談でお話させて下さい!
primeNumber: 会社紹介
現在募集中のエンジニア職種
もちろん、カジュアル面談からでもOKです!