レバテック(レバテックLAB)
レバテック、オウンドメディア「レバテックLAB」のWordPressをEC2/AuroraからECS/TiDBへ。段階的検証で約2時間のメンテナンス内に移行し、CPU・メモリは約半分に
レバテック開発部は、オウンドメディア「レバテックLAB」のインフラを、EC2上のWordPressとAurora 2系(MySQL 5.7互換)から、ECS(Fargate上のNginx・php-fpmコンテナ)とTiDB Cloud Serverless、EFSの構成へ移行した。メモリ逼迫が常態化して手動のスケール・復旧作業が必要だったこと、記事のバズによるPV急増に対応しにくかったこと、MySQL 5.7互換Auroraのサポートコスト増加などが理由だ。EC2→ECS、Aurora→TiDB、PHPのバージョンアップ、プラグイン最新化と段階的に検証し、本番切り替えは13:00〜14:55のメンテナンス時間内にトラブルなく完了。CPU・メモリは元の半分程度で落ち着き、ECSとTiDBの自動スケールで運用コストも下がった。
課題
メモリ逼迫が常態化し手動スケール・復旧が必要。PV急増への対応やMySQL 5.7互換Auroraのサポートコストも課題
アプローチ
EC2→ECS、Aurora→TiDB、PHP 8系化、プラグイン最新化の順に段階検証し、本番同等環境で受け入れテスト
効果
約2時間のメンテナンスでトラブルなく移行。CPU・メモリは約半分になり、自動スケールで運用コストも低下
背景
レバテックLABはレバテックのオウンドメディアで、EC2上のWordPressとAurora 2系(MySQL 5.7互換)という構成で運用されていた。この環境にはいくつかの課題があった。まずメモリ逼迫が常態化しており、手動でのスケールや復旧作業が必要だった。記事がバズった際にはPVが急増するが、その変動に対応するのが難しかった。さらにライブラリなどのシステムメンテナンスコストがかかっていたうえ、MySQL 5.7互換のAuroraはサポートコストの増加も避けられない状況だった。これらを解決するため、Fargate上でNginxとphp-fpmのコンテナを動かすECS、データベースにTiDB Cloud Serverless、ファイル共有にEFSを使う構成への移行を決めた。ECSとTiDBはどちらも自動でスケールするため、手動運用とPV急増の両方の課題に対応できる。
移行のプロセス
移行は、変更点を一度に混ぜない段階的な検証を軸に進められた。
- 1段階目: EC2→ECSへの移行(ソースコード・DBは変更なし)
- 2段階目: Aurora→TiDBへの移行
- 3段階目: PHPのバージョンアップ(6系→8系)
- 4段階目: プラグインの最新化
- 各段階で運用チームの受け入れテストを実施。検証環境と本番環境の差異が見つかったため、テスト用のサブドメインを新規作成して本番同等の環境で確認した
本番移行はメンテナンス時間を設けて実施した。
- 13:00 メンテナンスモード開始、13:03〜13:10 SRE作業、13:12 切り替え
- 14:35 運用側の動作確認完了、14:55 メンテナンス終了
- 100分経過時点で問題があれば切り戻す計画を用意
WordPress管理画面のタイムゾーンがAsia/Tokyo、TiDBがUTCで9時間ずれる問題は、PHPサーバーのタイムゾーンをAsia/Tokyoに設定して解消した。
移行前後の変化
| 指標 | Before | After | |
|---|---|---|---|
| アプリケーション実行基盤 | EC2上のWordPress | ECS(Fargate上でNginx、php-fpmコンテナ)+ EFS | |
| データベース | Aurora 2系(MySQL 5.7互換) | TiDB Cloud Serverless | |
| PHPバージョン | 6系 | 8系 | |
| CPU・メモリ使用量 | 移行前の状態(メモリ逼迫が常態化) | 元の状態から半分くらい減少 | |
| スケール | 手動でのスケール・復旧作業 | ECS・TiDBとも自動でスケール | |
| 画面操作(EFSのI/O遅延に対するOPCache導入前後) | 12〜15秒 | 2〜4秒 |
結果
本番同等の環境を用意した段階的な検証が功を奏し、移行はトラブルなく完了した。
- CPU・メモリは元の状態から半分くらい減少した値で落ち着いた
- ECSもTiDBも自動でスケールするため、運用コストが下がった
- EFS利用によるI/O遅延でページのパフォーマンスが低下したが、OPCacheの導入で画面操作が12〜15秒から2〜4秒に改善した
一方、SFTPでのファイル転送が手動、OPCacheのクリアが自動化されていないなど、ECSのCDには改善余地が残っている。今後はCI/CDのさらなる整備と、同様の構成を持つレバテックLAB以外のWordPressシステムの統合管理化を予定している。
学び
インフラ、DB、PHPのバージョン、プラグインという複数の変更を段階に分け、それぞれで運用チームの受け入れテストを通したことが、トラブルのない本番移行につながった。検証環境と本番環境の差異に気づいた時点でテスト用サブドメインを作り、本番同等の環境で確認し直した点も効いている。ただしEFSのI/O遅延のように移行後に表面化する問題もあり、OPCache導入などの追加対応が必要だった。
