Notă: nu eram sigur dacă ar trebui să întreb asta aici, să depășesc stiva sau ???
Migrez o aplicație Ruby on Rails de la Heroku la AWS. Arhitectura serverului este destul de vanilie:
- Bază de date
- Server Web
- Worker Server
Baza de date și serverul web au fost migrate cu succes la AWS. Worker Server este pe punte.
FWIW: Serverul web aws rulează Ubuntu 20.x cu Passenger / nginx ca server http.
Acum lucrez la migrarea Worker, care este implementat cu exact același cod ca și serverul web. Singura diferență este că Worker nu este accesibil public și folosește Ruby Gem job_întârziat pentru a procesa cererile de fundal.
Worker Server
- Serverul de lucru a fost creat dintr-un ami bazat pe serverul web.
- S-a eliminat configurația serverului nginx care era un artefact de pe serverul web.
Întrebări
Cum configurez serverul Worker să pornească automat și să înceapă să ruleze lucrările de fundal când serverul pornește?
Cum pot menține procesul lucrătorului în viață dacă se întâmplă să apară o defecțiune și să se oprească?
În Heroku, linia de comandă care pornește serverul lucrător:
bundle exec rake jobs:work
După ce am pornit serverul Worker, pot rula comanda de mai sus și procesul de lucru funcționează excelent. Trebuie doar să vă dați seama cum să rulați procesul de lucru în mod non-interactiv.
FYI: Vin dintr-un fundal Windows/.NET. Mediul Linux / Ruby / Rails este încă destul de nou pentru mine.