Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
「非常に残念ですが、 切り戻しましょう...」 システムリプレイスのアンチパターンに 立ち向...
Search
Kawamoto Shuji
December 09, 2022
Technology
1
420
「非常に残念ですが、 切り戻しましょう...」 システムリプレイスのアンチパターンに 立ち向かったリーダーの話
2022/12/09(金)にDevelopers CAREER Boostさんで登壇した際の資料です。
Kawamoto Shuji
December 09, 2022
Tweet
Share
Other Decks in Technology
See All in Technology
SSMRunbook作成の勘所_20241120
koichiotomo
2
130
OCI 運用監視サービス 概要
oracle4engineer
PRO
0
4.8k
Shopifyアプリ開発における Shopifyの機能活用
sonatard
4
250
Python(PYNQ)がテーマのAMD主催のFPGAコンテストに参加してきた
iotengineer22
0
470
EventHub Startup CTO of the year 2024 ピッチ資料
eventhub
0
110
ドメイン名の終活について - JPAAWG 7th -
mikit
33
20k
SREが投資するAIOps ~ペアーズにおけるLLM for Developerへの取り組み~
takumiogawa
1
180
[CV勉強会@関東 ECCV2024 読み会] オンラインマッピング x トラッキング MapTracker: Tracking with Strided Memory Fusion for Consistent Vector HD Mapping (Chen+, ECCV24)
abemii
0
220
ハイパーパラメータチューニングって何をしているの
toridori_dev
0
140
iOS/Androidで同じUI体験をネ イティブで作成する際に気をつ けたい落とし穴
fumiyasac0921
1
110
誰も全体を知らない ~ ロールの垣根を超えて引き上げる開発生産性 / Boosting Development Productivity Across Roles
kakehashi
1
220
ノーコードデータ分析ツールで体験する時系列データ分析超入門
negi111111
0
410
Featured
See All Featured
The Straight Up "How To Draw Better" Workshop
denniskardys
232
140k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
232
17k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
246
1.3M
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
109
49k
Writing Fast Ruby
sferik
627
61k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
28
9.1k
[RailsConf 2023] Rails as a piece of cake
palkan
52
4.9k
jQuery: Nuts, Bolts and Bling
dougneiner
61
7.5k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
93
16k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
8
860
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
26
2.1k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
44
2.2k
Transcript
2022.12.09 株式会社うるる 河本周時 「非常に残念ですが、 切り戻しましょう...」 システムリプレイスのアンチパターンに 立ち向かったリーダーの話
Copyright © 2022 ULURU inc. All Rights Reserved. 株式会社うるる 河本 周時
プロフィール • 年齢 : 1996年生まれの26歳 • 入社 : 5年目(インターン入れると6年目) ◦ 2018年に新卒としてJoin • バックエンドエンジニアとして 複数プロダクトを経験 • 2年目にプロジェクトリーダーを経験 • 現在はチームリーダーとして従事 • バイク2台持ち ◦ Ninja400 KRT ◦ Z125 PRO
自社とサービスの紹介
Copyright © 2022 ULURU inc. All Rights Reserved. 自社の紹介
Copyright © 2022 ULURU inc. All Rights Reserved. 自社サービスの紹介
本日の発表内容について
Copyright © 2022 ULURU inc. All Rights Reserved. 本日の発表内容について •
システムリプレイスに伴い、新システムと旧システムの並行稼働を行った • 途中での切り戻しなど、さまざまな課題や困難が立ちはだかった... 私がリーダーとしてチームメンバーとともに、 どのように立ち向かったのかを紹介
Copyright © 2022 ULURU inc. All Rights Reserved. 本日の発表内容について ~アジェンダ~
• プロジェクトの背景について • プロジェクト進行上の課題と対策 • リリース後に発生した課題 • 課題から得た学びや反省について
双方向データ連携が必要になった背景について
Copyright © 2022 ULURU inc. All Rights Reserved. リプレイスについて1 •
バック/フロント/インフラ/DB全てを刷新! • 下記制約のため新旧システムの並行稼働を行うことが決定...! ①ビッグバンリリースを避けるために段階リリースを選択 ②その過程でDBを分割 ③双方向データ連携が必要になった 双方向データ連携は一般的に言われるアンチパターンですが、それを踏み抜きにいきました ! ビッグバンリリース 並行稼働
Copyright © 2022 ULURU inc. All Rights Reserved. リプレイスについて2 旧
新 データ入力側 データ閲覧側 データ入力側 データ閲覧側 リニューアル対象のシステムの新旧での設計について DB DB DB
Copyright © 2022 ULURU inc. All Rights Reserved. リプレイスについて3 旧
新 データ入力側 データ閲覧側 データ入力側 データ閲覧側 並行稼動の時のWebAppとDBの関連図 DB DB DB あとからリリース 双 方 向 連 携 が 必 要 に な っ た
プロジェクト進行上の課題と対策
Copyright © 2022 ULURU inc. All Rights Reserved. プロジェクト進行上の課題と対策 •
双方向連携に利用したツールの理解が困難 • 新旧それぞれのシステム設計とDB設計に対しての深い知識が必要 • データ整合性を守りながら数千万行の移行処理が必要 • 限られた停止時間の中で複雑なリリース完遂が必要
Copyright © 2022 ULURU inc. All Rights Reserved. プロジェクト進行上の課題と対策 •
双方向連携に利用したツールの理解が困難 • 新旧それぞれのシステム設計とDB設計に対しての深い知識が必要 • データ整合性を守りながら数千万行の移行処理が必要 • 限られた停止時間の中で複雑なリリース完遂が必要
Copyright © 2022 ULURU inc. All Rights Reserved. 双方向連携に利用したツールの理解が困難 【課題】
• SymmetricDSというオープンソースの RDB同期ツールを利用 • 日本語の文献がほぼない • 変換の実現に時間がかかった • 連携エラーの原因の特定がしづらい • 連携エラーの解消が困難 • 有償サポートが英語対応のみ SymmetricDS 公式ドキュメント
Copyright © 2022 ULURU inc. All Rights Reserved. 【対策】 役割を明確にして課題に対して専念
できる状況を作った ★変換方法調査チーム ★連携実装チーム ★課題解決チーム 双方向連携に利用したツールの理解が困難 変換方法調査チーム 連携実装チーム 課題解決チーム
Copyright © 2022 ULURU inc. All Rights Reserved. プロジェクト進行上の課題と対策 •
双方向連携に利用したツールの理解が困難 • 新旧それぞれのシステム設計とDB設計に対しての深い知識が必要 • データ整合性を守りながら数千万行の移行処理が必要 • 限られた停止時間の中で複雑なリリース完遂が必要
Copyright © 2022 ULURU inc. All Rights Reserved. 新旧それぞれのシステム設計とDB設計に対しての深い知識が必要 【課題】
• 旧DBのカラムを、新DBのどの カラムにどう変換して連携すれば良いのか 調査が必要 • カラムの型は一致しているか確認が必要 • 連携と移行が必要なテーブルとデータの洗 い出しが必要 ◦ 誰に確認すれば良いのか不明瞭 ◦ 不整合なデータの扱いが不明瞭 • 連携と移行したデータは新旧 どちらのアプリでも期待通りに 表示されるようにする必要がある 旧DB… 新DB… 旧システム… 新システム…
Copyright © 2022 ULURU inc. All Rights Reserved. 【対策】 •
ビジネスドメインのエキスパートに協 力を依頼する • 設計書やER図を取得した • テーブルカラム単位のマッピングや 変換表を作成 新旧システムの設計、ビジネスドメインの知識、 DBの制約、DB定義の差異などの理解が必要 契約周りに詳しい 新システムに詳しい 顧客データに詳しい 新旧それぞれのシステム設計とDB設計に対しての深い知識が必要
Copyright © 2022 ULURU inc. All Rights Reserved. プロジェクト進行上の課題と対策 •
双方向連携に利用したツールの理解が困難 • 新旧それぞれのシステム設計とDB設計に対しての深い知識が必要 • データ整合性を守りながら数千万行の移行処理が必要 • 限られた停止時間の中で複雑なリリース完遂が必要
Copyright © 2022 ULURU inc. All Rights Reserved. データ整合性を守りながら数千万行の移行処理が必要 【課題】
• 外部キーの考慮が必要 • レコード量が多く、移行や変換 作業に莫大な時間を必要とする想 定 • 各種インフラリソースのスペック上の 制約があった 旧DB 新DB 移行処理 OOMで処理中断 FK守れず処理中断
Copyright © 2022 ULURU inc. All Rights Reserved. データ整合性を守りながら数千万行の移行処理が必要 【対策】
• 外部キーを考慮し、年ごとに処理を 分割できるように移行バッチを 並列化 • マシンスペックはできる限り大きくし た 並列 × マシンスペック = 爆速!!💨 旧DB 新DB 2015 2016 2017 2018 ・・・ ・・・
Copyright © 2022 ULURU inc. All Rights Reserved. プロジェクト進行上の課題と対策 •
双方向連携に利用したツールの理解が困難 • 新旧それぞれのシステム設計とDB設計に対しての深い知識が必要 • データ整合性を守りながら数千万行の移行処理が必要 • 限られた停止時間の中で複雑なリリース完遂が必要
Copyright © 2022 ULURU inc. All Rights Reserved. 限られた停止時間の中で複雑なリリース完遂が必要 【課題】
• リリース時間の制約があった • 反映の前後関係が複雑 • データ確認に時間がかかる • 複数回の時間をかけたリリース リハーサルが必要
Copyright © 2022 ULURU inc. All Rights Reserved. 限られた停止時間の中で複雑なリリース完遂が必要 【対策】
• リリース作業未経験者でも迷わずにでき るレベルで細かい手順書を用意 (1200手順ほど) • データ確認をなるべく自動化できるように チェック用のスクリプトを用意した • リリースリハーサルは、もしもに備えて、 主担当以外のメンバーも実施して手順の 理解に努めた 手順書 自動化スクリプト
ここまでにさまざまな課題や困難を乗り越えてきて ようやくリリースができました!🎉🥳🎉
段階リリースの第1弾が終わり、 第2弾のリリースに向けてやっと順調に プロジェクトが進んでいくと思っていたら...
「非常に残念ですが、 切り戻しましょう...」
Copyright © 2022 ULURU inc. All Rights Reserved. 切り戻しの理由 双方向連携の遅延が発生し、サービスの強みとなる
「速報性」が失われてしまった
リリース後に発生した課題と対策
Copyright © 2022 ULURU inc. All Rights Reserved. リリース後に発生した課題と対策 •
解消が難しいエラーが発生 • リリース後に連携遅延が発生し、サービスの売りである速報性が失われる
Copyright © 2022 ULURU inc. All Rights Reserved. リリース後に発生した課題と対策 •
解消が難しいエラーが発生 • リリース後に連携遅延が発生し、サービスの売りである速報性が失われる
Copyright © 2022 ULURU inc. All Rights Reserved. 解消が難しいエラーが発生 【課題】
• 本番リリースをした後にエラーが頻 発 • 開発用環境で再現しないため原因 の追求が困難 • 解消するにはDBにデータパッチを 流す必要がある • 一度エラーが発生すると後続処理が 止まるため解消まで時間をかけられ ない WAKKAわっかんない...🥺 (※WAKKAは双方向連携プロジェクト名 )
Copyright © 2022 ULURU inc. All Rights Reserved. 解消が難しいエラーが発生する 【対策】
• エラーの対応方法をリスト化し、誰で も対応をスムーズにできるようにした • エラーを解消した後、できる限り原因 調査を行った • 根本解決できるものに関しては 手を打ち続けた アラート 対応方法まとめシート
Copyright © 2022 ULURU inc. All Rights Reserved. リリース後に発生した課題と対策 •
解消が難しいエラーが発生 • リリース後に連携遅延が発生し、サービスの売りである速報性が失われる
Copyright © 2022 ULURU inc. All Rights Reserved. リリース後に連携遅延が発生し、サービスの売りである速報性が失われる 旧
新 遅 延 発 生 顧客 速 報 性 が 失 わ れ た サイト サイト DB DB クラウドワーカー
Copyright © 2022 ULURU inc. All Rights Reserved. 【対策】 •
マシンスペックを上げる • データ連携順序の変更 • データ連携SQLのチューニング リリース後に連携遅延が発生し、サービスの売りである速報性が失われる
Copyright © 2022 ULURU inc. All Rights Reserved. リリース後に連携遅延が発生し、サービスの売りである速報性が失われる それでも解決はしませんでした...
Copyright © 2022 ULURU inc. All Rights Reserved. なので一旦切り戻しを行うことで仕切り直しをし、 影響を最小限に抑えるやり方を経た上でリリースを完了させました!
結果として現在双方向連携は役割を果たしました....! リリース後に連携遅延が発生し、サービスの売りである速報性が失われる
もし同じ取り組みをするなら
Copyright © 2022 ULURU inc. All Rights Reserved. もし同じ取り組みをするなら •
双方向連携する際に意識すると良いこと ◦ 双方向連携するツールの事前検証を入念に行う ◦ ステークホルダーを巻き込んで進める ◦ データ移行する際は、並列処理が可能な設計をする ◦ データ移行に耐えうるマシンスペックを事前に検証しておく ◦ リリース手順書は誰が行っても迷わないようにする ◦ リリースリハーサルは複数回行う
Copyright © 2022 ULURU inc. All Rights Reserved. もし同じ取り組みをするなら ビッグバンリリースのリスクと、
新旧並行稼働に伴う双方向データ連携のリスクを並べて、 よく検討した上で方針決定できると幸せです! (双方向連携を伴う並行稼働は本当に辛かったです ...)
Copyright © 2022 ULURU inc. All Rights Reserved. ビッグバンリリースと双方向データ連携のリスク 【ビッグバンリリースのリスク】
• 動作確認にかなり時間がかかる • 切り戻しが困難になる • 不具合の切り分けが大変 【双方向データ連携のリスク】 • 過去データの移行が大変 • データ不整合が生じる可能性がある • 利用ツールの検証に時間がかかる • データ連携が遅延すると影響大 • 不具合調査に時間がかかる
Copyright © 2022 ULURU inc. All Rights Reserved. ビッグバンリリースと双方向データ連携のリスク 【ビッグバンリリースのリスク】
• 動作確認にかなり時間がかかる • 切り戻しが困難になる • 不具合の切り分けが大変 【双方向データ連携のリスク】 • 過去データの移行が大変 • データ不整合が生じる可能性がある • 利用ツールの検証に時間がかかる • データ連携が遅延すると影響大 • 不具合調査に時間がかかる 赤字になっているのが見えていなかったリスクです
Copyright © 2022 ULURU inc. All Rights Reserved. もし同じ取り組みをするなら もし双方向データ連携を伴う並行稼働をする場合は、
我々と同じ失敗をしないようにしていただければ幸いです!
Appendix
None