スケーラビリティとコスト削減を両立、移行進める
TiDB Community Editionの検証で断念したものの、TiDB Cloudなら現状の体制でも負担は少ない。特にシングルインスタンス/マルチデータベースに寄せていく方針をとっていた中、サービス停止なしで拡張できる点は、バージョンアップの際にもショップ利用が継続できるなどのメリットもある。
また、データベースの構成を変えずに移行できるため、ショップへの影響を最小限に抑えられる点も評価したと田幸氏。実際にTiDB Cloudを検証した結果、コードをほぼ変更することなく正常稼働したという。
ただし、一部シナリオでパフォーマンスの低下が見られたため、その点のみアプリケーション側のコード修正で対応した。具体的には、N+1のような実装をとっていた場合、一つひとつのクエリのレイテンシーの累計がWebの表示速度に影響を与えたことなどがあったとのことだ。なお、コスト面では、データベースの数が多い場合はDedicated、少ない場合はServerlessを利用するほうがよかったり、データベース移行には「DM(Data Migration)」ツールが有効だったりと、移行時の参考となる情報も共有された。
そして現在、これらの検証結果に基づき、TiDB Cloudへの移行を段階的に進めている。既存のAWSリザーブドインスタンスの契約期間を考慮し、契約満了を迎えたデータベースから順に移行しているという。
実際の移行では、DMでデータを移行した後にエンドポイントを切り替えるが、このとき移行するショップのスキーマを抜き出し、TiDBにテーブルを作った上でデータを移行している。TiDBでは、オートインクリメント(AUTO_INCREMENT)の挙動がMySQLとは異なるためだ。ecforceでは、IDの順番に意味を持たせているため、ひと手間加える形で対処している。
また、MySQL 5.7から8.0へのバージョンアップにともない、キャラクターセットの混在も課題となった。これに対応するため、TiDBでは8.0互換のレギュレーションを採用。このように配慮すべき点はあるが、MySQLの互換性に関する問題はほとんどなく、移行は順調に進んでいる。スケールアップ/ダウンの運用も問題なく、高負荷時の対応も実運用の中で経験することを想定しているという。
現状、350ほどのデータベースの約40%をTiDBへ移行した。このベースで移行が進めば、50%ほどのコスト削減が見込めるとのことだ。「TiDB Cloudへの移行によるメリットは大きくなりそうです。特に夜間の対応を減らせる点が一番良いところでしょう。MySQL互換の観点からも問題はなく、開発者の手を煩わせません」と田幸氏。データベース・インスタンスの集約もできるため、データベースを横断したデータ活用も進められそうだ。最後に田幸氏は「ecforceをご利用いただく事業者にも、より良いサービス体験を提供できそうです」と話し、TiDBのさらなる活用とecforceの発展を見据えるのだった。