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
720
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
「非常に残念ですが、 切り戻しましょう...」 システムリプレイスのアンチパターンに 立ち向かったリーダーの話
2022/12/09(金)にDevelopers CAREER Boostさんで登壇した際の資料です。
Kawamoto Shuji
December 09, 2022
Other Decks in Technology
See All in Technology
スタートアップにAmazon EKSは早すぎる? マルチプロダクト戦略を加速する Platform Engineeringの実践 / Is Amazon EKS Too Soon for Startups? Practical Platform Engineering to Accelerate a Multi-Product Strategy
elmodev09
1
1.9k
千葉での単身赴任からAWSをやり続け、千葉に戻ってきた話
yama3133
1
120
AIに障害切り分けを全部やってもらった。 。 。 。
estie
0
260
徹底討論!ECS vs EKS!
daitak
3
1.8k
CVE-2026-20833_脆弱性対応とAES 化について
jukishiya
0
140
SRE歴2ヶ月でも開発6年の知見を活かして、チームで止まっていた環境改善を前に進めた話
a_ono
0
110
AWS Summit の片隅で、体育座りしながらコミュニティがにぎわう理由を考えた
k_adachi_01
2
240
組織における AI-DLC 実践
askul
0
160
從觀望到全公司落地:AI Agentic Coding 導入實戰 — 流程整合與安全治理
appleboy
0
160
AI-DLCを “そのまま導入しなかった”話 ~組織に合わせてアジャストした 私たちの実践共有~
hiroramos4
PRO
1
440
Zenoh on Zephyr on LiteX
takasehideki
2
130
OTel × Datadog で 「AI活用」を計測し、改善に繋げる
shihochan
2
1.1k
Featured
See All Featured
Gemini Prompt Engineering: Practical Techniques for Tangible AI Outcomes
mfonobong
2
450
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
25
2k
Docker and Python
trallard
47
3.9k
エンジニアに許された特別な時間の終わり
watany
107
250k
Documentation Writing (for coders)
carmenintech
77
5.4k
How STYLIGHT went responsive
nonsquared
100
6.2k
Utilizing Notion as your number one productivity tool
mfonobong
4
330
KATA
mclloyd
PRO
35
15k
Marketing Yourself as an Engineer | Alaka | Gurzu
gurzu
0
250
Building the Perfect Custom Keyboard
takai
2
800
Digital Projects Gone Horribly Wrong (And the UX Pros Who Still Save the Day) - Dean Schuster
uxyall
1
1.8k
Rails Girls Zürich Keynote
gr2m
96
14k
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