Škálování, parametrizace & produkce
Tato témata nejsou vyžadována u semestrální práce. Jedná se o bonusová témata pro nadšence.
Škálování
Jelikož Node.js spouští JavaScript pouze v jednom vlákně, nevyužije na vícejádrovém procesoru jeho plný potenciál automaticky. Řešením je nastartování více procesů zároveň, přičemž požadavky mezi ně rozděluje load balancer. Pro Node.js existuje jednoduchá knihovna pm2, která nám s tímto pomůže.
Nainstalujeme ji do projektu:
Vytvoříme konfigurační soubor ecosystem.config.cjs:
V package.json přidáme skripty pro start a stop:
PM2 spustí procesy v pozadí. Jejich stav můžeme sledovat pomocí npx pm2 monit.
Parametrizace
Před nasazením do produkce budeme chtít upravit některé parametry, jako je port nebo URL, aniž bychom měnili kód. K tomu využijeme proměnné prostředí uložené v souboru .env.
Pro načtení těchto hodnot v Node.js použijeme knihovnu dotenv:
V index.js pak načteme konfiguraci:
Soubor .env by se neměl commitovat do Gitu, místo něj vytvořte .env.sample jako vzor.
Produkce
Pro nasazení můžete využít například DigitalOcean. Na serveru (Ubuntu) nainstalujete Node.js (doporučujeme přes NVM – Node Version Manager), stáhnete kód (např. přes Git), nainstalujete závislosti a spustíte aplikaci pomocí PM2.
Pokud používáte WebSockety, nezapomeňte v .env nastavit správnou APP_URL, aby se klient v prohlížeči mohl připojit na správnou adresu serveru místo localhostu.
Až nebudete chtít server používat, nezapomeňte jej smazat, abyste zbytečně neplatili za jeho provoz.
