Tehnološki sklad cutty.dev — zavestne izbire
Kaj je pod čelom cutty.dev in zakaj. Brez evangelizma — filozofija: dolgočasen, stabilen stack, hosting v EU in zasebnost, vgrajena v arhitekturo, ki jo lahko vzdržuje ena oseba.
Večina zapisov "moj tech stack" je ponosni seznam novosti. Poglej, imam to, imam tamto, in tukaj je še povsem sveža knjižnica iz prejšnjega tedna. Ta bo drugačen.
Resnica je taka, da ko projekt vodiš sam, ne iščeš najmodernejšega. Iščeš nekaj, kar te ne bo prebudilo ob tretih zjutraj. In prav o tem je celotna ta tehnološka sklad (stack) cutty.dev: dolgočasno namesto modno, evropsko namesto ameriškega, zasebno že od temelj in dovolj preprosto, da ga lahko obvladata dve roki.
Gresem zaporedoma, kot da bi ti to razlagal ob kavi.
Astro renderirano na strežniku (in zakaj ne nekaj »bolj kul«)
cutty.dev je Astro s strežnim renderiranjem (server-side rendering). Vsaka zahteva gre skozi strežnik, sestavi stran in vrne pripravljen HTML. Dolgobrzno? Prav to je po našem.
Želel sem tri stvari: renderiranje na strežniku brez težke opreme, 제대로 podporo več jezikov takoj in hitrost brez obremenitve. Astro ponuja vse to, koda pa ostane berljiva. Ko se po dveh mesecih premora vrnem k njemu, vem, kaj se tam dogaja. Pri solo projektih je to vredneje od katerega koli modnega dodatka, ki ga po letu nihče več ne podpira.
Ena datoteka namesto baze s fireworks
SQLite. Ena baza, ena datoteka na disku. K temu sloj poizvedb, ki komunicira s TypeScriptom, tako da če spremenim strukturo podatkov, se napaka pojavi v urejevalniku in ne v produkciji ob polnoči.
Zakaj prav to? cutty je "read-heavy". Nekdo klikne na skrajšano povezavo, mi opravimo branje in povečamo števec. To je vse. SQLite takšno promet lahko brez težav obvladuje, celo pri resnično velikih dnevnih številkah. A varnostna kopija? Kopiraš datoteko. To je to. Brez ceremonij replikacije, brez skript, ki nihče ne ve, kako delujejo.
Tukaj bodi pozoren na eno stvar, saj je to pogosta past: ljudje slišijo "SQLite" in mislijo "igračka za projekt za izpit". Ni resnica. Manj premikajočih del pomeni manj stvari, ki lahko zavijo. To ni varčevanje pri kakovosti, temveč zavestna odločitev.
Strežnik stoji v Evropi in to ni naključje
Namenski strežnik v EU. Lasten TLS, reverse proxy z avtomatskim HTTPS, aplikacija v kontejnerjih.
To je temelj tega, kako cutty ravna z podatki. Točno vem, kje fizično ležijo (pri strankah iz EU in v skladu s GDPR ni to le zanimivost, temveč pogoj), nisem vezan na enega ponudnika, nič ne izteče samodejno čez ocean, račun pa je predvidljiv namesto da bi skakal skupaj z prometom.
Da, udobne platforme z Zahaoda bi omogočile hitrejši začetek. Klikneš, deploy, deluje. Le toliko, da za to plačaš tam, kam pošlješ podatke svojih uporabnikov. Zame je bila to slaba pogodba.
PrevodiLastni model, pri sebi
cutty govori v 25 jezikih. To prevaja lokalni, odprti model AI, ki deluje na moji infrastrukturi. Besedila z vmesnika ne pošiljam do nobenega zunanjega ponudnika.
Prednosti so praktične. Posamezen prevod stane nič. Imam popolno nadzor nad kakovostjo in ga lahko osvežim, ko želim. In stroj vedno potrebuje človeško oko, zato je vsak od teh 25 jezikov pregledan. Toda dejstvo, da to počnem pri sebi, pomeni, da zasebnost ni postavka na ceniku. Je lastnost tega, kako je celotno delo zgrajeno.
Tailwind, kontejnerji in nekaj manjših odločitev
Style? Utility-first, അതായത് Tailwind. Brez CSS-in-JS, brez ločenih datotek s slogi, vse preprosto v predlogah. Ne izgubljam časa pri izmišljanju imen razredov, neuporabljeni slogi pa vseeno ne končajo na končni strani, dizajn pa je urejen, ker sistem to sam zahteva. Za eno osebo je pomembna vsaka minuta, ki ni zapravljena za nepotrebnosti.
Implementacija je Docker. To je ista okolja lokalno in v produkciji, konec z "pri meni je delovalo". In če bi kdaj bilo treba, vse prenesem na drug strežnik v približno pol urah. Prenosljivost je tiha oblika neodvisnosti.
Kaj sem iz tega izvedel
Nudna tehnološka sklad (stack) zmaga. Astro, SQLite, Tailwind, kontejnerji. Vse je zrelo, preizkušeno, opisano. Nič ne poči v trenutku, ko ga najmanj potrebuješ.
Hosting v EU je pripravljen na produkcijo, resnico. Mit, da "moraš iti na veliko ameriško oblak, da bi bilo resno", je le mit. Lokalna AI je prav tako realna, ni treba predati podatkov zunanjemu API, da bi imeli dobre prevode. In zadnja stvar: ena oseba lahko izda nekaj, kar izgleda kot delo celotne ekipe. Pri tem je treba le upoštevati, da je čas dražji od denarja, in v tej zvezi izbrati vsak element.
Ko gradiš nekaj svojega, si pri vsaki tehnologiji postavi eno vprašanje: ali bom čez leto to znal sam vzdrževati? Če ne, potem imaš verjetno odgovor.
Vse to deluje tukaj: cutty.dev. Če želite pogovarjati o kateri izmed teh odločitev, mi pišite na [email protected], odgovorim še isti dan.