企業の円滑な運営に不可欠な勤怠管理システム。顧客の就業形態に合わせて24時間365日稼働することから、その基盤となるデータベースのバージョンアップにはより一層の慎重さと確実性が求められる。しかし、それを満たすには多大な時間と労力がかかる。クロノスは、自社で開発・提供するクラウド型勤怠管理システム「X’sion(以下クロッシオン)」で利用していた、標準サポート終了を迎えるAmazon Aurora MySQLバージョン2からバージョン3へのバージョンアップにおいて、この課題に直面していた。限られた時間とリソースの中で、どうすれば安全性を高めつつ効率的なバージョンアップ作業を実施できるのか。
その解決策として採用されたのが、Insight SQL Testingだった。クロノスでは、Insight SQL Testingを利用して実際に発行されているクエリを収集し、SQLテストを実施した。これにより、大幅に工数を削減しながら網羅的な検証を実現することができた。Insight SQL Testingによって実現した効率的かつ確実性の高いバージョンアップは、移行後のクロッシオンの安定稼働に大きく貢献した。

データベースのバージョンアップテストを網羅的に実施する際には、極めて強力な製品です。これからは、Insight SQL Testingの活用を前提に、前倒しで計画を立てて対処することができるようになります
開発本部 開発部 本部長
玉沖 直人氏
限られた時間、リソースでの効率的なテストの実現
クロノス株式会社は、エル・エス・アイ ジャパンの就業管理システム部門が独立し、2011年5月に創立された。同社にはエル・エス・アイ ジャパン時代から通算37年にわたる勤怠管理システムの実績がある。「その間、常に顧客の要望に真摯に対応してきました」と言うのは、クロノス株式会社 開発本部 開発部 本部長の玉沖直人氏だ。
勤怠管理システムは、労働に関連する法規などに対応するだけでなく、企業ごとに異なる就業規則に合わせる必要がある。そのため一般的な勤怠管理システムの多くが、就業規則に沿うようカスタマイズ開発で対応している。一方、クロノスの製品は、細かい設定変更が可能で、追加開発なしに多様な就業規則に対応できるのが特長だ。結果として、極めて多くの顧客がカスタマイズなしで利用している。

