>100 Views
November 14, 25
スライド概要
Professional Ruby and Rails programmer in Tokyo.
本番環境で安全に migrationを実行したい @Omotesando.rb#114
もとつねの日常 @daily_mototsune Ruby on Railsを中心に扱っているフリーランスエンジニア ドメインモデリングからAWSでの運用、スクラム運営やチームビルディ ングなどなど楽しくやらせてもらってます 普段はOmotesando.rbやGinza.rbによくいます 🍷♨✈🏎
オンラインDDL (Data Definition Language)
- CREATE INDEX - ALTER TABLE など
テーブル全体のロックを伴わず オンラインで定義を変更できる
安全にできる?
No
いろんな罠がある
例えば
Add Check Constraint class AddCheckConstraint < ActiveRecord::Migration[8.0] def change add_check_constraint :users, "price > 0", name: "price_check" end end
死
Remove Column class RemoveSomeColumnFromUsers < ActiveRecord::Migration[8.0] def change remove_column :users, :some_column end end
死
1つのテーブルにロックが かかると連鎖して サービス停止になる可能性
わかっている人は防げるが 知らない人は踏んでしまう
テスト環境で気が付ける?
トラフィックによって 問題になる場合もある
人に依存することなく 機械的に解決できることが大切
strong_migrations gem
推しポイント 警告にexampleが載っている (readmeにもあるよ)
Happy deploy! 🎉