事例紹介 Case Studies

株式会社ココナラ| Insight Database Testing がなければ、限られた時間の中で8億を超えるSQLを網羅したテストはできませんでした

個人のスキルや経験、知識を売り買いできる日本最大級のスキルマーケット「ココナラ」を運営する株式会社ココナラ。スキルマーケットの会員数は423万人を超え、450種類以上の幅広いカテゴリーに79万件以上のサービスが登録されている。順調にビジネスを拡大する中、スキルマーケット事業を支えるITシステムではデータベースがサポート終了時期を迎え、移行する必要があった。限られた時間の中、基幹データベースの移行でのトラブルは許されない。ココナラがその課題解決のためのテストツールとして選んだのが、Insight Database Testingだった。

Insight Database Testing がなければ、限られた時間の中で8億を超えるSQLを網羅したテストはできませんでした

システムプラットフォーム部 部長 / Head of Information
川崎 雄太

Amazon RDS for MySQL 5.7のEOLまでに
網羅性の高いテストを実施し安心できる状態で移行したい

ココナラはスキルマーケットだけでなく、サービスの幅を拡げている。同社の中長期的な戦略として、「toCだけでなくビジネス利用を促進し、ココナラ経済圏を築いていきます」と言うのは、ココナラ株式会社システムプラットフォーム部 部長 / Head of Informationの川崎雄太氏だ。そのために各サービスのアカウント基盤の共通化などにも取り組む。目指しているのはいままでオフラインで行われてきた取引をオンラインに置き換え便利に取引ができるサービスで、全てがオンラインで完結する。

中核のスキルマーケットのサービスを支えるITインフラでは、基幹データベースにAmazon RDS for MySQL 5.7を利用していた。ストレージには汎用SSDを採用していたが「使い続けるとIOPSに限界が訪れ、それがサービスの限界にもつながる懸念がありました」と言うのは、システムプラットフォームグループ インフラ・SREチームLead Engineerの長田浩平氏だ。

もう1つの課題が、MySQL 5.7自体の標準サポートが2023年10月に、Amazon RDS for MySQL 5.7は2024年2月に終了するため、期限内にリプレイスが必要なことだった。また、スキルマーケットのSLO(サービスレベル目標)を99.96%以上と定めているが、AmazonRDS for MySQLはSLAが99.95%と低いのも問題だった。さらにココナラでは、Amazon Aurora MySQLも利用しており、「複数データベースサービスの混在で、運用効率が悪いのも課題でした」と言う。

そのため2023年10月までに、Amazon RDS for MySQL 5.7をMySQL 8.0と互換性のあるAmazon Aurora MySQLバージョン3に移行することを決めた。これでIOPSの限界もなくなり、データベースのSLAを99.99%へと引き上げられる。

移行対象のデータベースは6つ。どのような手順で移行するかの計画を、2022年3月頃から立てはじめた。データベースをリポジトリとして利用するアプリケーションは11、それらのソースコードは120万行を超える。Amazon Aurora化とメジャーバージョンの更新を同時に行い、アプリケーションには影響が出ないようにしなければならなかった。

システムプラットフォームグループ インフラ・SREチーム Lead Engineer 長田 浩平氏

8億を超えるSQLのテストは
Insight Database Testingなしに実現できなかった

ココナラではインフラ構築から運用管理までを内製で実施しており、今回の移行は2人のエンジニアが担当した。限られた時間内でテスト工数は最小化したい。しかし安心、安全のためには、アプリケーションの動きを網羅したテストを実施したい。この矛盾への対処にあたってはアマゾン ウェブサービス ジャパンの担当にも相談し、その際に紹介されたのがInsight Database Testingだった。

網羅テストのためには、データベースのクエリログを利用したい。そのためにオープンソースのツールも検討し評価したが、使い勝手はあまり良くなかった。Insight Database Testingは機能が充実しており、「テスト結果を集約して可視化でき、分析しやすいと感じました」と言うのは、システムプラットフォームグループ インフラ・SREチームの片桐英斗氏だ。テスト結果の成否、クエリ時間、エラー内容などがCSVでも取得でき、エラー調査が容易にできると考えられた。

