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
440
「非常に残念ですが、 切り戻しましょう...」 システムリプレイスのアンチパターンに 立ち向かったリーダーの話
2022/12/09(金)にDevelopers CAREER Boostさんで登壇した際の資料です。
Kawamoto Shuji
December 09, 2022
Tweet
Share
Other Decks in Technology
See All in Technology
LINEヤフーのフロントエンド組織・体制の紹介【24年12月】
lycorp_recruit_jp
0
530
開発生産性向上! 育成を「改善」と捉えるエンジニア育成戦略
shoota
2
310
社外コミュニティで学び社内に活かす共に学ぶプロジェクトの実践/backlogworld2024
nishiuma
0
260
kargoの魅力について伝える
magisystem0408
0
200
DevOps視点でAWS re:invent2024の新サービス・アプデを振り返ってみた
oshanqq
0
180
C++26 エラー性動作
faithandbrave
2
720
小学3年生夏休みの自由研究「夏休みに Copilot で遊んでみた」
taichinakamura
0
150
AI時代のデータセンターネットワーク
lycorptech_jp
PRO
1
280
日本版とグローバル版のモバイルアプリ統合の開発の裏側と今後の展望
miichan
1
130
成果を出しながら成長する、アウトプット駆動のキャッチアップ術 / Output-driven catch-up techniques to grow while producing results
aiandrox
0
260
継続的にアウトカムを生み出し ビジネスにつなげる、 戦略と運営に対するタイミーのQUEST(探求)
zigorou
0
530
KnowledgeBaseDocuments APIでベクトルインデックス管理を自動化する
iidaxs
1
260
Featured
See All Featured
Product Roadmaps are Hard
iamctodd
PRO
49
11k
[RailsConf 2023] Rails as a piece of cake
palkan
53
5k
Building a Modern Day E-commerce SEO Strategy
aleyda
38
7k
For a Future-Friendly Web
brad_frost
175
9.4k
Facilitating Awesome Meetings
lara
50
6.1k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
29
2.3k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
169
50k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
132
33k
Learning to Love Humans: Emotional Interface Design
aarron
273
40k
Automating Front-end Workflow
addyosmani
1366
200k
Music & Morning Musume
bryan
46
6.2k
Gamification - CAS2011
davidbonilla
80
5.1k
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