Chapter 04

安全なマイグレーションコマンドを作成(など)

たつきち
たつきち
2022.07.30に更新

この章に対応するコミット

安全なマイグレーションコマンドを作成(など)

プロジェクトのベース部分ができてきたところで、CI/CDの設定に続いて最初のうちにやっておくシリーズです。

安全なマイグレーションコマンドを作成(MySQLの例)

1つは、 doctrine:migrations:migrate コマンドをラップしたコマンドを作って、デプロイ時にそちらを使うようにする、というものです。

僕が普段開発する環境ではBlue Green Deploymentのようなかっこいいインフラは基本的にないので、せめて doctrine:migrations:migrate コマンドを実行する前に必ず mysqldump を実行するようにして万が一事故が起こったときにすぐに復旧できるようにしてあります。

詳細は以下の過去記事をご参照ください。

[Symfony] DBマイグレーションの前に常にmysqldumpを実行するようにして心の平穏ゲットだぜ!

コマンドを実装したら、 deploy.php に以下のように追記して常にこのコマンドを使ってマイグレーションを実行するようにします。

  :
  :
+ task('app:database:migrate', function () {
+     run('{{bin/console}} app:database:migrate');
+ });
+ before('deploy:symlink', 'app:database:migrate');
  after('deploy:failed', 'deploy:unlock');

Sentryを導入

もう1つは、Sentry という無料のエラー監視サービスを導入しておくことです。

まだアプリ自体は雛形の状態ですが、本番環境へのCDも設定されていてこの時点からお客さんには実際に触ってもらいながら開発を進めていくので、本番環境で発生したエラーは監視しておけるとバグを早めに潰せて幸せです。

こちらも詳細は以下の過去記事をご参照ください。

[超簡単] SymfonyプロジェクトにSentryを導入する