Deploy e Configurazione.

DocumentazioneApp Cryptea

Il Deploy è una delle fasi terminali di sviluppo di un software. Nello specifico, è il processo attraverso il quale un'applicazione, un sito web o una nuova funzionalità viene resa disponibile e funzionante per gli utenti finali su un ambiente di destinazione, come un server di produzione.

Nel nostro caso, il Deploy avviene in un ambiente virtuale sicuro e isolato, e utilizza le tecnologie dei container di Docker.

Tutto il codice viene mantenuto in un repository Git, che permette scalabilità e un controllo versione più preciso e orientato al DevOps.

Ambiente Docker

Di seguito, un diagramma che rappresenta la gestione dei container Docker, dell'ambiente virtualizzato, delle reti virtuali e del funzionamento del reverse proxy.

Schema Docker

Deploy su server Git

L'applicazione è salvata su un server Git personale, accessibile al link git.vps.francescomancuso.it. Sul server, sono stati implementati dei meccanismi di automazione personalizzati che permettono la pubblicazione dell'intera infrastruttura attraverso eventi di push e di merge autorizzati.

Fase di CI

La fase di test del frontend avviene attraverso un'Action personalizzata, la quale si occupa direttamente di:

  • Controllare le dipendenze
  • Controllare le vulnerabilità nelle dipendenze (CVE)
  • Controllare l'uso corretto dei tipi con TypeScript
  • Controllare la qualità del codice ESLint
  • Effettuare una build finale di controllo

Fase di CD

Il deploy del frontend + backend avviene in modo automatico attraverso una seconda Action personalizzata, la quale si occupa di:

  • Convalidare la richiesta attraverso un token univoco e un Webhook interno realizzato ad hoc
  • Scaricare il codice sorgente e impostare i container seguendo le direttive presenti nei 2 Dockerfile (uno per frontend e uno per backend)
  • Generare e lanciare, con l'uso di un file di configurazione docker-compose.yaml, il gruppo di container virtuale contenente l'ultima versione realizzata in fase di build.
  • Impostare il collegamento con il reverse proxy Traefik, che si occupa di instradare il traffico web HTTPS.

Framework e strumenti

Per lo sviluppo del frontend, è stato utilizzato il framework Next.js, basato su Node.js, TypeScript e React. Il database con cui interagisce è MongoDB, di tipo NoSQL.

Il backend invece è stato sviluppato in Java.