CodeGym /Corsi /Python SELF IT /Deploy del codice sul server

Deploy del codice sul server

Python SELF IT
Livello 64 , Lezione 2
Disponibile

3.1 Apportare modifiche al codice

Come ho già detto prima, lo sviluppo del software si riduce all'apportare piccoli cambiamenti al codice. Questo processo è stato svolto da milioni di programmatori nel corso dei decenni, portando alla sua accurata ottimizzazione, standardizzazione e formalizzazione in tutti i modi possibili.

Per conservare il codice esiste un programma speciale – Git. Git è un sistema di versionamento distribuito. Non si limita solo a conservare il codice, ma monitora tutte le modifiche e aiuta i programmatori a lavorare insieme sui progetti senza ostacolarsi a vicenda.

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

3.2 Assemblare il progetto

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

L'assemblaggio dei progetti è il processo di compilazione del codice sorgente del progetto in programmi eseguibili o altri formati avviabili, spesso con inclusione di test e deploy. È un aspetto chiave dello sviluppo del software, garantendo che il programma sia pronto per l'uso.

L'assemblaggio non è solo compilazione, anche se la compilazione è spesso parte del processo. Al termine dell'assemblaggio, potresti trovarti con decine o addirittura centinaia di file da caricare su vari server.

I builder possono essere a basso livello, come:

Maven e Gradle – ampiamente utilizzati nei progetti Java per la gestione delle dipendenze e l'assemblaggio dei progetti.

Apache Ant – un altro tool per l'assemblaggio di progetti Java, offre grande flessibilità nella scrittura degli script di build.

MSBuild – utilizzato per assemblare progetti creati con Microsoft Visual Studio.

Make – uno strumento di build classico, utilizza Makefile per definire le regole di build, particolarmente popolare nei progetti su C e C++.

Webpack – spesso usato per l'assemblaggio delle applicazioni JavaScript, gestendo dipendenze e moduli.

Gulp e Grunt – strumenti che aiutano ad automatizzare compiti ripetitivi nello sviluppo delle applicazioni web, come la minificazione dei file e la compilazione di SCSS in CSS.

Ci sono anche builder ad alto livello. Di questi parleremo più avanti.

3.3 CI/CD

CI/CD (Continuous Integration/Continuous Delivery) è una metodologia che prevede la fusione continua delle modifiche da tutti i branch di sviluppo nel principale, nonché il test automatico e il deploy di queste modifiche. Questo consente di rilevare e correggere rapidamente gli errori, aumentando l'efficienza e la velocità di sviluppo.

Uno dei sistemi CI/CD più diffusi, anche se un po' datato, è Jenkins. Se lavori in una piccola azienda, è probabile all'80% che utilizzeranno proprio questo.

Jenkins – un popolare sistema automatizzato, utilizzato per l'integrazione continua e la consegna (CI/CD). Jenkins consente di automatizzare varie fasi dello sviluppo del software, inclusi build, test e deploy, migliorando la qualità del codice e accelerando il processo di sviluppo.

Se ti trovi in una grande azienda, potrebbero esserci altre 5 opzioni tra cui scegliere:

TeamCity – un potente sistema commerciale di JetBrains. Offre integrazione profonda con vari ambienti di sviluppo e test.

GitLab CI – parte integrata di GitLab, fornisce integrazione e consegna continua con possibilità di configurazione tramite file YAML.

CircleCI – servizio cloud CI/CD, supporta l'automazione dei test e del deploy per numerosi progetti.

Travis CI – uno dei primi servizi CI cloud, utilizzato in molti progetti open source. Ben integrato con GitHub.

Bamboo – prodotto di Atlassian, strettamente integrato con altri strumenti della compagnia, come Jira e Bitbucket.

Non è necessario conoscerli a fondo e saperci lavorare – di solito in azienda ci sono specialisti DevOps che configurano tutti questi processi. Devi solo sapere che esistono e capire di cosa si parla se in una conversazione si menzionano Jenkins, CI/CD o 'continuous integration'.

3.4 Distribuire il progetto sul server

Non basta scrivere il progetto – deve anche essere presente sul tuo server. In generale, il deploy del progetto sul server è il processo di posizionamento e attivazione dell'applicazione web sul server in modo che sia accessibile agli utenti tramite internet.

Questo processo include il trasferimento dei file di progetto sul server, la configurazione dell'ambiente server, dei database, delle dipendenze, nonché la configurazione delle impostazioni di rete e della sicurezza.

E come pensi che il tuo codice arrivi sul server? Qualcuno lo caricherà lì? Oppure, forse, ti connetterai via SSH al server remoto, caricherai un paio di file e configurerai tutto? Rilassati: non si fa più così. Adesso c'è Docker.

Docker è una piattaforma per lo sviluppo, la consegna e l'esecuzione di applicazioni utilizzando container. Docker semplifica la creazione, il deploy e l'esecuzione di applicazioni, confezionandole insieme a tutte le dipendenze e l'ambiente in un unico oggetto compatto. Questo garantisce la coerenza dell'ambiente in tutte le fasi: dallo sviluppo al test fino alla produzione.

Docker consente di confezionare il tuo progetto o progetti in un container Docker. È un po' come una macchina virtuale.

E anche se in qualsiasi forum su Docker ti lancerebbero ciabatte se lo definissi una 'macchina virtuale', si può pensare al container Docker proprio come a una macchina virtuale. Solo molto più leggera.

In sostanza, un container Docker è una "macchina virtuale" virtuale. Le macchine virtuali includono una copia completa del sistema operativo, del kernel OS, e hardware virtuale, mentre i container Docker condividono il kernel dell'host e possono essere più leggeri e veloci.

Il deploy del progetto con Docker semplifica notevolmente il processo, garantendo velocità e affidabilità. Il progetto viene confezionato in container Docker, che possono essere facilmente spostati e avviati su qualsiasi sistema che supporta Docker.

Questo elimina i problemi legati alle differenze negli ambienti server, e consente di scalare facilmente l'applicazione, aggiungendo o rimuovendo container in base al carico. Tutti sono passati a Docker – è molto comodo e molto semplice.

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