[背景]
個人でサービスを運営しております。
ECSのFargate上に構築しており、タスクにnginxとphp-fpm(Laravel)のコンテナが動いております。
上記のタスクが1つだと落ちてしまうので、落ちないように2台構成にしており、1サービスに2タスク動いている形になります。
現在は同じdockerでバッチもまわしています。
Laravelの機能を使用して以下のようなこーどをかいております。
$schedule->command("command:daily_batch")......->dailyAt(12:00);
重複して実行しないように ->withoutOverlapping()->onOneServer();
の処理もはいっております。
[今回の問題]
バッチを回す際に、結構負荷がかかるものがあり、そのバッチが動き始めたらwebも見にくくなる状況になってしまっておりまして、それを解決したいです。表題の件になります。
そこの部分でお力を貸していただけると嬉しいです。
[自分で考えた方法とデメリット]
-
Laravelのレポジトリをbatchとwebにわけてそれぞれサービス&タスクをつくる -> 現在コードが1つのため結構めんどくさそう
-
レポジトリはわけず、batch用のさーびす(丸コピ)を作り、dockerにわたす変数(?)などでバッチサーバーかwebサーバーかを判定させ実行をbatchサーバーのみにさせる。 -> できるのかわからない
-
aws batchという機能を使う -> 機能自体あまり学習が追いついてなく不透明
なんとなく2の対応が早くできて、影響がすくなそうかなと読んでいます。
どのような方法があるでしょうか?
よろしくお願い致します。