SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

Developers CAREER Boost セッションレポート(AD)

システムリプレイスのアンチパターンを踏み抜き、茨の道へ……その時、チームリーダーが学んだ教訓とは

【A-6】「非常に残念ですが、 切り戻しましょう...」 システムリプレイスのアンチパターンに立ち向かったリーダーの話

  • このエントリーをはてなブックマークに追加

リリース後に切り戻しを選択せざるを得なかった理由は?

 もともと達成しようとしたことが新旧データベースでデータ連携するというアンチパターンで(さらに新旧データベースでテーブルやカラムの構造が異なるなど)、困難が多いにもかかわらずいろいろと手を尽くし、まずは最初のリリースへとこぎつけた。

 ……はずだった。

 河本氏は「非常に残念ですが、ここで切り戻しましょう」と宣言せざるをえない事態に陥った。

 理由は大きく2つある。最初のリリースは無事にできたものの、実際に稼働開始した後に解消が困難なエラーが生じたことと、データ連携で許容できない遅延が発生してしまったためだ。

 前者のエラーについては、かなりの頻度で生じていた。開発環境で再現できず、原因究明に苦労した。エラーを解消するための処理(データパッチ)が必要となった。エラーが発生すると後続処理にも影響が生じるため、解消まで時間をかけることはできなかった。

 エラーについてはすぐに対応する必要があったため、エラーのアラートが発報されたら誰でも対応できるように対応方法をまとめた。同時に原因調査も進めていった。

 (余談だが双方向連携プロジェクトは「WAKKA」と呼ばれており、エラーの原因究明していたメンバーの口からは思わず「WAKKA、わっかんない……」とダジャレがでてしまうほどのつらい状況だったようだ)

 後者の遅延は「速報性」を売りとするサービスとしては許容できないものだった。先述した通り、入力は新システムで行われ、閲覧は旧システムで行うようになっていた。新システムから旧システムへとデータを移す時に予想以上の時間がかかっていた。

リリース後に連携遅延が発生し、速報性が失われてしまった
リリース後に連携遅延が発生し、速報性が失われてしまった

 データ連携で遅延が生じてしまう理由に、新旧データベース構造の違いがある。新データベースから旧データベースへとデータを移す時、新データベースの複数のテーブルにあるデータをまとめて旧システムへと送るなど、複雑な処理を行う必要があったため遅延が生じてしまっていた。

 そこで河本氏は、マシンスペックを上げ、データ連携の順序を変更し、SQLをチューニングするなどの工夫を重ねて処理速度改善を試みた。しかし手を尽くしてみたものの、解決と判断できる状況にならず、先述したように切り戻しと仕切り直しを決断した。その後に細かな調整を重ねて遅延は改善し、なんとかリリースを完了できたという。

もし同じ取り組みをするなら知っておいてもらいたいこと

 最後のまとめとして河本氏は「あまりないかもしれませんが、同じ取り組みをするなら」と教訓をまとめた。

  • 双方向連携するツールの事前検証は入念に行う
  • ステークホルダーを巻き込んで進める
  • データ移行する際、並列処理が可能な設計をする
  • データ移行に耐えうるマシンスペックを事前に検証しておく
  • リリース手順書は誰が行っても迷わないようにする
  • リリースリハーサルは複数回行う

 加えて河本氏は「ビッグバンリリースのリスクと、新旧並行稼働に伴う双方向データ連携のリスクを並べ、よく検討した上で方針決定できると幸せになれます。双方向連携を伴う並行稼働は本当にめちゃめちゃつらかったです」と本音を語る。

 あらためてビッグバンリリースと双方向データ連携のリスクを比較してみよう。前者のビッグバンリリースでは、動作確認に時間がかかる、切り戻しが困難になる、不具合の切り分けが大変になるなどのリスクが想定されていた。

 一方、後者の双方向データ連携では、過去データの移行が大変、データに不整合が生じる可能性があるというリスクは想定していた。しかし、利用ツールの検証に時間がかかる、データ連携で遅延が生じると業務に与える影響が大きい、不具合調査に時間がかかるなどは「見えていなかった」と河本氏は言う。

 最後に河本氏は「もし双方向データ連携を伴う並行稼働をする場合は、我々と同じ失敗をしないようにしていただければ幸いです!」と繰り返した。ぜひ教訓にしよう。

この記事は参考になりましたか?

  • このエントリーをはてなブックマークに追加
Developers CAREER Boost セッションレポート連載記事一覧

もっと読む

この記事の著者

加山 恵美(カヤマ エミ)

フリーランスライター。茨城大学理学部卒。金融機関のシステム子会社でシステムエンジニアを経験した後にIT系のライターとして独立。エンジニア視点で記事を提供していきたい。EnterpriseZine/DB Onlineの取材・記事や、EnterpriseZine/Security Onlineキュレーターも担当しています。Webサイト:http://emiekayama.net

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

CodeZine編集部(コードジンヘンシュウブ)

CodeZineは、株式会社翔泳社が運営するソフトウェア開発者向けのWebメディアです。「デベロッパーの成長と課題解決に貢献するメディア」をコンセプトに、現場で役立つ最新情報を日々お届けします。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

【AD】本記事の内容は記事掲載開始時点のものです 企画・制作 株式会社翔泳社

この記事は参考になりましたか?

この記事をシェア

  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/17156 2023/01/25 12:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング