Tässä pieni katsaus työkaluihin Node.js-sovellusten ajamiseen tuotantoympäristöissä. Olen kerännyt tähän muutaman relevantin moduulin tuotantoympäristöihin liittyen ja käyn läpi lyhyesti, mitä ne tekevät.
Moduuli | Kuvaus |
---|---|
Supervisor | Supervisor on työkalu yksittäisen Node.js-palvelimen automaattiseen uudelleenkäynnistelyyn. Se käynnistää prosessin uudelleen, jos prosessi kuolee tai jos sen lähdekoodi päivittyy levyllä. Sopii siis myös kehityskäytön aikana siihen, ettei palvelinta tarvitse käynnistää käsin uudelleen koko ajan. |
Always | Always tekee suunnilleen saman kuin Supervisor. Tällä projektilla on kuitenkin vähemmän aktiviteettia GitHubissa kuin Supervisorilla. |
Cluster | Cluster on Node.js:n sisäänrakennettu moduuli, jonka avulla voi hyödyntää useampaa CPU-ydintä. Master-prosessi käynnistää palvelimesta useita rinnakkaisia worker-prosesseja, jotka voivat kuunnella esimerkiksi samaa TCP-porttia. Worker-prosessit voivat myös kommunikoida master-prosessin kanssa ja keskenään. |
Upstart | Upstart on Ubuntun sisäänrakennettu palvelinprosessien hallintajärjestelmä. Se käynnistää bootin yhteydessä kaikki palvelimet, joilla on konfiguraatio /etc/init-hakemistossa. Lisäksi se käynnistää kaatuneen palvelimen automaattisesti uudelleen (respawn). |
Forever | Forever hallinnoi palvelinprosesseja samaan tapaan kuin Upstart. Palvelimia käynnistetään ja pysäytetään komentamalla forever start, forever stop, forever list, jne. Omasta mielestäni Foreverille ei ole tarvetta, kun Upstart on jo käytössä. |
Foreman | Foreman helpottaa sellaisten web-sovellusten käynnistämistä, jotka koostuvat useasta erilaisesta rinnakkaisesta palvelimesta. Procfile-tiedosto määrittelee, mitkä kaikki palvelinprosessit käynnistetään kerralla yhdellä "foreman start" -komennolla. Tämä helpottaa sovelluksen ajamista kehitysympäristössä yhdessä terminaalissa. Lisäksi Foreman integroituu Upstartiin niin, että Procfile voidaan konvertoida palvelimella Upstartin conf-tiedostoksi. Foreman on Ruby-gem ja alkujaan Rails-sovellusten ajamiseen suunniteltu. |
Node Foreman | Node Foreman on Node.js:lle tehty versio Foremanista. Se toimii pitkälti samalla tavalla kuin alkuperäinen Ruby-versiokin, mutta ei edellytä Rubyn ja Foreman-gemin asentamista. Lisäksi se tukee joitakin Node.js:n lisäominaisuuksia, kuten package.json-konfiguraatiota ilman erillistä Procfileä. |
Paras yhdistelmä näyttäisi olevan Supervisor + Cluster + Node Foreman + Upstart:
Jos jollain on kokemuksia tästä mallista tai paremmista ratkaisuista, niin olisi mielenkiintoista kuulla kommenteissa.