Technologijos

← Pradžia
Infrastruktūra ir diegimas

Debesis, Docker ir DevOps — spartus ir patikimas diegimas

Visas programas konteinerizuojame su Docker, orkestruojame su Docker Compose (arba Kubernetes enterprise projektams), sukonfigūruojame Caddy kaip atvirkštinį tarpinį serverį su automatiniu SSL ir automatizuojame visą diegimo ciklą per GitHub Actions – nuo commit iki produkcijos vienu automatizuotu procesu.

Konteinerizavimas su Docker ir Docker Compose

Kiekviena paslauga turi savo daugiapakopį Dockerfile: build etapas, kuriame įdiegiamos priklausomybės ir kompiliuojama, ir minimalus galutinis etapas (distroless arba alpine), kuriame yra tik reikalingi artefaktai. Tipinis Next.js atvaizdas sveria mažiau nei 150 MB, FastAPI – mažiau nei 80 MB. Atvaizdai perkuriami po kiekvieno merge į main ir žymimi semantiškai (`v1.2.3` + `latest`).

Docker Compose apibrėžia visą steką: frontend, API, DB, Redis, worker. Jautrūs kintamieji (DB slaptažodis, API raktai, Stripe secret) laikomi `.env`, neįtrauktame į git – niekada nekoduojami atvaizde. Compose sveikatos patikros užtikrina, kad priklausomybės būtų pasiruošusios prieš paleidimą (DB paruošta → paleidžiamas API → paleidžiamas frontend).

  • Build talpykla su `--mount=type=cache` – pakartotiniai npm ci vykdomi iš talpyklos
  • Optimizuota sluoksnių tvarka: stabilios priklausomybės → šaltinio kodas
  • Paslapčių valdymas su Docker secrets arba HashiCorp Vault enterprise projektams
  • `restart: unless-stopped` + `docker compose up --no-deps` atominiam diegimui

Caddy – šiuolaikinis atvirkštinis tarpinis serveris su automatiniu SSL

