Upgrade to Pro — share decks privately, control downloads, hide ads and more …

「非常に残念ですが、 切り戻しましょう...」 システムリプレイスのアンチパターンに 立ち向...

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

2022/12/09(金)にDevelopers CAREER Boostさんで登壇した際の資料です。

Kawamoto Shuji

December 09, 2022
Tweet

Other Decks in Technology

Transcript

  1. Copyright © 2022 ULURU inc. All Rights Reserved.  株式会社うるる 河本 周時

    プロフィール • 年齢 : 1996年生まれの26歳 • 入社 : 5年目(インターン入れると6年目) ◦ 2018年に新卒としてJoin • バックエンドエンジニアとして 複数プロダクトを経験 • 2年目にプロジェクトリーダーを経験 • 現在はチームリーダーとして従事 • バイク2台持ち ◦ Ninja400 KRT ◦ Z125 PRO
  2. Copyright © 2022 ULURU inc. All Rights Reserved.  本日の発表内容について •

    システムリプレイスに伴い、新システムと旧システムの並行稼働を行った • 途中での切り戻しなど、さまざまな課題や困難が立ちはだかった... 私がリーダーとしてチームメンバーとともに、 どのように立ち向かったのかを紹介
  3. Copyright © 2022 ULURU inc. All Rights Reserved.  本日の発表内容について ~アジェンダ~

    • プロジェクトの背景について • プロジェクト進行上の課題と対策 • リリース後に発生した課題 • 課題から得た学びや反省について
  4. Copyright © 2022 ULURU inc. All Rights Reserved.  リプレイスについて1 •

    バック/フロント/インフラ/DB全てを刷新! • 下記制約のため新旧システムの並行稼働を行うことが決定...! ①ビッグバンリリースを避けるために段階リリースを選択 ②その過程でDBを分割 ③双方向データ連携が必要になった 双方向データ連携は一般的に言われるアンチパターンですが、それを踏み抜きにいきました ! ビッグバンリリース
 並行稼働

  5. Copyright © 2022 ULURU inc. All Rights Reserved.  リプレイスについて2 旧

    新 データ入力側 データ閲覧側 データ入力側 データ閲覧側 リニューアル対象のシステムの新旧での設計について DB DB DB
  6. Copyright © 2022 ULURU inc. All Rights Reserved.  リプレイスについて3 旧

    新 データ入力側 データ閲覧側 データ入力側 データ閲覧側 並行稼動の時のWebAppとDBの関連図 DB DB DB あとからリリース 双 方 向 連 携 が 必 要 に な っ た

  7. Copyright © 2022 ULURU inc. All Rights Reserved.  プロジェクト進行上の課題と対策 •

    双方向連携に利用したツールの理解が困難 • 新旧それぞれのシステム設計とDB設計に対しての深い知識が必要 • データ整合性を守りながら数千万行の移行処理が必要 • 限られた停止時間の中で複雑なリリース完遂が必要
  8. Copyright © 2022 ULURU inc. All Rights Reserved.  プロジェクト進行上の課題と対策 •

    双方向連携に利用したツールの理解が困難 • 新旧それぞれのシステム設計とDB設計に対しての深い知識が必要 • データ整合性を守りながら数千万行の移行処理が必要 • 限られた停止時間の中で複雑なリリース完遂が必要
  9. Copyright © 2022 ULURU inc. All Rights Reserved.  双方向連携に利用したツールの理解が困難 【課題】

    • SymmetricDSというオープンソースの RDB同期ツールを利用 • 日本語の文献がほぼない • 変換の実現に時間がかかった • 連携エラーの原因の特定がしづらい • 連携エラーの解消が困難 • 有償サポートが英語対応のみ SymmetricDS 公式ドキュメント
  10. Copyright © 2022 ULURU inc. All Rights Reserved. 【対策】 役割を明確にして課題に対して専念

    できる状況を作った ★変換方法調査チーム ★連携実装チーム ★課題解決チーム  双方向連携に利用したツールの理解が困難 変換方法調査チーム 連携実装チーム 課題解決チーム
  11. Copyright © 2022 ULURU inc. All Rights Reserved.  プロジェクト進行上の課題と対策 •

    双方向連携に利用したツールの理解が困難 • 新旧それぞれのシステム設計とDB設計に対しての深い知識が必要 • データ整合性を守りながら数千万行の移行処理が必要 • 限られた停止時間の中で複雑なリリース完遂が必要
  12. Copyright © 2022 ULURU inc. All Rights Reserved.  新旧それぞれのシステム設計とDB設計に対しての深い知識が必要 【課題】

    • 旧DBのカラムを、新DBのどの カラムにどう変換して連携すれば良いのか 調査が必要 • カラムの型は一致しているか確認が必要 • 連携と移行が必要なテーブルとデータの洗 い出しが必要 ◦ 誰に確認すれば良いのか不明瞭 ◦ 不整合なデータの扱いが不明瞭 • 連携と移行したデータは新旧 どちらのアプリでも期待通りに 表示されるようにする必要がある 旧DB… 新DB… 旧システム… 新システム…
  13. Copyright © 2022 ULURU inc. All Rights Reserved. 【対策】 •

    ビジネスドメインのエキスパートに協 力を依頼する • 設計書やER図を取得した • テーブルカラム単位のマッピングや 変換表を作成  新旧システムの設計、ビジネスドメインの知識、 DBの制約、DB定義の差異などの理解が必要 契約周りに詳しい 新システムに詳しい 顧客データに詳しい  新旧それぞれのシステム設計とDB設計に対しての深い知識が必要
  14. Copyright © 2022 ULURU inc. All Rights Reserved.  プロジェクト進行上の課題と対策 •

    双方向連携に利用したツールの理解が困難 • 新旧それぞれのシステム設計とDB設計に対しての深い知識が必要 • データ整合性を守りながら数千万行の移行処理が必要 • 限られた停止時間の中で複雑なリリース完遂が必要
  15. Copyright © 2022 ULURU inc. All Rights Reserved.  データ整合性を守りながら数千万行の移行処理が必要 【課題】

    • 外部キーの考慮が必要 • レコード量が多く、移行や変換 作業に莫大な時間を必要とする想 定 • 各種インフラリソースのスペック上の 制約があった 旧DB 新DB 移行処理 OOMで処理中断 FK守れず処理中断
  16. Copyright © 2022 ULURU inc. All Rights Reserved.  データ整合性を守りながら数千万行の移行処理が必要 【対策】

    • 外部キーを考慮し、年ごとに処理を 分割できるように移行バッチを 並列化 • マシンスペックはできる限り大きくし た 並列 × マシンスペック = 爆速!!💨
 旧DB 新DB 2015 2016 2017 2018 ・・・ ・・・
  17. Copyright © 2022 ULURU inc. All Rights Reserved.  プロジェクト進行上の課題と対策 •

    双方向連携に利用したツールの理解が困難 • 新旧それぞれのシステム設計とDB設計に対しての深い知識が必要 • データ整合性を守りながら数千万行の移行処理が必要 • 限られた停止時間の中で複雑なリリース完遂が必要
  18. Copyright © 2022 ULURU inc. All Rights Reserved.  限られた停止時間の中で複雑なリリース完遂が必要 【課題】

    • リリース時間の制約があった • 反映の前後関係が複雑 • データ確認に時間がかかる • 複数回の時間をかけたリリース リハーサルが必要
  19. Copyright © 2022 ULURU inc. All Rights Reserved.  限られた停止時間の中で複雑なリリース完遂が必要 【対策】

    • リリース作業未経験者でも迷わずにでき るレベルで細かい手順書を用意 (1200手順ほど) • データ確認をなるべく自動化できるように チェック用のスクリプトを用意した • リリースリハーサルは、もしもに備えて、 主担当以外のメンバーも実施して手順の 理解に努めた 手順書 自動化スクリプト
  20. Copyright © 2022 ULURU inc. All Rights Reserved.  リリース後に発生した課題と対策 •

    解消が難しいエラーが発生 • リリース後に連携遅延が発生し、サービスの売りである速報性が失われる
  21. Copyright © 2022 ULURU inc. All Rights Reserved.  リリース後に発生した課題と対策 •

    解消が難しいエラーが発生 • リリース後に連携遅延が発生し、サービスの売りである速報性が失われる
  22. Copyright © 2022 ULURU inc. All Rights Reserved.  解消が難しいエラーが発生 【課題】

    • 本番リリースをした後にエラーが頻 発 • 開発用環境で再現しないため原因 の追求が困難 • 解消するにはDBにデータパッチを 流す必要がある • 一度エラーが発生すると後続処理が 止まるため解消まで時間をかけられ ない WAKKAわっかんない...🥺 (※WAKKAは双方向連携プロジェクト名 )
  23. Copyright © 2022 ULURU inc. All Rights Reserved.  解消が難しいエラーが発生する 【対策】

    • エラーの対応方法をリスト化し、誰で も対応をスムーズにできるようにした • エラーを解消した後、できる限り原因 調査を行った • 根本解決できるものに関しては 手を打ち続けた アラート 対応方法まとめシート
  24. Copyright © 2022 ULURU inc. All Rights Reserved.  リリース後に発生した課題と対策 •

    解消が難しいエラーが発生 • リリース後に連携遅延が発生し、サービスの売りである速報性が失われる
  25. Copyright © 2022 ULURU inc. All Rights Reserved.  リリース後に連携遅延が発生し、サービスの売りである速報性が失われる 旧

    新 遅 延 発 生 顧客 速 報 性 が 失 わ れ た サイト サイト DB DB クラウドワーカー
  26. Copyright © 2022 ULURU inc. All Rights Reserved. 【対策】 •

    マシンスペックを上げる • データ連携順序の変更 • データ連携SQLのチューニング  リリース後に連携遅延が発生し、サービスの売りである速報性が失われる
  27. Copyright © 2022 ULURU inc. All Rights Reserved. なので一旦切り戻しを行うことで仕切り直しをし、 影響を最小限に抑えるやり方を経た上でリリースを完了させました!

    結果として現在双方向連携は役割を果たしました....!  リリース後に連携遅延が発生し、サービスの売りである速報性が失われる
  28. Copyright © 2022 ULURU inc. All Rights Reserved.  もし同じ取り組みをするなら •

    双方向連携する際に意識すると良いこと ◦ 双方向連携するツールの事前検証を入念に行う ◦ ステークホルダーを巻き込んで進める ◦ データ移行する際は、並列処理が可能な設計をする ◦ データ移行に耐えうるマシンスペックを事前に検証しておく ◦ リリース手順書は誰が行っても迷わないようにする ◦ リリースリハーサルは複数回行う
  29. Copyright © 2022 ULURU inc. All Rights Reserved.  もし同じ取り組みをするなら ビッグバンリリースのリスクと、

    新旧並行稼働に伴う双方向データ連携のリスクを並べて、 よく検討した上で方針決定できると幸せです! (双方向連携を伴う並行稼働は本当に辛かったです ...)
  30. Copyright © 2022 ULURU inc. All Rights Reserved.  ビッグバンリリースと双方向データ連携のリスク 【ビッグバンリリースのリスク】

    • 動作確認にかなり時間がかかる • 切り戻しが困難になる • 不具合の切り分けが大変 【双方向データ連携のリスク】 • 過去データの移行が大変 • データ不整合が生じる可能性がある • 利用ツールの検証に時間がかかる • データ連携が遅延すると影響大 • 不具合調査に時間がかかる
  31. Copyright © 2022 ULURU inc. All Rights Reserved.  ビッグバンリリースと双方向データ連携のリスク 【ビッグバンリリースのリスク】

    • 動作確認にかなり時間がかかる • 切り戻しが困難になる • 不具合の切り分けが大変 【双方向データ連携のリスク】 • 過去データの移行が大変 • データ不整合が生じる可能性がある • 利用ツールの検証に時間がかかる • データ連携が遅延すると影響大 • 不具合調査に時間がかかる 赤字になっているのが見えていなかったリスクです