2023年4月には製品版ライセンスを取得して性能テストを開始した。実際に利用したクエリログの量は多く、そのままのサイズではInsight Database Testingへのアップロードが上手くいかないことがあった。
1時間分のログでサイズが10GB、2000万行ほどもあったのだ。この問題にはインサイトテクノロジーのアドバイスもあり、ログを分割し対処した。

1回目の性能テストでは、エラーがどれくらい出るか、新しい環境で性能的な問題はないかを確認した。テスト結果を調査するなか、並行して6月には2回目の性能テストを実施。テストの間もアプリケーションの開発は行われるため、社内の開発環境を移行後と同じAmazon Aurora MySQLで用意し、新規開発は移行の影響を受けないようにした。2度の性能テストを経て、Insight DatabaseTestingで効率的に網羅的テストができた。

ただ、性能テストを進めるにあたって課題もあった。「取得した1時間分のクエリログをテストするのに、テスト実行だけで4倍程の時間がかかりました」と片桐氏。本番環境全体では1日分のログを取得し、バッチ処理に対応するため週次、月次のログも取得しテストする。テスト結果は重複を排除しなるべく調査対象の量を減らしても、相当な時間がかかることが予測された。

システムプラットフォームグループインフラ・SREチーム 片桐 英斗氏

また、初めはGUI画面で実施しており、問題が出てテストが途中で止まるたびにその問題を解消し、GUIから手作業でテストをやり直す。手戻りが増えればさらにテストに時間がかかることとなる。それをGUIで確認し続けるのも大変だ。

幸いにしてこの問題は、REST APIが用意されていたことが分かり、スクリプトを書きテスト手順を自動化して解決した。この時も「インサイトテクノロジーは、とにかくレスポンスが速く手厚いサポートがありました」と片桐氏は言う。

今回テストしたSQLは8億ほど、結果の確認が必要だったものが2000ほどで実際に影響があったのは200、移行前に改修が必要だったのは30ほどだった。また移行してから修正したのはたったの2つだけだった。失敗したクエリはInsight Database Testing側で集約して表示され、確認の作業はかなりやりやすかった。「InsightDatabase Testingがなければ、これだけの数のSQLテストはできませんでした」と長田氏。

他の手段を使っていたら、SQLの精査だけでもかなりの時間を要し、少なくとも数倍の時間がかかっただろう。Insight DatabaseTestingがなければ、クエリログを利用した網羅性の高いテストは諦めるしかなかったはずである。その上で、「Insight DatabaseTestingを利用したことでエンジニア2名の体制で4ヶ月でテストを完了することができ、工数削減の効果もありました」とも言う。

ツールなどの提供だけでなく
安定したインフラを実現するためのパートナーとして期待

ココナラでは今後もWebサービスを拡大し、会員数も500万、1000万と増やしていく。それを支えるバックエンドの仕組みには、必ずデータベースがある。今後はデータを活用するデータドリブンな仕組みやレコメンド機能なども充実させる予定だ。

その際には低レイテンシーの実現、高い拡張性や信頼性などが求められる。また安全性やより高い性能を得るために、数年後には大きなバージョンアップが必要となる可能性もある。その際にインサイトテクノロジーに求めるのは、Insight Database Testingのようなツールの提供に限らない。川崎氏は最後に、「インサイトテクノロジーのようなベンダーには、サービスをより安定して使えるようにするパートナーとして、我々と一緒に伴走してくれることを期待しています」と締めた。

システムプラットフォーム部 部長 / Head of Information 川崎 雄太氏

関連製品

share

事例資料ダウンロード

TOP 事例紹介 株式会社ココナラ| Insight Database Testing がなければ、限られた時間の中で8億を超えるSQLを網羅したテストはできませんでした

Recruit 採用情報

Contact お問い合わせ

  購入済みの製品サポートはこちら