Gdje se podaci čuvaju i kako platforma preživljava probleme?

Autor: 6 min čitanja

Prije nego što dućan krene u promet, trgovac želi znati gdje mu stvarno stoje podaci, tko im pristupa i što se događa kad nešto krene po zlu. WebShopHR je građen kao samostojeća platforma, a ne kao omot oko tuđih cloudova.

Podaci ostaju u Europi, na vlastitim serverima

Produkcija živi na Hetzner serveru u Berlinu, što znači da se trgovčevi i kupčevi podaci ne napuštaju Europsku uniju. Baza podataka, predmemorija, objektni spremnik za slike i datoteke, pretraživač i sustav identiteta rade na istom vlastitom okruženju.

Kad se koristi umjetna inteligencija, embeddinge generira lokalni Ollama poslužitelj u istom okruženju, a vektori ostaju u PostgreSQL bazi. Ako AI nije konfiguriran, cijeli AI dio je isključen i ne šalje nikakve podatke van.

PostgreSQL 17 s podrškom za vektorsko pretraživanje

Baza je PostgreSQL 17 s pgvector ekstenzijom. Ta kombinacija omogućuje semantičko pretraživanje artikala i AI preporuke unutar iste baze, bez potrebe za dodatnom vektorskom uslugom. Svi podaci kupaca, narudžbi, kataloga i audit logova čuvaju se na istom mjestu, što pojednostavljuje sigurnosne kopije i obnovu.

Docker image građen sigurno i lagano

Aplikacija se pakuje u multi-stage Docker sliku. Statički sadržaj, predlošci i wiki stranice ugrađeni su izravno u binarnu datoteku pomoću Go embed mehanizma, pa nema visećih datoteka koje bi mogle zaglaviti negdje drugdje. U runtimeu aplikacija ne radi kao root, nego pod vlastitim korisnikom s fiksnim UID-om.

Unutar produkcijskog compose nijedan unutarnji servis ne objavljuje host port. Aplikacija i pomoćni servisi komuniciraju preko unutarnje mreže, dok javni promet dolazi preko rubnog proxyja.

Migracije prije svakog restarta

Baza se nikad ne diže s novim kodom na staroj shemi. Migracije se pokreću kao odvojeni jednokratni kontejner prije nego što se aplikacijski poslužitelj ponovno pokrene. Ako migracija ne uspije, novi kod ne kreće. Ako je potrebno vratiti se na prethodnu verziju, postupak je dokumentiran kao jedna naredba s promjenom oznake slike.

HTTPS i certifikati bez ručnog održavanja

Promet se preusmjerava s HTTP na HTTPS. Sve platforme poddomene pokriva jedan wildcard Let’s Encrypt certifikat izdan kroz DNS-01 izazov. Taj pristup zaobilazi ograničenja broja certifikata po domeni i omogućuje da svaki novi dućan odmah dobije HTTPS.

Kad trgovac priključi vlastitu domenu, sustav proaktivno okida izdavanje certifikata odmah nakon verifikacije, pa prvi posjetitelj ne dočeka hladni TLS. Traefik dinamički učitava rute iz baze svakih deset sekundi, pa nova domena postane živa bez restarta cijelog sustava.

Dvostupanjski health endpoint

Aplikacija nudi dva zdravstvena puta. Liveness put vraća jednostavan status ok i služi orkestratoru da zna da proces živi. Readiness put provjerava bazu, predmemoriju, pretraživač i objektni spremnik. Javni odgovor vidi samo agregatni status, dok su detalji po pojedinim servisima dostupni isključivo uz unutarnji token. Time se monitoring može povezati bez da se istovremeno izlažu osjetljivi podaci.

Prometheus i OpenTelemetry

Prometheus metrike ugrađene su u aplikaciju, uključujući HTTP zahtjeve i brojače narudžbi po načinu plaćanja. Metrički put zaštićen je istim unutarnjim tokenom kao i ostale interne rute. OpenTelemetry tracing postoji u tri načina: prema konfiguriranom kolektoru, prema stdoutu u dev okruženju ili isključen ako kolektor nije postavljen. Ako kolektor postane nedostupan, aplikacija ne pada zbog toga.

Perzistentnost predmemorije i sigurnosne kopije

Predmemorija u Valkeyju perzistira sesije i košarice pomoću snapshotova i append-only datoteke, pa restart servisa ne briše aktivne kupce. Cijeli sustav se svake noći kopira izvan poslužitelja u kratkom noćnom prozoru: baza i pohranjene datoteke poput slika zajedno, jer dijele isti spremnik.

Postupak logičke obnove baze standardnim alatima (dump/restore) dokumentiran je i isproban na odvojenoj, privremenoj bazi, s provjerom da RLS politike (sigurnosna pravila baze koja odvajaju dućane) i sadržaji ostaju netaknuti. Taj test za sada provjerava ispravnost samog postupka obnove, a ne obnovu iz stvarne noćne produkcijske kopije od početka do kraja.

Više o temi: Sigurnost i infrastruktura.

Česta pitanja.

Gdje se fizički nalaze podaci mog dućana i kupaca?

Na Hetzner serveru u Berlinu. Baza, predmemorija, pohrana slika, tražilica i sustav identiteta rade u istom vlastitom okruženju, pa podaci ne napuštaju EU.


Što se dogodi ako se poslužitelj sruši dok se diže nova verzija aplikacije?

Migracije se pokreću kao odvojen jednokratni korak prije nego se aplikacija ponovno pokrene. Ako migracija ne uspije, novi kod se uopće ne diže, pa baza nikad ne ostaje na polovičnoj shemi.


Ima li dućan HTTPS odmah, ili trgovac mora sam nabaviti certifikat?

Automatski. Jedan wildcard Let's Encrypt certifikat pokriva sve platformske poddomene, a kad trgovac poveže vlastitu domenu, sustav sam pokreće izdavanje certifikata čim se domena verificira.


Radi li se redovito sigurnosna kopija baze i je li obnova ikad testirana?

Da. Cijeli sustav se svake noći kopira izvan poslužitelja. Sam postupak logičke obnove baze (pg_dump/pg_restore) je dokumentiran i isproban na odvojenoj, privremenoj bazi, uz provjeru broja redaka i RLS politika, no taj test provjerava ispravnost postupka, ne obnovu cijele produkcije iz stvarne noćne kopije.


Kako znam da je platforma zdrava i da radi?

Kroz /health (liveness) i /health/ready (readiness) putanje. Readiness provjerava bazu, predmemoriju, tražilicu i pohranu, a javni odgovor pokazuje samo agregatni status bez otkrivanja internih detalja.

Povezani vodiči.

Otvori vlastiti webshop u par minuta.

Besplatan paket traje bez roka i ne traži karticu.