コラボレーションツールを開発、提供するヌーラボでは、データベースの安定運用と継続的なバージョンアップが不可欠だった。 しかし、従来のシナリオでの回帰テストなどでは本番でのSQL実行を再現できないため、テストの網羅性に課題があり、移行後の影響を十分に把握できないことが懸念された。 そこで、AWS上で稼働するAmazon Aurora MySQLのバージョンアップにあたり、より網羅的で効率的なテストを行うため、Insight SQL Testingを導入した。本番と同等のトラフィックデータによるリアルな検証が可能である点、AWSにおける利用実績が豊富な点などが決め手となった。
BacklogやCacooでは、数百万を超えるユーザーが利用しており、システムは24時間365日稼働しています。ユーザー数の増加やワークロードの多様化により、これらのプロダクトと連携する認証基盤のデータベースのバージョンアップにはより高い安全性が求められていました。Insight SQL Testingであれば、よりリアルな検証が可能と判断しました
今回のバージョンアップでは、従来の方法であれば少なくとも3ヶ月かかっていたテストを、Insight SQL Testingにより1ヶ月足らずで完了できました。Insight SQL Testingは今後も利用したいツールです。
Reliability Engineering部
二橋 宣友氏
データベースのバージョンアップテストをより網羅的に実現したい
ヌーラボは、チームのコラボレーションと生産性向上を支援するツールを開発、提供している。プロジェクト・タスク管理ツール「Backlog」、オンライン作図ツール「Cacoo」、組織の情報セキュリティ、ガバナンスを高める「Nulab Pass」などを提供し、「業務におけるコラボレーションを、より楽しく簡単に、効率よくできることを目指しています」と言うのは、ヌーラボ Reliability Engineering部 二橋宣友氏だ。
Reliability Engineering部 二橋 宣友氏
ヌーラボの製品は、口コミで利用が拡大している。そのため、ヌーラボではユーザーとのコミュニケーションを重視し、製品の改善に取り組んでいる。さまざまなIT技術を用いて製品を進化させるだけでなく、社員の技術向上や社外との技術交流にも積極的だ。
ヌーラボにとって、データは極めて重要だ。より良い製品を迅速に提供できるよう、データに基づいた判断をしたい。そのためには、データドリブンな意思決定ができる環境が必要だ。「蓄積されたユーザー情報などを活用し、コラボレーションを促進する機能を提案していきます」と二橋氏は言う。
データを安全に活用するには、安定したデータベース運用と継続的なバージョンアップが必要だ。バージョンアップ作業は、顧客に影響がないよう安全かつ確実に実施する。たとえばBacklogは2020年5月時点で170万人、Cacooは2018年6月時点で300万人のユーザーが利用しており、システムは24時間365日稼働している。ユーザー数の増加やワークロードの多様化により、これらのプロダクトと連携する認証基盤のデータベースのバージョンアップにはより高い安全性が求められていた。
これに対応するため、本番移行前に十分なテストを実施したい。過去のバージョンアップの際には、本番環境に近い構成のテスト環境を用意したうえで、テストシナリオをもとに性能影響や機能影響の確認を行っていた。しかし、「従来の方法では、シナリオ作成など属人的な要素もあり、本番に近いワークロードを再現できず、テストの網羅性に欠けていました」と二橋氏は振り返る。
開発者が判断して本番で実行されているかもしれない多くのレアケースを抽出しシナリオに入れ込むのは、容易ではない。 漏れなく実施するには、手間とコストがかかる。効率的かつ網羅的なテストの実施は大きな課題だった。
本番と同等のトラフィックデータを用いた網羅的なテストが実施可能
ヌーラボでは、Amazon Web Services(AWS)を製品開発、運用、業務システムのプラットフォームとして利用している。製品の裏側で動く認証、認可、ユーザー管理、さらに会計などの業務システムもAWS上で稼働しており、データはAmazon Aurora MySQLで管理されている。
Amazon Aurora MySQL バージョン 2(MySQL 5.7互換)の標準サポートは、2024年10月31日に終了する。そのためMySQL8互換のAmazon Aurora MySQLバージョン3へのバージョンアップが求められていた。バージョンアップにあたっては、これまでより網羅的で効率的なテストを実施したい。しかしそのためにツールを自社開発するのは、作業のコストや時間を考えると、現実的ではなかった。
そこでヌーラボは、2024年4月からテストツール利用の検討を開始した。AWSの担当者に相談したところ、紹介されたのがInsight SQL Testingだ。調査の結果、「本番データのコピーに対し、本番と同等のトラフィックデータを用いたテストを実施できるため、よりリアルな検証が可能と判断しました」と二橋氏は語る。本番環境に影響を与えず、本番と同等のワークロードでテストができる。テストデータはWeb画面から容易に取得でき、AWSサービスとの親和性も高い。これらの点を評価し、6月には導入を決定、テストを開始した。
Insight SQL Testingは、AWS Marketplaceからすぐに導入でき、テスト環境の構築は約2日間で完了した。約1週間でテストデータを作成し、約2週間でテストを実施、結果確認などを経て、テスト全体を約1ヶ月で完了することができた。
平日のユーザーアクセスが多いケース、ジョブが多く実行されるケース、ランダムな日時、月末月初など、8つのテストパターンを作成し、各シナリオに合うワークロードデータを2ヶ月分のログから取得した。これにより、短期間でテストの準備と完了が可能となった。
Insight SQL Testingの利用はスムーズだった。「AWSとの親和性が高く、Amazon CloudWatchとのログ連携なども容易でした。不明点があれば、インサイトテクノロジーに問い合わせてすぐに回答を得られました」と二橋氏は振り返る。
網羅性が向上しその上で3ヶ月かかるテストが1ヶ月で終了
「Insight SQL Testingのダッシュボードは、結果の概要が分かりやすく分類され、性能劣化のSQL件数も表示されます。クリックすれば詳細を確認でき、ツール上でクエリの再実行や統計データの確認も可能です」と二橋氏は評価する。
今回のテストでは、GROUP BYにおける暗黙のソート処理の違いによる修正が必要なSQLが一つ見つかり、その他にもコレーションの変更が必要なものがあったものの、本番環境への大きな影響は見られなかった。
また、バージョンアップとは無関係に、インデックスが未設定のクエリも見つかり、新たなチューニングポイントを発見することができた。
今回のバージョンアップでは、従来の方法であれば少なくとも3ヶ月かかっていたテストを、Insight SQL Testingにより網羅性を高めつつ1ヶ月足らずで完了できた。二橋氏は、短期間で網羅的なテストができたことは、ツールのコストを考慮しても大きなメリットだと評価する。
今回の検証結果から、二橋氏は「Insight SQL Testingは今後も利用したいツールです」と語る。ヌーラボでは複数の製品とデータベースがあり、すべてにライセンスを適用するとコストが高いため、短期間利用可能な柔軟なライセンス体系があればさらに便利だと指摘する。
また、データベースのバージョンアップをより安全に行えるよう、導入のさらなる容易化や結果判断の簡素化、性能改善の具体的な提案なども要望する。ヌーラボにとってデータとデータベースの重要性は今後さらに増すため、インサイトテクノロジーの技術やノウハウを生かした提案にも期待している。