クラウド上でマネージドデータベースを利用する企業にとって、バージョンアップは定期的に必須となる作業だ。主要サービスをSaaSモデルで提供しているリバスタも、「Amazon Aurora MySQL バージョン2」の標準サポートの終了予定に備えたバージョンアップを迫られた。しかし、1日に600万を超えるクエリが実行されるシステムの根幹であるデータベースのバージョンアップは、慎重を期さねばならない。効率的かつ網羅的にSQLを収集し、自動でテストをするにはどのようなソリューションが必要なのか。AWS担当者が薦めたのは、「Insight SQL Testing」だった。
コストの抑制、品質の維持、そして検証の網羅性を確保する観点からも、SQLの収集とテストを自動化する「Insight SQL Testing」は、「Amazon Aurora MySQL」のバージョンアップテストに最適なツールでした。
サービス開発本部 インテグレーション開発二部
副部長 兼 第一開発グループ長
丸山 剛氏
クラウドの保守期限は延長できませんから、バージョンアップ作業の遅れは許されません。「Insight SQL Testing」を導入していなければ、大量のSQLに対する検証は膨大な時間を要し、作業時間は大幅に延びていたでしょう。
サービス開発本部 インテグレーション開発一部
基盤・運用グループ長
角田 充氏
1日に600万を超えるクエリが実行されるシステムの根幹であるデータベースにおいて、バージョンアップでの失敗は許されない
『「つくる」の現場から、世界を変える。』のミッションのもと、建設業界が抱えるさまざまな課題をITで解決するため、幅広いソリューションを提供し新たなスタンダードを創造する――。2007年に創業したリバスタの社名には、「STANDARD(常識)をREVERSE(ひっくり返す)」との意味が込められている。電子マニフェストサービスの「e-reverse.com」、建設現場施工管理サービスの「Buildee」、建設現場ICT機器ソリューションの「BANKEN」等のサービスを、主にSaaS(Software as a Service)モデルで提供している。なかでも「e-reverse.com」は、ゼネコンの完成工事高トップ100社のうち9割以上の企業が導入するなど、圧倒的なシェアを誇る。
リバスタでサービス開発本部インテグレーション開発一部 基盤・運用グループ長を務める角田充氏は、「国土交通省が発表する資料※によると、建設業界において地域を地盤とする中小企業では、ICT施工を経験した企業が受注企業全体の約半分とされており、建設業界のさらなるICT化が求められています。今後、作業員の高齢化に伴う担い手不足や、2024年4月からの時間外労働の上限規制適用などの課題を克服するには、ICTを活用して現場の生産性を向上させることが不可欠です。リバスタの使命は建設業界のICT化を支援し、効率的で働きやすい環境づくりを実現することです」と語る。
※出典:「直轄工事におけるICT活用工事の受注実績分析」(国土交通省)(001631832.pdf (mlit.go.jp))
サービス開発本部 インテグレーション開発一部 基盤・運用グループ長 角田 充氏
リバスタのサービス基盤はAmazon Web Services(AWS)上に構築されている。そのため、データベースのバージョンアップはAWSの保守サイクルに応じて実施していく必要がある。「Buildee」の基盤データベースである「Amazon Aurora MySQL バージョン2」の保守期限は、2024年10月で終了する。角田氏は「正直、データベースのメジャーバージョンアップ作業は困難と危険を伴うので積極的にやりたくないのですが、保守切れのデータベースを利用し続けるわけにはいきません」と説明する。
「Buildee」は日々の作業間連絡調整や入退場管理、安全書類作成など、建設現場の施工管理業務をサポートするサービスだ。インターネット環境さえあれば、いつでも、どこからでも利用できる。2017年4月のサービス開始以来、導入企業は堅調に増加してきた。2024年6月末時点での登録作業員数は140万人を突破し、導入現場数は20,000件超におよぶ。
バージョンアップで最も重視したのは、「Amazon Aurora MySQL バージョン2」で動いていたアプリケーションが、ターゲットとなる「Amazon Aurora MySQL バージョン3」でも同様の性能を発揮するかどうかだ。バージョンアップが原因でサービスが停止すれば、顧客に多大な迷惑がかかる。
角田氏は「理想を言えば『Amazon Aurora MySQL バージョン2』と『Amazon Aurora MySQL バージョン3』の両方ですべてのクエリを実行し、同様の結果が得られるかを確認したかったのです。しかし『Buildee』は1日で600万クエリが発行される大規模システムです。そのような環境ですべてのクエリを手動でテストすることは現実的ではありませんでした」と語る。
必要なのは、精度の高い検証が可能で、人手では難しい大量のSQLのテストを効率的に実行できるツールだ。そうした相談をAWS側にしたところ、インサイトテクノロジーの「Insight SQL Testing」を紹介されたという。
「Insight SQL Testing」が、人力では実現の難易度が高かったSQLの収集とテストを網羅的に実行
「Insight SQL Testing」は、データベースの移行時に必要な移行アセスメントやテストを自動化し、作業コストを大幅に削減するソリューションである。マルチデータベースをサポートしており、オンプレミス・クラウドにかかわらず導入することができる。特にAWSユーザーからの評価は高い。
角田氏は「AWSの担当者からは『複数の導入実績があり、信頼性が高い』と薦められました。また、AWSが運用する『AWS Marketplace』から調達できるため、事前に構成されたサーバーイメージを直接AWS環境内で利用できる点も評価しました。細かいことですが、インサイトテクノロジーに対する支払いもAWSサービス利用として精算できるため、煩雑な購入手続きも必要ありません」と説明する。
リバスタでは2023年4月からバージョンアップテストを検討開始し、6月からトライアルを開始して課題の洗い出しを実施。十分な効果があると判断して導入に踏み切った。トライアルを含め、検証から移行作業完了までの期間は約5カ月。導入の決め手になったポイントは、自動化機能で作業時間が大幅に短縮できる点だ。「保守期限は基本延長できませんから、作業の遅れは許されません」(角田氏)。
リバスタでサービス開発本部インテグレーション開発二部 副部長 兼 第一開発グループ長を務める丸山剛氏は、「バージョンアップ前後で実行される多数のSQLクエリを効率的に処理し、両バージョン間での動作の一貫性と互換性を検証することに重点を置きました。『Insight SQL Testing』は本番環境で利用されるパターンのクエリをカバーし、実行エラーや並び順の違い、パフォーマンスの低下を自動で検出するので、問題点の洗い出しが効率的に実施できました」と評価する。
サービス開発本部 インテグレーション開発二部 副部長 兼 第一開発グループ長 丸山 剛氏
その一例が、一時テーブルの使用方法に関する変更だ。「Amazon Aurora MySQL バージョン3」では一部の操作で一時テーブルの使い方が変更された。その結果、ターゲット環境で特定のクエリを正常に実行するには、大量のメモリが必要になることが判明した。丸山氏は「(バージョンアップにより)メモリ容量不足が原因でシステムが予期せず停止するリスクがありましたが、『Insight SQL Testing』によってそのことを早期に発見できました」と説明する。
さらに、バージョンアップによるパフォーマンスの差異を自動で比較する機能も役立ったという。「例えば、あるクエリが『Amazon Aurora MySQL バージョン2』では0.1秒で実行されたのに対し、『Amazon Aurora MySQL バージョン3』では0.5秒かかるなど、パフォーマンス差を自動的に報告してくれます。これにより、人力では実現が難しいと思われた、修正を必要とするSQLのテストを網羅的に実行することができました。時間の短縮とともに、カバーする範囲の拡大や品質向上に大きく貢献しました」(丸山氏)。
角田氏は「『Insight SQL Testing』を導入していなければ、網羅的なSQLの検証は膨大な時間を要していたでしょう。導入がなければ検証範囲を狭めざるを得なくなり、テスト品質は低下します。もし手動で検証作業をしていたなら、一時テーブルの使用方法変更によるメモリ不足の問題を早期発見することは難しかったでしょうし、作業期間は3倍以上必要だったと思います」とその効果を語る。
クラウド上でシステムを運用する企業にとって、バージョンアップは避けて通れない作業だ。丸山氏は「バージョンアップ時に留意すべきは『どのようにしてコストを抑え、高い品質を維持しながらバージョンアップ検証を進めるか』です」とし、以下のようにアドバイスする。
「日々大量のトランザクションが処理されている大規模システムでは、手動で網羅的なテストを実施するには限界があります。コストの抑制、品質の維持、そして検証の網羅性を確保する観点からも、SQLの収集とテストを自動化する『Insight SQL Testing』は『Amazon Aurora MySQL』のバージョンアップテストに最適なツールでした」(丸山氏)。