De la Minikube la AWS EKS: implementare DevOps graduală a unei aplicații full-stack

Dată proiect:
11 iulie 2026

Proiectul implementează o strategie DevOps graduală pentru Contapics, o aplicație full-stack (Vue.js, Spring Boot, serviciu OCR, PostgreSQL): aplicația este validată mai întâi local pe Minikube — cu manifeste Kubernetes confirmate și o linie de bază a consumului real de resurse — înainte de migrarea în AWS EKS, o abordare care reduce sistematic riscurile trecerii în cloud. Resursele sunt configurate granular per serviciu, cu scalare automată prin HPA validată empiric sub trafic simulat (backend-ul scalează de la 2 la 5 pod-uri), iar infrastructura este provizionată prin Terraform, cu manifestele versionate în Git pentru modificări complet auditabile. Observabilitatea în timp real prin Grafana și metrici JVM/HTTP, analiza costurilor cu detectare automată a anomaliilor și pipeline-ul CI/CD — cu teste pe mai multe niveluri, aprobare manuală și rollback automat — reflectă practici mature de livrare continuă.

Proiect realizat de
Picture of  Rareș Turcu
Rareș Turcu
În cadrul programului de studiu:
1

Înțelegem arhitectura aplicației

Aplicația Contapics este structurată ca un set de servicii independente: un frontend Vue.js (SPA) care comunică prin HTTP+JWT cu un backend Spring Boot, un serviciu OCR bazat pe Flask și Tesseract pentru procesarea imaginilor, o bază de date PostgreSQL și stocare de obiecte S3/MinIO. Fiecare componentă are responsabilități clare și comunică prin interfețe bine definite, ceea ce permite scalarea și înlocuirea independentă a fiecărui serviciu fără a afecta restul sistemului. Rezultatul acestui pas este o diagramă de arhitectură care documentează fluxurile de date, protocoalele de comunicație și dependențele inter-servicii.
2

Identificăm infrastructura de calcul

Fiecare componentă a aplicației este deployată ca un Deployment Kubernetes independent, cu Replica Sets și resource requests/limits configurate granular per serviciu — 250m CPU și 256Mi RAM pentru backend, 200m CPU și 50Mi RAM pentru frontend, respectiv 100m CPU și 256Mi RAM pentru PostgreSQL. Accesul extern este centralizat printr-un Ingress Controller care rutează traficul pe baza hostname-ului (`frontend.example.com`, `backend.example.com`) eliminând necesitatea unui Load Balancer dedicat per serviciu, iar datele PostgreSQL sunt persistate printr-un PersistentVolumeClaim. Scalarea automată este asigurată prin HPA pentru backend (trigger la 50% utilizare CPU) și VPA în modul de recomandare pentru PostgreSQL, oferind vizibilitate asupra resurselor optime fără a forța restart-uri automate.
3

Facem un deploy simplu

Înainte de migrarea în cloud, aplicația este deployată local pe Minikube pentru a valida că toate manifestele Kubernetes sunt corecte și că serviciile comunică între ele conform arhitecturii definite. `kubectl get pods` confirmă că toate pod-urile (backend x2, frontend, postgres) sunt în starea Running, iar `kubectl top pods` oferă o primă imagine a consumului real de resurse per container — backend la 204Mi/191Mi RAM, frontend la 9Mi, postgres la 54Mi. Această etapă reduce riscul de a transporta erori de configurare în mediul cloud și stabilește o linie de bază pentru compararea consumului de resurse.
4

Înțelegem și optimizăm costurile

Costurile AWS sunt monitorizate prin Cost Explorer pe parcursul a 5 zile de uptime, evidențiind că EKS Control Plane și EC2 reprezintă principalele surse de cost. Sistemul detectează automat 12 anomalii de cost, semnalând resurse inactiv facturate sau configurații sub-optimale care necesită atenție, iar Cost Optimization Hub generează recomandări acționabile pentru reducerea cheltuielilor. Analiza ghidează decizii de optimizare precum consolidarea nodurilor, alegerea tipurilor de instanțe mai eficiente sau eliminarea resurselor neutilizate între sesiunile de development.
5

Introducem Infrastructure as Code

Resursele AWS sunt provizionate prin Terraform, acoperind ECR (cu repository-uri dedicate pentru backend și frontend, politici de lifecycle declarative) și clusterul EKS cu integrările necesare către serviciile AWS. Manifestele Kubernetes — Deployments, Services, Ingress, ConfigMaps, Secrets și PVC — sunt versionare în Git alături de codul aplicației, tratând starea dorită a clusterului ca pe orice alt artefact de cod sursă. `terraform plan` oferă vizibilitate completă și auditabilă asupra modificărilor înainte de aplicare, eliminând configurările manuale predispuse la erori și asigurând consistența între medii.
6

Monitorizare și observabilitate

Observabilitatea sistemului este implementată prin Grafana conectat la metrici expuse de Spring Boot Actuator via Micrometer, oferind vizibilitate în timp real asupra utilizării heap-ului JVM, memoriei non-heap, CPU load și distribuției cererilor HTTP pe metode și endpoint-uri. Dashboard-urile acoperă atât sănătatea runtime-ului Java cât și metricile de trafic (request count, sum, max per interval), permițând identificarea rapidă a degradărilor de performanță și corelarea lor cu evenimentele de infrastructură. Comportamentul sistemului sub sarcină este validat prin simulări de trafic cu Apache Benchmark, permițând observarea directă a reacției HPA-ului — backend-ul scalează de la 2 la 5 pod-uri active sub load intens.
7

CI/CD Pipeline

Pipeline-ul este structurat în două faze distincte: „Source and Verify” — build paralel Maven/npm/pip și o suită de teste cu unit tests per serviciu, teste de integrare și E2E — urmată de „Package and Deploy”, care containerizează toate serviciile, le publică în Container Registry și le deployează în Staging unde rulează smoke și E2E tests. Promovarea în producție este condiționată de o aprobare manuală explicită, după care deployment-ul în producție utilizează strategia Rolling Update pentru actualizarea graduală a serviciilor, menținând disponibilitatea aplicației pe întreaga durată a lansării. Un eșec în oricare fază — build, staging sau producție — declanșează automat rollback și notificarea dezvoltatorului, cu health checks, metrici și log aggregation ca mecanisme de validare post-deployment.

Descoperă proiecte similare