Supera i limiti con Kubernetes: il progetto di un’infrastruttura cloud
Scopri come Tidycode ha ottimizzato Kubernetes e le API SMS per massimizzare efficienza, scalabilità, sicurezza e CI/CD in un caso di successo.

Nel panorama digitale attuale, garantire la stabilità, la sicurezza e la scalabilità di un’infrastruttura IT è essenziale per offrire un servizio efficiente e affidabile.
Un recente progetto ha visto l’ottimizzazione di un ecosistema tecnologico basato su Kubernetes, Laravel, Angular e vari servizi cloud di Amazon Web Services (AWS).
Gli interventi hanno riguardato l’aggiornamento delle tecnologie, la gestione delle API SMS, il miglioramento delle performance e l’ottimizzazione della scalabilità del sistema.

Setup ambiente locale con Warden e Kubernetes
Per garantire un ambiente di sviluppo coerente con la produzione, è stato predisposto un ambiente locale con Warden, includendo customizzazioni specifiche:
- Database PostgreSQL e MongoDB per la gestione dati.
- Personalizzazioni PHP-FPM per ottimizzare le prestazioni backend.
- Deploy su Kubernetes per garantire scalabilità e affidabilità.
Questa configurazione ha permesso ai team di sviluppo di lavorare in un contesto identico alla produzione, riducendo le discrepanze tra le fasi di sviluppo e rilascio.
Miglioramento delle API SMS: riduzione degli errori e ottimizzazione delle Performance
L’invio massivo di SMS generava errori 5xx dovuti alla saturazione della RAM del singolo pod Kubernetes. Due approcci sono stati adottati:
- Soluzione applicativa: Implementazione di un endpoint API dedicato per l’invio bulk di SMS, riducendo il numero di chiamate simultanee e ottimizzando l’uso delle risorse.
- Soluzione sistemistica: Scalabilità orizzontale con aumento dei pod Kubernetes, migliorando la gestione del carico.
Grazie a queste ottimizzazioni, il sistema ora gestisce in modo più efficiente i picchi di traffico, riducendo gli errori e migliorando la consegna dei messaggi.
Gestione delle migrazioni corrotte e ottimizzazione Database
Le migrazioni del database risultavano corrotte, impedendo rollback affidabili. Per risolvere il problema, è stato utilizzato un dev-kit per la ricostruzione delle migrations a ritroso, garantendo una gestione più strutturata e affidabile della storicità dei dati.
Aggiornamento delle immagini Docker e dipendenze Software
Il cluster Kubernetes utilizzava immagini Docker obsolete, con personalizzazioni che rendevano difficile la manutenzione. L’intervento ha previsto:
- Aggiornamento delle immagini con versioni pubbliche e mantenibili.
- Upgrade obbligatori delle tecnologie per garantire sicurezza e prestazioni:
- PHP 8.1 per Laravel.
- Node.js 20 per il frontend Angular.
- Nginx 1.23 per migliorare la gestione delle richieste.
- MongoDB 7.0, RabbitMQ 3.12, Redis 7.2 e PostgreSQL 12.17 per migliorare la stabilità del database.
Ottimizzazione dell’architettura Kubernetes su AWS
L’infrastruttura su AWS utilizzava un cluster Kubernetes distribuito su EC2 con 6 nodi:
- 3 nodi dedicati all’applicativo (API Laravel, frontend Angular, Redis, RabbitMQ, worker per code di esecuzione).
- 3 nodi per servizi accessori (Ingress, DB Proxy, Prometheus e Grafana per il monitoraggio).
Tuttavia, il nodo Grafana non era configurato correttamente, impedendo la visualizzazione dei dati storici oltre l’ultima ora. L’intervento ha ripristinato i moduli mancanti, migliorando il monitoraggio e la reportistica.
Test di carico con Gatling e creazione di un ambiente di Sviluppo
Per garantire la stabilità dell’infrastruttura, sono stati eseguiti test di carico con Gatling. Le azioni intraprese:
- Creazione di un ambiente parallelo per simulare la produzione.
- Sviluppo di API di test per la gestione delle code SMS senza invio effettivo.
- Analisi del bilanciamento del carico per ottimizzare la replica dei pod Kubernetes.
Dopo i test, l’ambiente parallelo è stato convertito in ambiente di sviluppo, eliminando istanze demo su produzione e riducendo il carico sui server live.
Implementazione di un Sistema CI/CD e Autoscaling Kubernetes
L’assenza di un sistema di Continuous Integration/Continuous Deployment (CI/CD) rallentava il ciclo di rilascio e aumentava il rischio di errori. L’intervento ha previsto:
- Introduzione di un sistema CI/CD automatizzato per test, build e deploy.
- Implementazione dell’autoscaling Kubernetes con Horizontal Pod Autoscaler (HPA), permettendo al sistema di adattarsi automaticamente ai carichi di lavoro.
Ottimizzazione servizi AWS: MongoDB, S3 e Database RDS Aurora
L’analisi dell’infrastruttura su AWS ha evidenziato diversi punti di miglioramento:
- Database MongoDB su istanza EC2: sottoutilizzato, ottimizzato per ridurre costi e migliorare le performance.
- Amazon S3: revisione dello storage (187 GB) per migliorare la gestione dei file.
- Database RDS Aurora (PostgreSQL 12.12): ottimizzato per garantire performance elevate con master e replica in sola lettura.

L’intervento ha portato significativi miglioramenti in termini di:
- Scalabilità: Kubernetes ora gestisce dinamicamente il carico grazie all’autoscaling.
- Performance: Riduzione degli errori 5xx grazie all’ottimizzazione delle API SMS e del database.
- Sicurezza: Upgrade delle tecnologie per eliminare dipendenze obsolete.
- Efficienza: Implementazione di CI/CD per rilasci più rapidi e affidabili.
Queste ottimizzazioni hanno permesso di rendere il sistema più robusto, affidabile e pronto a gestire le esigenze future con maggiore efficienza.
Vuoi ottimizzare la tua infrastruttura cloud, migliorare la scalabilità del tuo eCommerce o ridurre i costi operativi? Contattaci oggi stesso e scopri come possiamo trasformare il tuo progetto digitale!