Set up Resque for Rails Production environment on AWS

0

We have dockerized Rails application and It is deployed on AWS(using Fargate).

Currently, we have Dev and Staging servers running on AWS. We use Resque for scheduling and queuing purpose. We do use foreman to start below processes once deployment is completed.

Dockerfile Docker CMD bundle exec foreman start -f Procfile.dev-server

**Procfile.dev-server ** web: bundle exec rails s -p 3000 -b '0.0.0.0' queues: bin/rake environment resque:work QUEUE=responsive_tasks scheduler: bin/rake environment resque:scheduler

This setup is good and working fine till staging environment. Foreman is not recommended for Production setup and might be issue when scaling would require as all 3 processes running on same machine.

Doubt

How I can run all 3 different processes(web server, queues and schedulers) without Foreman once code is deployed on AWS for production?

Shall I run Resque servers on separate instance with same Rails app code?

demandé il y a 2 ans551 vues
1 réponse
0

You can create separate ECS services for each of your processes i.e. web-server, queue, scheduler and leverage ECS Service Discovery feature for service-to-service communication. By doing this, you can manage the lifecycle of these individual processes separately and also perform application-autoscaling on each of these services separately.

Note: Initiate your processes within the Docker ENTRYPOINT to make sure that the processes start during the container creation. By doing this, you will no longer require a process manager daemon like Foreman to manage your processes.

For ease of deploying these ECS services, you can use docker-compose as demonstrated in the document: https://docs.docker.com/cloud/ecs-integration/

Please add a comment if you need further clarification on the above approach.

profile pictureAWS
INGÉNIEUR EN ASSISTANCE TECHNIQUE
répondu il y a 2 ans

Vous n'êtes pas connecté. Se connecter pour publier une réponse.

Une bonne réponse répond clairement à la question, contient des commentaires constructifs et encourage le développement professionnel de la personne qui pose la question.

Instructions pour répondre aux questions