継続的インテグレーションのセットアップはありません(まだ)。しかし、非常に頻繁に展開したい。1日1回かそこら。
別の Postgres サーバーを備えたかなり標準的な Django アプリケーションがあります。通常のレンタル VM を使用します (Amazon や Rackspace は使用しません)。
アプリケーションのダウンタイムを最小限に抑えるにはどうすればよいでしょうか? ダウンタイムをゼロにするのが最善です。2 つの同等のアプリケーションと 2 つのデータベース サーバーのセットアップを考え、1 つの app/db サーバー ペアを次々とデプロイしました。
問題は、データの一貫性を保つことです。1 つの app/db サーバー ペアが更新されている間、古いコードでサーバー ペアがユーザーにサービスを提供できます。しかし、ユーザーがデータベースに書き込むと、更新されたペアに切り替えるときにデータが失われます。特にスキーマの移行をプッシュする場合。
どうすればこれを処理できますか? これは非常に一般的な問題ですが、良い答えが見つかりません。この問題をどのように処理しますか?