Vyzkoušel jsem si různé způsoby deployování webových aplikací a došel jsem k tomu, že poslední trendy nemusejí být zdaleka nejlepší volbou. Čímž posledním trendem myslím deployment Gitem.
Abych hned neurazil zastánce – sám využívám tento druh deploymentu například pro LunchtimeAnděl.cz. V nedávné době jsem místo ruční konfigurace použil POD, což je „Git push deploy for Node.js“, díky čemuž se nemusím o hooky starat sám. Jednoduše commitnu kód, pushnu a aplikace se restartuje. Spokojenost, žádné námitky.
Problém ale nastává, když se jedná o větší projekt. Například BOObook.cz – Pythoní aplikace se závislostmi nejen na PyPI, ale i na debianí balíky, ve velkém množství. Vedle toho CoffeeScript s Closure Library. Elasticsearch, memcache, nginx. PostgreSQL a migrace databáze. Cron soubor, init script. A další.
Z počátku, když spoustu věcí nebylo doprogramováno (tedy daleko před spuštěním) byl deployment Gitem velice jednoduchý úkol. Fungovalo to parádně. Postupem času se věci komplikovali a jelikož to nebyly neřešitelné problémy, s radostí jsem rozšiřoval hooky, které se mi o všechno postaraly.
Když jsem si rozbíhal druhé testovací prostředí, zjistil jsem ale, že Git přestává vyhovovat. Bylo to příliš komplikované a náchylné na chyby. Navíc jsem neměl nic, co mi dokáže čistý stroj připravit k provozu. To se mi nelíbilo a tak jsem nahradil Git hooky za Fabric. To mi umožnilo přesně to, co jsem potřeboval – přípravu serveru, deployment, automatické tagování, syncování databází a spoustu dalšího. Něco, co už z podstaty s hooky nelze udělat.
Několik měsíců jsem byl spokojen, nyní však zjišťuji, že už ani Fabric není dostačující. Respektive je, ale některé věci jsou řešeny zbytečně komplikovaně. Například řešení závislostí či instalace souborů do systému. Proto další krok bude přímo debianí balíček, který se mi postará o poslední nedostatky.
Tím se mi vyřeší i spoustu menších nedostatků. Třeba rozhodně nechci kompilovat JavaScript či styly až na serveru, proto musím mít minifikované verze už v repozitáři. Nebo se mi nelíbí nutnost aktualizovat Git submoduly na serveru kvůli fontům, které nechci kopírovat do svého repozitáře, což zabírá zbytečně čas.
Pak budu spokojen stejně jako s Git hooky pro LunchtimeAnděl.cz.
Co z toho plyne? Je dobré si vyzkoušet různé možnosti. Pokaždé se hodí totiž něco jiného. Nenechte se zlákat deployováním Gitem, pokud váš projekt potřebuje něco jiného.