CodeGym /Corsi /C# SELF /Deploy del codice sul server

Deploy del codice sul server

C# SELF
Livello 10 , Lezione 6
Disponibile

1. Apportare modifiche al codice

Come ho già detto prima, lo sviluppo software si riduce a fare piccole modifiche al codice. Questo processo viene svolto da milioni di programmatori da decenni, portando a una sua accurata debug, standardizzazione e formalizzazione in tutti i modi possibili.

Per conservare il codice c’è un programma speciale – Git. Git è un sistema di gestione delle versioni distribuito. Non si limita a conservare il codice, ma traccia tutte le modifiche e aiuta i programmatori a lavorare insieme sui progetti senza disturbarsi 🤝.

Con Git, gli sviluppatori possono creare diverse versioni del progetto (branch), conservare tutta la storia delle modifiche e anche tornare a qualsiasi punto nel passato. È come una macchina del tempo per il codice! Git aiuta a unire le modifiche e risolvere i conflitti, quindi è diventato lo strumento principale per il lavoro di squadra nello sviluppo moderno. 👩‍💻

2. Compilare il progetto

Prima di testare o caricare il progetto sul server, bisogna compilarlo.

🏗️ Compilare i progetti significa trasformare il codice sorgente del progetto in programmi eseguibili o altri formati avviabili, spesso includendo test e deployment. È un aspetto chiave dello sviluppo software, che garantisce che il programma sia pronto all’uso.

La compilazione non è solo tradurre il codice, anche se spesso fa parte del processo di build. Dopo aver compilato, potresti avere decine o anche centinaia di file da caricare su vari server.

I build tool possono essere di basso livello, come:

  • Maven e Gradle – molto usati nei progetti Java per gestire le dipendenze e la build dei progetti.
  • 🐜 Apache Ant – un altro strumento di build per Java, che permette molta flessibilità nella scrittura degli script di build.
  • 🖥️ MSBuild – usato per build di progetti creati con Microsoft Visual Studio.
  • ⚙️ Make – strumento classico di build, che usa Makefile per definire le regole di compilazione, molto popolare in progetti C e C++.
  • 🌐 Webpack – spesso usato per build di applicazioni JavaScript, gestisce dipendenze e moduli.
  • 📜 Gulp e Grunt – strumenti che aiutano ad automatizzare task frequenti nello sviluppo web, come minificazione e compilazione SCSS in CSS.

Ci sono anche build tool di alto livello. Ne parleremo più avanti.

3. CI/CD

🔄 CI/CD (Continuous Integration/Continuous Delivery) – metodologia che prevede l’integrazione continua delle modifiche da tutte le branch di sviluppo nella branch principale, con test e deployment automatici. Permette di individuare e correggere rapidamente gli errori, migliorando efficienza e velocità di sviluppo.

Uno dei sistemi CI/CD più diffusi, anche se un po’ datato, è Jenkins. Se lavori in una piccola azienda, c’è circa l’80% di probabilità che usino proprio quello.

🤖 Jenkins – sistema automatizzato molto popolare, usato per CI/CD. Permette di automatizzare le varie fasi dello sviluppo, come build, test e deployment, migliorando qualità del codice e velocità di sviluppo.

Se lavori in una grande azienda, ci sono altri 5 sistemi tra cui scegliere:

  • 🚦 TeamCity – potente sistema commerciale di JetBrains. Offre integrazione profonda con vari ambienti di sviluppo e testing.
  • 📝 GitLab CI – integrato in GitLab, permette CI/CD configurabile tramite YAML.
  • ☁️ CircleCI – servizio cloud di CI/CD, supporta automazione di test e deployment per molti progetti.
  • 🦑 Travis CI – uno dei primi servizi cloud di CI, molto usato in progetti open source. Si integra bene con GitHub.
  • 🎍 Bamboo – prodotto di Atlassian, si integra strettamente con altri strumenti come Jira e Bitbucket.

Non è necessario saperli tutti – di solito ci sono DevOps specialisti che configurano tutto. Tu devi solo sapere che esistono e capire di cosa si parla se si menziona Jenkins, CI/CD o “continuous integration”.

4. Deployment del progetto sul server

Scrivere il progetto non basta – deve anche arrivare sul server. In generale, il deployment (o deploy) è il processo di mettere e attivare l’applicazione web sul server in modo che sia accessibile agli utenti via internet 🚚.

Questo include il trasferimento dei file del progetto sul server, la configurazione dell’ambiente server, database, dipendenze, e anche le impostazioni di rete e sicurezza 😅.

E tu, pensi che il tuo codice finirà sul server? Qualcuno lo caricherà? O forse ti collegherai via SSH a un server remoto, caricherai qualche file e configurerai tutto? Relax: ora non si fa più così. Ora c’è Docker.

🐳 Docker – piattaforma per sviluppo, delivery e run di applicazioni tramite container. Docker semplifica la creazione, il deployment e l’esecuzione di app, impacchettandole con tutte le dipendenze e l’ambiente in un’unica unità compatta. Garantisce coerenza tra ambienti di sviluppo, test e produzione.

Docker permette di impacchettare il progetto o più progetti in Docker container. È come una macchina virtuale.

Anche se su molti forum Docker ti diranno che è “come una VM”, puoi pensare a Docker container come a una macchina virtuale, ma molto più leggera.

In sostanza, Docker container è una “virtual machine” virtuale. Le VM sono copie complete di sistema operativo, kernel e hardware virtuale, mentre i Docker container condividono il kernel dell’host e sono più leggeri e veloci .

Il deploy con Docker rende tutto più semplice, rapido e affidabile. Il progetto si impacchetta in Docker container, facilmente spostabili e eseguibili su qualsiasi sistema che supporti Docker 🚢.

Questo elimina i problemi di differenze tra ambienti server e permette di scalare facilmente aggiungendo o rimuovendo container in base al carico. Tutti usano Docker – è molto comodo e molto semplice.

Commenti
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION