$30 off During Our Annual Pro Sale. View Details »

長年運用されているサービスの主要データ移行をサービス停止せず安全にリリースしました

phayacell
December 06, 2024

 長年運用されているサービスの主要データ移行をサービス停止せず安全にリリースしました

RubyWorld Conference 2024 Day 2 の発表資料です。
https://2024.rubyworld-conf.org/ja/program/day2/#b-2-2

STORES 株式会社のサービス「STORES ネットショップ」で実施したデータ移行プロジェクトに関する発表をしました。

Ruby を書くのって、たのしいですよね。
Ruby で書かれているサービス開発って、たのしいですよね。
そんな Ruby のサービスは、できる限り長く続けたいですよね。
これは、長年運用してきた Ruby のサービスを、今後も長く続けていくためにやったお仕事の話です。

phayacell

December 06, 2024
Tweet

More Decks by phayacell

Other Decks in Technology

Transcript

  1. カナリアリリースとは A canary release (or canary launch or canary deployment)

    allows developers to have features incrementally tested by a small set of developers. Feature flags like an alternate way to do canary launches and allow targeting by geographic locations or even user attributes. If a feature's performance is not satisfactory, then it can be rolled back without any adverse effects. It is named after the use of canaries to warn miners of toxic gases (Miner's canary). ref. Feature toggle#Canary_release - Wikipedia 33
  2. 新 旧 これらを比較すれば良いのイメージ 47 注文リクエスト 注文データ作成 注文データ (古い) 作 成

    注文リクエスト 注文データ作成 作 成 注文データ (古い) 注文データ (新しい) 変換 これらを比較すれば良い 変換 注文データ (新しい)
  3. つまり、こういうこと(実際よりかんたんにしています) # ベースラインの注文データ作成 post '/orders', params: old_order = Order.find(response.parsed_body['id']) #

    カナリアの注文データ作成 create_feature_flag post '/orders', params: new_order = Order.find(response.parsed_body['id']) expect(old_order).to eq new_order 48