RDBMSのスキーマ変更を行う場合に、Github + Jenkins等のCIツールによる自動デプロイで行うか否かという質問と解釈して回答します。
スキーマ変更の内容、システムの特徴、インフラ構成、エンジニアの好み、会社の文化次第な気がします。
- RDBMSのスキーマ変更には長時間のテーブルロックや高負荷が絶対に避けられないものがあります。
- 10秒間くらいシステムが止まっても問題ないよというシステムもあれば、1秒たりともダウンが許されないシステムもあります。
もちろんRDBMSのスキーマ変更は手作業で行うよりは自動化したほうがいいです。
しかしそれを自動デプロイ時に行うべきかと問われると、「いいえ、場合によります」としか言えないです。
システムの規模が大きくなればなるほど、止められないシステムであればあるほど、自動デプロイ時に行うのは難しくなるでしょうね。
例えばRubyとRailsで有名なクックパッドの「クックパッドにおける最近のActiveRecord運用事情」によると以下のとおりです。
マイグレーションを使わない
クックパッドの本体アプリケーションでは標準のマイグレーションを使っていません。
また、Rails のマイグレーションは db:migrate をデプロイ時に実行するのが基本ですが、ALTER TABLE は、ものによっては DB サーバの負荷が高い場合があり、必ずしもデプロイ時に実行するのが好ましいとは限りません。そこで、サーバ負荷をリアルタイムに把握している、私の所属するインフラストラクチャー部のエンジニアが実行タイミングをコントロールしたいという要求もあります。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/11/29 14:40