リプレイスで生じた課題と、克服のために工夫したこと
このようなリプレイスではどのような困難が生じ、河本氏はどのように乗り越えたのか。順に見ていこう。河本氏は4つの課題を挙げた。
課題1:双方向連携に利用したツールの理解が困難
データの双方向連携には、SymmetricDSというオープンソースのRDB同期ツールを採用した。ただし日本では利用者が少なく、日本語のドキュメントもなく、ツールの理解に言語の壁が立ちはだかった。そのためデータ連携をどう実現するか、エラーが起きた時にどう対処すればいいのかでも苦労した。有償サポートを契約したものの英語のみだったので、問い合わせのコミュニケーションも苦労したという。
そこで河本氏は変換方法調査チーム、連携実装チーム、課題解決チームと役割分担して、それぞれが割り当てられた課題に専念できるようにした。3チームに分けたことにより、効率的に課題解決が進んだ。
課題2:新旧それぞれのシステム設計とデータベース設計に対しての深い知識が必要
データを新旧の双方向で連携するため、新旧のデータベースと新旧のアプリケーション、どちらも理解しておく必要がある。新旧データベースでテーブルやカラムが異なるため、どうマッピングするかなどが不明瞭だった。旧から新へのデータ移行も危うくなる。
そこで河本氏はビジネスドメインのエキスパートに協力を依頼した。また設計書やER図を入手し、テーブルカラム単位のマッピングや変換表を作成した。
課題3:データの整合性を守りながら数千万行の移行処理が必要
新システム稼働にあたり、数千万行分のデータを旧から新データベースに移行する作業が生じる。旧システムでは外部キーの制約があまりなく、不整合があるデータも散見されていた。新システムでは外部キーの制約が異なることから移行処理が中断してしまうこともあった。クラウドのリソースにも制約があり、処理が中断することや、データ移行にかかる時間が想定以上になることも判明した。
そこで河本氏はデータを年単位で分割し、移行処理を並列化した。またクラウドのマシンスペックも可能な限り大きなものにすることで「爆速で」移行作業を終えることができた。
課題4:限られた停止時間の中で複雑なリリース完遂が必要
システム移行ではよくあるケースで、週末中にリリースを完遂する必要があった。本番のリリース作業手順は複雑になっていた。またデータ移行が正しくできたか確認するところでも時間を要した。本番のリリースを無事に終えられるように、何度もリリースのリハーサルを行った。
河本氏はリリース作業未経験者でも迷わず作業できるように、細かい手順書を用意した(手順は1200ほどあった)。データ確認を効率よく進めるためのチェック用スクリプトも用意した。万が一の事態に備えて、主担当以外のメンバーもリリースリハーサルを実施することで、リリース手順の理解を広めた。