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
620
「非常に残念ですが、 切り戻しましょう...」 システムリプレイスのアンチパターンに 立ち向かったリーダーの話
2022/12/09(金)にDevelopers CAREER Boostさんで登壇した際の資料です。
Kawamoto Shuji
December 09, 2022
Tweet
Share
Other Decks in Technology
See All in Technology
Autonomous Database - Dedicated 技術詳細 / adb-d_technical_detail_jp
oracle4engineer
PRO
4
10k
Terraformで構築する セルフサービス型データプラットフォーム / terraform-self-service-data-platform
pei0804
1
200
Android Audio: Beyond Winning On It
atsushieno
0
3.4k
バイブスに「型」を!Kent Beckに学ぶ、AI時代のテスト駆動開発
amixedcolor
3
590
まずはマネコンでちゃちゃっと作ってから、それをCDKにしてみよか。
yamada_r
2
120
IoT x エッジAI - リアルタイ ムAI活用のPoCを今すぐ始め る方法 -
niizawat
0
130
機械学習を扱うプラットフォーム開発と運用事例
lycorptech_jp
PRO
0
670
JTCにおける内製×スクラム開発への挑戦〜内製化率95%達成の舞台裏/JTC's challenge of in-house development with Scrum
aeonpeople
0
270
Snowflake Intelligenceにはこうやって立ち向かう!クラシルが考えるAI Readyなデータ基盤と活用のためのDataOps
gappy50
0
280
いま注目のAIエージェントを作ってみよう
supermarimobros
0
370
品質視点から考える組織デザイン/Organizational Design from Quality
mii3king
0
210
Firestore → Spanner 移行 を成功させた段階的移行プロセス
athug
1
500
Featured
See All Featured
The Pragmatic Product Professional
lauravandoore
36
6.9k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
31
2.2k
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
8
530
Building Applications with DynamoDB
mza
96
6.6k
Music & Morning Musume
bryan
46
6.8k
Art, The Web, and Tiny UX
lynnandtonic
303
21k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
188
55k
Java REST API Framework Comparison - PWX 2021
mraible
33
8.8k
Embracing the Ebb and Flow
colly
87
4.8k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
52
5.6k
Imperfection Machines: The Place of Print at Facebook
scottboms
268
13k
Bootstrapping a Software Product
garrettdimon
PRO
307
110k
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