Upgrade to Pro — share decks privately, control downloads, hide ads and more …

初めてのデータ移行プロジェクトから得た学び

momochi29
January 26, 2023

 初めてのデータ移行プロジェクトから得た学び

2023/1/25 Hatena Engineer Seminar #23
https://hatena.connpass.com/event/271696/

momochi29

January 26, 2023
Tweet

Other Decks in Technology

Transcript

  1. 不確実性を下げるには? • 何もかも初めて → 詳しい人と協力する? ◦ 課金、データ移行の知識/経験がない • 移行日はずらせない →

    本当にずらせない? • 実現可能なのかわかっていない ◦ 課金契約を移行した前例がない 12
  2. 移行日にやることを最小化する 14 • かたまり毎に分割して移行する ◦ ユーザー情報移行フェーズ ◦ 課金契約移行フェーズ • 移行日に何を移行したいかを明確にする

    ◦ ユーザー情報の移行は移行日前でも可能とわかった • 移行日を調整する ◦ 関係者が多いのでコミュニケーション役が1人いると良い
  3. 不確実性を下げるには? • 何もかも初めて → 詳しい人と協力する? ◦ 課金、データ移行の知識/経験がない • 移行日はずらせない →

    本当にずらせない? • 実現可能なのかわかっていない ◦ 課金契約を移行した前例がない 15
  4. 不確実性を下げるには? • 何もかも初めて → 詳しい人と協力する? ◦ 課金、データ移行の知識/経験がない • 移行日はずらせない →

    本当にずらせない? • 実現可能なのかわかっていない → プロトタイプ作る? ◦ 課金契約を移行した前例がない 16
  5. • まずは実現できそうかを 知りたい ◦ 実装したあとにダメとわか るのは悲しい • 不確実性の高いものから 取り組む ◦

    不確実性が高い ≒ 難しい ので大変なのは事実 ◦ 実現できるかわからない不 安を解消する あとはやるだけにしたい 17 https://xtech.nikkei.com/it/article/COLUMN/20131001/508039/ より引用 不確実性コーン
  6. プロトタイプを2回作る 18 • 1回目: 繋がりを確認して自分が納得するため ◦ 自分の中で実装のイメージを付けることが目的 ◦ どれだけ適当でも気にしないしテストも不要 •

    2回目: ちゃんと考えてみんなが納得するため ◦ ソースコードレベルで議論することが目的 ◦ 本気で命名や処理を考えるけどテストはなくても良い 1回目で素早く実現可能性を検証し、2回目で品質の高い実装をする
  7. 不確実性を下げることができた • 何もかも初めて ◦ → 仲間を頼ってプロジェクト全体の不確実性を下げる • 移行日はずらせない ◦ →

    移行日に移行するものを明確して移行時の不確実性を下げる • 実現可能なのかわかっていない ◦ → プロトタイプを作って実装時の不確実性を下げる 19
  8. 移行用のテーブルを作る • 移行用のテーブルを作る ◦ 移行のために必要な情報 ◦ 移行フェーズごとで得た情報 ▪ 例) 課金契約移行が成功したら課金情報が得られる

    ◦ 移行ステータス ▪ 移行フェーズごとに成功/失敗が記録される ◦ エラーコード ▪ 例) 課金時にクレジットカードが不正でエラーになった • 追記専用で更新はしない ◦ 更新すると情報が失われる ◦ 操作した記録をすべて残す 27
  9. 本番環境で事前に検証する • テスト用のアカウントを用意する ◦ 必要な分だけ用意する ▪ 同値分割、境界値分析の要領 • 移行にかかる時間を計測する ◦

    当日の移行に必要な時間を見積もる ▪ 計測した結果を平均処理時間として並列数を考慮して見積もり 36
  10. 自信を持って移行できた • 移行の状態を人間が管理しなくて良い ◦ → 状態がすべて記録されているので漏れはないだろう • 何回実行しても壊れない ◦ →

    移行できるものしか移行できないので安心して実行できる • 本番環境で問題ないか知りたい ◦ → 事前に本番環境で動いたので大丈夫だろう 37
  11. 振り返り • 仲間を頼ることも大事 ◦ 仲間じゃん ◦ 仲間を信じる ▪ 自分の仕事のスコープ外のことを考えすぎない ▪

    自分のやること、考えることを減らす • 移行プロジェクトは大変 ◦ 最低3人は必要 ▪ 1. コミュニケーション役 ▪ 2. 主担当 ▪ 3. 相談役 40