勤怠管理システムのデータ処理は、従業員の労働時間の集計が中心となる。計算した労働時間は給与に直結するためミスなどは許されず、データの取り扱いは極めてセンシティブだ。クロノスが2017年から提供しているクラウド型勤怠管理システムの「X’sion(以下クロッシオン)」は、AWSのプラットフォームで運用されている。特に高い信頼性が求められるデータ管理には、Amazon Aurora MySQLバージョン2(MySQL 5.7互換)を利用していた。しかしこの標準サポートが2024年10月に終了することから、バージョン3(MySQL 8.0互換)へ更新する必要があった。
「顧客対応や機能開発も通常通り実施する必要があり、自社でバージョンアップ対応をするにはリソースが十分ではありませんでした。どうすれば効率的にバージョンアップが進められるのか、非常に悩んでいました」と玉沖氏。その際に紹介されたのが、インサイトテクノロジーが提供するSQLテストソフトウェア「Insight SQL Testing」だった。検討の結果、Insight SQL Testingなら工数削減が見込めると判断し、導入を決定した。
ストアドプロシージャの利用にも対応した網羅的なSQLテスト
クロッシオンは就業時間を管理するだけでなく、申請、承認を行うワークフロー機能、グループウェアや回覧板、スケジュール管理、日報など豊富な機能がある。利用法人数は5000を超え、発行ID数は80万にのぼる。「さまざまな就業形態があるので、24時間365日、止められないサービスです」と玉沖氏は言う。現状、契約中の5000社へのサービスを、AWS上の10のクラスターで運用している。
顧客が安心して使うために、OSやデータベースなどへのパッチ適用やバージョンアップは、クロノスが責任をもって必要なタイミングで適宜実施する必要がある。今回のAmazon Aurora MySQLバージョン2については、更新せず延長サポートを受ける選択肢もあった。しかし、いずれは更新しなければならないのなら、標準サポートが終了する2024年10月までにバージョンアップを実施したい。とはいえリソースが不足していることもあり、なるべく工数をかけず、しかし安定した運用を犠牲にすることなく実行することが求められていた。
こうした背景をうけ、2023年夏頃からバージョンアップの検討が始まる。そこでInsight SQL Testingの紹介があり、2023年10月にはインサイトテクノロジーに具体的な相談をし、トライアルの利用をスタートした。
トライアルでは、クロッシオンで多用するストアドプロシージャのテストが可能かに焦点を絞り、チェックした。「ストアドプロシージャに入っているクエリを収集し、それを新しいバージョンで流すことで、違いが発見できました。これなら、テストが効率化できると判断するには十分でした」と玉沖氏は言う。
MySQL 8のおいて実装された既存動作に影響を及ぼす可能性のある変更は多岐にわたる。それらをドキュメントの参照だけで把握するのは難しい。そこで、Insight SQL Testingによって実際にシステム上で流れるクエリを収集し新しい環境で実行すれば、網羅的かつ自動で問題箇所を抽出できる。これが導入の決め手となった。
2024年1月にインサイトテクノロジーと契約し、バージョンアッププロジェクトが開始する。標準サポートが終了する10月に向け、2度のタイミングでInsight SQL Testingを用いたテストが実施された。事前準備として、ドキュメントなどをもとに、クロッシオンで利用されているクエリをリスト化しておいた。「ストアドプロシージャでクエリがどこで使われているかは把握できていました。手間はかかりますが、対象のストアドプロシージャを実行すれば必要なクエリは全て取得できます。そうして得られたSQLファイルを流して検証を行いました」と玉沖氏は説明する。
Insight SQL Testingの導入により、クエリの取得、新バージョンでの実行、見つかったコードの不具合の修正までを、開発部のメンバー2名だけで対応することができた。メンバーにとっては初めて利用するツールだったが、使い勝手は良く操作に戸惑うこともなかった。

テストしたクエリ数は1050件、実行結果に相違が出たのは64件だった。不具合パターンとしては4つに集約され、それらはGROUP BYによる暗黙のソートの挙動が違うなど想定範囲内のもので、修正に大きな手間は発生しなかった。
今後はInsight SQL Testingの利用を前提とした計画的なバージョンアップへ
「Insight SQL Testingを使っていなかったら、修正すべきところの特定にも時間がかかり、限られた時間では、人海戦術による一部の画面操作のテストしかできなかったでしょう」と玉沖氏は言う。今回ははじめからツールがある状態でバージョンアップを実施しているので、使っていなかった場合との定量的な比較をすることは難しい。しかし、SQL修正後に実施した製品の全画面の動作確認検査では、人員数を増やして人海戦術で対応している。Insight SQL TestingがなければSQLテストの工程でも同様の対応が必要だったかもしれない。
これまでマイナーバージョンアップの際は、変更内容を見極め、動作確認までするかコードのレビューで済ませるかなどの方針を決め対応してきた。一方、今回のようなメジャーバージョンアップはデータベースエンジンが変わることから、様々な項目において多岐にわたる変更が発生する。そのため、網羅したテストを徹底する必要がある。
今回Insight SQL Testingはクロノスにおけるメジャーバージョンアップの網羅的なテストの効率化に大きく貢献した。今後はマイナーバージョンアップも含め、余裕をもって更新計画を立てることができそうだ。「これからは、Insight SQL Testingの活用を前提に、なるべく前倒しで計画を立て対処できるようになるでしょう」と玉沖氏。テストを網羅して実施したい際には、極めて強力なツールだと言う。今後、バージョンアップはもちろん、運用に合わせてデータベースエンジンを変更するといったさまざまな場面においてInsight SQL Testingを使い続けていきたいと語っている。