Caddy 2.8 SSL/TLS tvarko automatiškai per ACME (Let's Encrypt arba ZeroSSL) – jokios rankinės konfigūracijos. HTTP/2 ir HTTP/3 (QUIC) įjungti pagal numatytuosius nustatymus. Saugos antraštės (HSTS, X-Frame-Options, CSP) nustatomos globaliai per pakartotinai naudojamus snippet’us. Deklaratyvi Caddyfile konfigūracija lengvai lyginama ir versijuojama git.

Užklausų ribojimas, gzip/brotli suspaudimas ir struktūrizuotas JSON žurnalas įjungiami natūraliomis Caddy direktyvomis – be nginx modulių ar sudėtingos Apache konfigūracijos. Prieiga prie jautrių maršrutų (`/admin`, `.env`, `.git`) grąžina 444 (be atsakymo), sukonfigūruota kaip globalus saugos snippet’as.

  • Tik TLS 1.3 su šiuolaikiniais šifrų rinkiniais
  • On-demand TLS daugianuomos SaaS su dinaminiais subdomenais
  • Perkrovimas: `caddy reload` nenutraukia aktyvių jungčių
  • Caddy žurnalas → Loki → Grafana – srauto analizė ir anomalijų įspėjimai

GitHub Actions CI/CD ir stebėsena

CI procesas vykdomas kiekvienam PR: lint, tipų tikrinimas, vienetiniai testai, Docker atvaizdo build, pažeidžiamumų skenavimas (Trivy). Jei viskas praeina, atvaizdas įkeliamas į registrą ir diegimas į staging vyksta automatiškai. Merge į main = automatinis diegimas į produkciją su patikra po diegimo. Automatinis atsukimas atgal, jei sveikatos patikra nepavyksta per 60 sekundžių.

Stebėsena su Grafana + Prometheus programos metrikoms (delsa, klaidų dažnis, eilės dydis) ir Loki žurnalų agregavimui. Įspėjimai sukonfigūruoti Slack/el. paštu: klaidų dažnis >1 %, delsa P95 >500 ms, diskas >85 %. Išorinė veikimo stebėsena su Better Uptime – viešas SLA skydelis pateikiamas pagal užklausą.

  • Trivy pažeidžiamumų skenavimas atvaizdams – blokuojama esant Critical CVE
  • Dependabot + auto-merge patch atnaujinimams (privalomas žalias CI)
  • Automatinė DB atsarginė kopija į S3 suderinamą saugyklą (kasnakt, saugoma 30 dienų)

Privalumai ir apribojimai

Privalumai

  • Diegimas su automatiniu atsukimu atgal, kai nepavyksta sveikatos patikra.
  • Automatinis SSL/TLS per Caddy – sertifikatams atnaujinti rankiniai veiksmai nereikalingi.
  • Atkuriama aplinka: tas pats Docker atvaizdas dev, staging ir produkcijoje.
  • Stebėsena ir įspėjimai (Grafana, Loki) – problemas matai pagal rodiklius ir įspėjimus.

Apribojimai

  • Docker Compose neplečiamas taip kaip Kubernetes daugiamazgėms enterprise aplinkoms.
  • Pradinis CI/CD nustatymas reikalauja laiko ir DevOps patirties.
  • Atvaizdai ir žurnalai užima disko vietą – reikia periodinio valymo.
  • Pilna stebėsena (Prometheus + Grafana) prideda paslaugų, kurias reikia prižiūrėti.

Trumpa išvada

Docker + Caddy + GitHub Actions – idealus derinys patikimam diegimui VPS arba keliuose mazguose. Esant dešimtims mazgų su agresyviu automatiniu mastelio keitimu, pereikite prie Kubernetes.

Specifikacijų lentelė

GalimybėRiba / slenkstisTipinis naudojimas
OrkestravimasDocker Compose, pilnas stekasVienas mazgas; keliems mazgams reikia Swarm/K8sVPS, maži ir vidutiniai projektai
Atvirkštinis tarpinis serverisCaddy 2.8, HTTP/3, automatinis SSLLabai sudėtingoms taisyklėms reikia išplėstos konfigūracijosDaugiadomenė, daugianuomė aplinka
CI/CDGitHub Actions, vienas automatizuotas procesasCI minutės apmokestinamos viršijus nemokamą planąAutomatinis kelias nuo commit iki produkcijos
Tipinė kainaVPS nuo ~5 €/mėn.Stebėsena + atsarginės kopijos didina kainąNuo vienos svetainės iki kelių prekės ženklų

Docker Compose ir Kubernetes

KriterijusDocker ComposeKubernetes
Nustatymo sudėtingumasMažasDidelis
Daugiamazgis mastelis / automatinis mastelio keitimasRibotas (vienas mazgas)Puikus
TinkaVPS, maži ir vidutiniai projektaiDideli parkai, enterprise

Dažniausiai užduodami klausimai

Kodėl Caddy, o ne Nginx?

Caddy SSL/TLS tvarko automatiškai per ACME, pagal numatytuosius nustatymus įjungia HTTP/2 ir HTTP/3 ir turi trumpą deklaratyvią konfigūraciją. Nginx tam pačiam rezultatui reikia certbot ir daugiau rankinės konfigūracijos.

Ar man reikia Kubernetes?

Daugumai svetainių – ne. Docker Compose viename VPS patikimai valdo svetainę ar kelias paslaugas. Kubernetes tampa naudingas tik esant dešimtims mazgų su agresyviu automatiniu mastelio keitimu.

Kaip veikia diegimas ir atsukimas atgal?

GitHub Actions sukuria naują atvaizdą, paleidžia jį šalia senojo, atlieka sveikatos patikrą ir tada perjungia srautą. Jei sveikatos patikra nepavyksta per 60 sekundžių, automatiškai atsukama į ankstesnę versiją.

Kokią stebėseną rekomenduojate?

Grafana + Prometheus metrikoms (delsa, klaidų dažnis) ir Loki agreguotiems žurnalams, su įspėjimais per Slack/el. paštą. Išorinei veikimo stebėsenai pridedame nepriklausomą paslaugą, pavyzdžiui, Better Uptime.

4b2b.net
Verslo ekosistema
4conta.ro
Buhalterinė apskaita
4invoices.net
Sąskaitų išrašymo programa
4expenses.net
Išlaidų valdymas
4notify.net
Pranešimai
4hosting.net
Svetainių talpinimas
4database.net
Duomenų bazės
4buildsite.net
Svetainių kūrimas
4myapp.net
Programėlių kūrimas
4avatars.net
DI avatarai
4chaty.net
DI pokalbių robotas
4webagency.net
Programa interneto agentūroms
4softedu.net
Svetainės švietimui
4softcrm.net
CRM platforma
4softerp.net
ERP sistema
4softhr.net
Personalo valdymas
4mystaff.net
Darbuotojų portalas
4myprojects.net
Projektų valdymas
4mycontracts.net
Sutartys
4docs.net
Dokumentų valdymas
4appointments.net
Vizitų registracija
4marketingonline.net
Rinkodara
4insurance.net
Draudimas
4property.net
Nekilnojamasis turtas
4lawyers.net
Programa advokatams
4mygarage.net
Autoservisas
4driving.net
Vairavimo mokyklos
4fleet.net
Autoparko valdymas
4myevents.net
Renginiai
4therapy.net
Terapija
4clinics.net
Klinikos
4dental.net
Odontologijos klinikos
4restaurants.net
Restoranai
4beautify.net
Grožio salonas
4gym.net
Sporto klubai
4guards.net
Apsaugos įmonės
4softvet.net
Veterinarijos klinikos
4softauto.net
Programinė įranga automobilių verslui
4construct.net
Statybos įmonės
4marketplace.net
Prekyvietė
4shopy.net
El. parduotuvė
4pricing.net
Kainų palyginimas
4salefood.net
Maisto pristatymas
4rentify.net
Nuoma
4transports.net
Transportas
4agencytravel.net
Kelionių agentūra
4hotel.net
Viešbučių valdymas
4ong.net
NVO valdymas