KING:
FALLENANGEL: Rád bych to rozebral konkrétněji. Provozuju střední web, historicky to běží na třech VPS instancích - jedna pro web (Django), jedna pro Postgres, třetí Elasticsearch (KINGu ty mě asi nakope za provoz elasticu na jednom nodu, ale pro ty objemy vyhledávání co mám je to zatím v poho)
Všechno teď mám nainstalované přímo v systému bez dockeru. Nasazení nové verze jsou v zásadě tři příkazy:
- git pull
- případná aktualizace db přes python manage.py migrate
- restart gunicornu
Což je pro mě docela jednoduchý na nasazení nové verze aplikace, a když se všechno povede, tak návštěvníci výpadek nezaznamenají. Ale uvědomuji si, že to není správný řešení. Nedá se spolehnout, že na devu a produkci se používají stejné verze všech balíků a knihoven. Updatu systému (apt get) / restart mašiny není bezvýpadkový a je potřeba se předtím pokřižovat, aby se nic nevysypalo. atp.
Lokální vývojové prostředí už do mám dockerizované, ale pořád se odhodlávám, jak to úspěšně převést na produkci. CI, Kubernetes a většina devops věci jde tak nějak mimo mě. Dokázali byste mě navést jaký zvolit postup?
Hlavně bych chtěl aby výsledný řešení bylo tak akorát robustní, nasazení bylo rychlý, předcházelo se výpadkům při nasazení a případný rollback, šel udělat rychle. V úplně nejdivočejších snech bych v budoucnu chtěl ještě spustit jeden extra cluster v Americe (django, postgres jako slave), aby dokázal pokrýt read-only requesty z Ameriky.
A AWS/Google cloud jsem nikdy nepoužíval, ale asi při mém trafficu (2-3 TB měsíční outbound) by to asi lezlo do peněz.