AWS JAPAN APN ブログ
Insight SQL Testing を活用した Amazon RDS, Amazon Aurora のバージョンアップ効率化
本記事は、株式会社インサイトテクノロジー (以下、インサイトテクノロジー) 製品本部 副本部長 松尾 拓真氏と、アマゾン ウェブ サービス ジャパン合同会社 シニアパートナーソリューションアーキテクト 吉田 成利による共著です。
Insight Technology |
組織が扱うデータの量や種類が増え、生成 AI をはじめとした新しいユースケースが生まれる中、IT システムの中核を担うデータベースの重要性は増しており、機能の拡張やパフォーマンスの改善が日々行われています。データベースを最新のバージョンに保つことで、システムの安定性や性能の向上、新機能の活用によるイノベーションの高速化といったメリットを享受できますが、その一方、システムへの影響やテストにかかるコストを考慮し、バージョンアップを先送りにするケースも少なくありません。
インサイトテクノロジーは、AWS ISV Accelerate プログラムに参加する AWS ソフトウェアパートナーであり、自社開発の SQL テストソリューション Insight SQL Testing が、Amazon RDS サービスレディ製品の認定を受けています。Insight SQL Testing を使うことで、データベースのバージョンアップや移行にともなう SQL のテストを省力化し、作業の工数を削減しつつ、網羅性の高いテストを実現できます。
本記事では、この Insight SQL Testing を活用して、AWS のデータベースサービスである Amazon Relational Database Service (以下、Amazon RDS)、Amazon Aurora のバージョンアップを効率化する方法について解説します。
データベースのバージョンアップにおけるテスト工数の課題
データベースのバージョンアップでは、セキュリティや性能の向上、新機能の追加が期待できますが、一方で SQL の処理方法の変更や機能の変更・廃止によって、既存のアプリケーションの動作に影響を与えるリスクがあります。システム停止やパフォーマンス劣化のリスクを低減するためには、既存のアプリケーションとの互換性テストが必要不可欠ですが、このテストにかかるコストが原因でバージョンアップを断念するケースは少なくありません。テストは SQL の実行可否だけでなく、SQL の結果が変わらないこと、性能が劣化しないことを確認する必要があるため、アプリケーションに含まれる SQL の数に応じて手間と工数が変動します。アプリケーションの開発工程に、このような観点を網羅した自動テストが組み込まれているのが理想ですが、そうでないケースではテストにかかるコストの算出も困難です。
こうした理由から、データベースのバージョンアップは敬遠されやすく、オンプレミスで稼働するデータベースでは、バージョンアップを行わない “塩漬け” の運用が行われるケースも少なくありません。しかし、これではバージョンアップによるメリットを享受できないだけでなく、セキュリティや安定性に関わるリスクをシステムに残すことになります。また、Amazon RDS と Amazon Aurora では、サポート終了によるバージョンの廃止が定期的に行われるため、計画的にバージョンアップを行うための体制・仕組みづくりが必要となります。直近では、MySQL 5.7 互換の Amazon Aurora MySQL 2 が 2024 年 10 月 31 日に、Amazon RDS for PostgreSQL 12 と PostgreSQL 12 互換の Amazon Aurora PostgreSQL 4 が 2025 年 2 月 28 日に、標準サポートの終了を予定しています。標準サポートの終了後もデータベースは引き続き利用できますが、延長サポートによる追加料金が発生するため、可能な限り標準サポート期間内でのバージョンアップが推奨されます。
Insight SQL Testing による SQL テストの省力化
先述の通り、現在利用しているデータベースを異なるデータベースエンジン/バージョンへ移行する場合、SQL の動作検証や修正が必要となりますが、それらにかかるコストや期間の把握には高度なスキルと経験が必要です。Insight SQL Testing は稼働中のデータベースで実行された SQL を自動で収集し、テスト環境での実行と評価を行うことで、修正が必要な SQL の数・内容の把握を簡易化、工数を削減するだけでなく、網羅性の高いテストを可能にします。複数の主要なデータベースエンジンをサポートしているほか、クラウド環境として Amazon RDS、Amazon Aurora もサポートしており、オンプレミス・クラウドにかかわらず、データベースの移行アセスメントやテストを効率化できます。
例として、Amazon Aurora MySQL 2 から Amazon Aurora MySQL 3 へのバージョンアップをテストする場合、図 1 のように現行環境と同じバージョンのテスト用データベースとバージョンアップ済みのテスト用データベースを用意し、SQL の挙動の比較を行います。テスト用のデータベースは Amazon RDS のスナップショットからデータベースを復元するか、Amazon Aurora のクローン作成機能を利用することで、素早く簡単に用意できます。
Insight SQL Testing は、大きく分けて以下 2 つの機能から構成されています:
現行環境で実行されている SQL の自動取り込み
SQL テストの “テストケース” に相当する SQL を、現行環境から収集することが可能です。本機能により、SQL テストの網羅性の向上が見込めるほか、テストケース作成の工数を大幅に削減できます。Amazon RDS、Amazon Aurora では、SQL の実行情報を出力したログを、Amazon RDS API または Amazon CloudWatch Logs 経由で収集します。また、自動取り込みをサポートしていないデータベースの場合にも、データベースの監査機能など、何らかの手段で SQL を取得し、CSV ファイル形式にすることができれば、その SQL を Insight SQL Testing に取り込むことが可能です。
SQL のテスト実行と評価の集計
収集した SQL を使って、SQL の実行可否の確認、実行結果と性能の比較を行います。SELECT 文のように結果セットを返す SQL ではテスト環境間で結果の比較が行われ、INSERT/UPDATE/DELETE 文のように結果セットを返さない SQL では更新した行数の比較が行われます。各 SQL の実行結果は集計され、図 2 のようなサマリー画面で、何本の SQL が修正の対象になるかを一目で確認することができます。
また、各 SQL については、詳細なテスト結果を確認して問題の原因分析をしたり、修正した SQL の動作チェックを行うことができます。
図 3 のように SQL が新環境で実行できなかった場合には、AWS が提供する生成 AI サービス Amazon Bedrock と連携して、エラーの原因や SQL の修正案を確認することができます。Amazon Bedrock により提示された SQL の修正案を、Insight SQL Testing で実行して結果を確認することで、修正案の確認から再テストまでをワンストップで実施できます。Insight SQL Testing における Amazon Bedrock の活用は AWS ブログでも取り上げています。利用可能な基盤モデルや、詳細な設定方法については、Insight SQL Testing の製品ドキュメントをご確認ください。
※ 2024 年 9 月時点の本機能では、異なるデータベースエンジンへの移行をアセスメントする場合に、有効な情報を得られます。
事例:ココナラ様における MySQL バージョンアップの効率化
ここで、Insight SQL Testing を活用して、データベースのバージョンアップを効率化した事例をご紹介します。
株式会社ココナラ様では、利用していた Amazon RDS for MySQL 5.7 のバージョン廃止にともない、Amazon RDS for MySQL 5.7 から Amazon Aurora MySQL 3 への移行を計画していました。アプリケーションへの影響は最小限に抑えつつ、Amazon Aurora への移行とメジャーバージョンの更新を同時に行う必要があり、Insight SQL Testing を採用いただきました。テストした 8 億本ほどの SQL のうち、結果の確認が必要だったものが約 2,000 本、実際に影響があったものが約 200 本、移行前に改修が必要だったものは約 30 本でした。本事例のようなバージョンアップの場合、大半の SQL については問題がないことが想定されますが、アプリケーションから発行される膨大な量の SQL から問題がある SQL を手作業で探すのは膨大な手間と工数がかかりますし、確認漏れによるリスクもあるでしょう。
株式会社ココナラ様では、Insight SQL Testing を活用することで、エンジニア 2 名の内製かつ 4 ヶ月という限られた時間で、網羅性の高いテストを実施いただくことができました。事例の詳細については、こちらからダウンロードいただけます。
※ 事例資料のダウンロードには氏名、メールアドレス、電話番号、会社名の登録が必要です
まとめ
データベースを最新のバージョンに保つことで、システムの安定性や性能の向上、新機能の活用によるイノベーションの高速化といったメリットを享受できます。しかし、既存のアプリケーションとの互換性テストにかかる手間や工数がネックとなり、バージョンアップを先送りにしてしまうケースは少なくありません。Insight SQL Testing を使い、稼働中のデータベースで実行された SQL の収集、テスト環境での実行・評価を自動化することで、工数を削減するだけでなく、テストの網羅性を高め、バージョンアップのリスクを低減できます。
Insight SQL Testing は AWS Marketplace で Amazon Machine Image (AMI) ベースの製品として提供されており、簡単にライセンスを購入しデプロイできます。14 日間の無償トライアルが可能となっておりますので、Amazon RDS、Amazon Aurora のバージョンアップを検討されている方は、ぜひこの機会にお試しください!
インサイトテクノロジー – AWS パートナースポットライト
インサイトテクノロジーは、1995 年の創業時から一貫してデータベース技術を追究し、企業自らが良質なインサイトを得るためのデータ活用基盤「インサイト・インフラ」関連の製品をプロフェッショナルサービスとともに提供する AWS ソフトウェアパートナー企業です。
マルチデータベースをサポートし、データベースの移行アセスメントやテストを効率化する Insight SQL Testing や、大規模言語モデルを活用して、個人情報を速く・正確に匿名化するマスキングソフトウェア Insight Masking をはじめ、データ活用推進を支えるデータガバナンスソリューションを提供しています。また、Insight SQL Testing は、Amazon RDS サービスレディ製品に認定されています。