Automatizzare il deploy è oggi una necessità per ogni team di sviluppo che vuole essere rapido, sicuro e professionale. In questo articolo descriviamo una pipeline CI/CD completa per progetti con frontend Angular e backend Node.js, integrata su AWS tramite GitHub Actions, con ambienti separati per staging e produzione.
Stack utilizzato
La struttura è tipica di molte applicazioni moderne:
- Frontend Angular: single page application
- Backend Node.js: API REST, deployato su EC2 con PM2
- Database MongoDB Atlas: gestito, scalabile, sicuro
L’obiettivo è creare un flusso GitHub Actions che consenta di:
- Rilasciare automaticamente in staging su ogni push nel branch dedicato
- Rilasciare in produzione su push nel branch principale
Ogni ambiente è definito all’interno di GitHub come environment (staging e production), con i rispettivi secret configurati in modo separato e sicuro (access key, ID distribuzione CloudFront, chiavi SSH, ecc.).
Architettura CI/CD e flusso di deploy
Frontend
- Build Angular (
npm run build
) tramite GitHub Actions - Upload automatico su Amazon S3
- Cache invalidata su Amazon CloudFront
- Accessibile via HTTPS grazie a Let’s Encrypt + Certbot
- DNS gestito da Amazon Route 53 con sottodomini tipo
staging.dominio.com
Backend
- Deploy su EC2 tramite SSH + rsync
- Installazione e build (
npm install && npm run build
) - Avvio tramite PM2 con configurazione cluster
- Separazione tra ambienti staging e produzione
CI/CD con GitHub Actions
- Pipeline definita in
.github/workflows/deploy.yml
- Secrets separati per ciascun environment (
staging
,production
) - Deploy totalmente automatizzato a ogni push
Componenti tecnologiche coinvolte
- GitHub Actions: orchestrazione CI/CD
- Angular: frontend SPA con output statico
- Node.js: backend API modulari
- PM2: process manager in cluster mode
- Amazon EC2: hosting backend per ogni ambiente
- Amazon S3: hosting statico frontend
- Amazon CloudFront: CDN globale con invalidazione automatica
- Amazon Route 53: gestione DNS e sottodomini
- Let’s Encrypt / Certbot: HTTPS gratuito
- MongoDB Atlas: database documentale managed
È importante notare che l’intero stack è perfettamente scalabile in ambienti serverless o containerizzati come AWS Lambda o AWS ECS con Fargate. Tuttavia, su richiesta esplicita del cliente, si è scelto di mantenere la gestione tramite istanze EC2 per garantire maggiore controllo sull’ambiente di runtime e facilitare eventuali personalizzazioni specifiche.
Vantaggi
- Deploy sicuro e tracciabile per ogni ambiente
- Nessuna operazione manuale da eseguire sul server
- Riduzione drastica dei tempi di rilascio
- Separazione chiara tra ambienti
- Architettura flessibile e scalabile su AWS
Affidati a Shellonback per implementarlo
Se stai lavorando con Angular, Node.js e AWS e vuoi strutturare un flusso CI/CD professionale e automatico, possiamo aiutarti a configurarlo, personalizzarlo e metterlo in produzione senza rallentare il tuo team.
Contattaci. Ti aiutiamo a portare il tuo deploy al livello successivo.