モノリシックアーキテクチャから自動スケーリンググループに移行しようとしていますが、データベースの移行をどのように実行すればよいかわかりません(Laravel)。
新しいボックスがオンラインになったときにスクリプトが実行されると思います。これにより、最新のコードがgit pullされます。このスクリプトでデータベースの移行も実行する必要がありますか?1つのボックスだけで実行する方法がわかりませんか?
モノリシックアーキテクチャから自動スケーリンググループに移行しようとしていますが、データベースの移行をどのように実行すればよいかわかりません(Laravel)。
新しいボックスがオンラインになったときにスクリプトが実行されると思います。これにより、最新のコードがgit pullされます。このスクリプトでデータベースの移行も実行する必要がありますか?1つのボックスだけで実行する方法がわかりませんか?
回答:
デプロイはどのように行っていますか?Nuke + ASGを再構築します(一度に1つのノード、またはグループ全体を一度に置き換えることによって)、またはすべてのアクティブなノードを再展開するスクリプトがありますか?
また、デプロイをどのようにトリガーしていますか?
理想的には、BambooやJenkinsのようなある種のCIサーバーからデプロイを実行/トリガーする必要があります。これを実行している場合は、ビルドサーバー(またはそのコンポーネントビルドエージェントインスタンス)からDB移行を実行できます。
これにより、たとえば、デプロイメントが失敗した場合にスナップショットからDBを復元できるため、環境をより詳細に制御できます。
多くのオームのストア移行状態はDB自体にありますが、「手動」で行う場合、自分で構築することも難しくありません。実行されたすべての移行が格納される「migrationstate」テーブルがあるだけです。こうすることで、ノードがオンラインになったときに、ローカルの「migrations」フォルダに対してそのテーブルをチェックし、不足しているものを実行できます。これにより、バージョンバンプ後の最初のノードのみが移行を実行します。
補足:CloudFoundryは、スケールセット内の各インスタンス(ノード)がその識別子にアクセスできるようにすることでこれを解決します。最初のものは0を取得し、次は1を取得します。そのようにして、ノードは最初のものかどうかを認識し、移行を実行できます。ASGも同じだとは思いません。