Slide 1

Slide 1 text

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

Slide 2

Slide 2 text

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

Slide 3

Slide 3 text

自社とサービスの紹介

Slide 4

Slide 4 text

Copyright © 2022 ULURU inc. All Rights Reserved.  自社の紹介

Slide 5

Slide 5 text

Copyright © 2022 ULURU inc. All Rights Reserved.  自社サービスの紹介

Slide 6

Slide 6 text

本日の発表内容について

Slide 7

Slide 7 text

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

Slide 8

Slide 8 text

Copyright © 2022 ULURU inc. All Rights Reserved.  本日の発表内容について ~アジェンダ~ ● プロジェクトの背景について ● プロジェクト進行上の課題と対策 ● リリース後に発生した課題 ● 課題から得た学びや反省について

Slide 9

Slide 9 text

双方向データ連携が必要になった背景について

Slide 10

Slide 10 text

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


Slide 11

Slide 11 text

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

Slide 12

Slide 12 text

Copyright © 2022 ULURU inc. All Rights Reserved.  リプレイスについて3 旧 新 データ入力側 データ閲覧側 データ入力側 データ閲覧側 並行稼動の時のWebAppとDBの関連図 DB DB DB あとからリリース 双 方 向 連 携 が 必 要 に な っ た


Slide 13

Slide 13 text

プロジェクト進行上の課題と対策

Slide 14

Slide 14 text

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

Slide 15

Slide 15 text

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

Slide 16

Slide 16 text

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

Slide 17

Slide 17 text

Copyright © 2022 ULURU inc. All Rights Reserved. 【対策】 役割を明確にして課題に対して専念 できる状況を作った ★変換方法調査チーム ★連携実装チーム ★課題解決チーム  双方向連携に利用したツールの理解が困難 変換方法調査チーム 連携実装チーム 課題解決チーム

Slide 18

Slide 18 text

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

Slide 19

Slide 19 text

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

Slide 20

Slide 20 text

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

Slide 21

Slide 21 text

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

Slide 22

Slide 22 text

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

Slide 23

Slide 23 text

Copyright © 2022 ULURU inc. All Rights Reserved.  データ整合性を守りながら数千万行の移行処理が必要 【対策】 ● 外部キーを考慮し、年ごとに処理を 分割できるように移行バッチを 並列化 ● マシンスペックはできる限り大きくし た 並列 × マシンスペック = 爆速!!💨
 旧DB 新DB 2015 2016 2017 2018 ・・・ ・・・

Slide 24

Slide 24 text

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

Slide 25

Slide 25 text

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

Slide 26

Slide 26 text

Copyright © 2022 ULURU inc. All Rights Reserved.  限られた停止時間の中で複雑なリリース完遂が必要 【対策】 ● リリース作業未経験者でも迷わずにでき るレベルで細かい手順書を用意 (1200手順ほど) ● データ確認をなるべく自動化できるように チェック用のスクリプトを用意した ● リリースリハーサルは、もしもに備えて、 主担当以外のメンバーも実施して手順の 理解に努めた 手順書 自動化スクリプト

Slide 27

Slide 27 text

ここまでにさまざまな課題や困難を乗り越えてきて ようやくリリースができました!🎉🥳🎉

Slide 28

Slide 28 text

段階リリースの第1弾が終わり、 第2弾のリリースに向けてやっと順調に プロジェクトが進んでいくと思っていたら...

Slide 29

Slide 29 text

「非常に残念ですが、 切り戻しましょう...」

Slide 30

Slide 30 text

Copyright © 2022 ULURU inc. All Rights Reserved.  切り戻しの理由 双方向連携の遅延が発生し、サービスの強みとなる 「速報性」が失われてしまった

Slide 31

Slide 31 text

リリース後に発生した課題と対策

Slide 32

Slide 32 text

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

Slide 33

Slide 33 text

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

Slide 34

Slide 34 text

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

Slide 35

Slide 35 text

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

Slide 36

Slide 36 text

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

Slide 37

Slide 37 text

Copyright © 2022 ULURU inc. All Rights Reserved.  リリース後に連携遅延が発生し、サービスの売りである速報性が失われる 旧 新 遅 延 発 生 顧客 速 報 性 が 失 わ れ た サイト サイト DB DB クラウドワーカー

Slide 38

Slide 38 text

Copyright © 2022 ULURU inc. All Rights Reserved. 【対策】 ● マシンスペックを上げる ● データ連携順序の変更 ● データ連携SQLのチューニング  リリース後に連携遅延が発生し、サービスの売りである速報性が失われる

Slide 39

Slide 39 text

Copyright © 2022 ULURU inc. All Rights Reserved.  リリース後に連携遅延が発生し、サービスの売りである速報性が失われる それでも解決はしませんでした...

Slide 40

Slide 40 text

Copyright © 2022 ULURU inc. All Rights Reserved. なので一旦切り戻しを行うことで仕切り直しをし、 影響を最小限に抑えるやり方を経た上でリリースを完了させました! 結果として現在双方向連携は役割を果たしました....!  リリース後に連携遅延が発生し、サービスの売りである速報性が失われる

Slide 41

Slide 41 text

もし同じ取り組みをするなら

Slide 42

Slide 42 text

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

Slide 43

Slide 43 text

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

Slide 44

Slide 44 text

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

Slide 45

Slide 45 text

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

Slide 46

Slide 46 text

Copyright © 2022 ULURU inc. All Rights Reserved.  もし同じ取り組みをするなら もし双方向データ連携を伴う並行稼働をする場合は、 我々と同じ失敗をしないようにしていただければ幸いです!

Slide 47

Slide 47 text

Appendix

Slide 48

Slide 48 text

No content