CodeGym /Corsi /Frontend SELF IT /Distribuire il codice sul server

Distribuire il codice sul server

Frontend SELF IT
Livello 48 , Lezione 2
Disponibile

12.1 Facciamo modifiche al codice

Come detto sopra, tutto lo sviluppo moderno riguarda l'apportare piccole modifiche al codice. Questo è ciò che fanno milioni di programmatori da decenni, quindi questo processo è già stato perfezionato, standardizzato e formalizzato in tutti i modi possibili.

Per cominciare, per conservare il codice c'è un programma speciale: Git. Git è un sistema di controllo versione distribuito utilizzato per tracciare le modifiche nel codice e coordinare il lavoro dei programmatori su progetti condivisi.

Git permette agli sviluppatori di creare ramificazioni nel progetto, mantenendo l'intera cronologia delle modifiche e la possibilità di tornare a qualsiasi stato del file. Questo garantisce un'efficace fusione delle modifiche e la risoluzione dei conflitti, rendendo Git uno strumento fondamentale per il lavoro collettivo sul codice nello sviluppo moderno del software.

In secondo luogo, anche il processo di modifica del codice è standardizzato. Di solito per ogni nuova funzionalità crei un nuovo branch in Git, apporti le tue modifiche sotto forma di una serie di commit e poi invii una Pull Request al tuo team leader o collega per eseguire il Code Review e approvare le tue modifiche.

Se tutto va bene, le tue modifiche vengono integrate nel branch dev, viene avviata una build automatica del progetto e i test. Molti test.

12.2 Compiliamo il progetto

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

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

La compilazione non è la stessa cosa della sola compilazione, ma la compilazione è spesso parte del processo di compilazione. Dopo aver completato la compilazione, spesso avrai decine o persino centinaia di file da caricare su vari server.

I compilatori possono essere di basso livello:

Maven e Gradle sono ampiamente utilizzati nei progetti Java per gestire le dipendenze e compilare i progetti.

Apache Ant è un altro strumento per compilare progetti Java, offre grande flessibilità nello scrivere script di compilazione.

MSBuild è utilizzato per compilare progetti creati con Microsoft Visual Studio.

Make è un classico strumento di compilazione che utilizza Makefile per definire le regole di compilazione, particolarmente popolare nei progetti C e C++.

Webpack è spesso usato per compilare applicazioni JavaScript, gestendo dipendenze e moduli.

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

I compilatori possono essere anche di alto livello. Di questi parleremo di seguito.

12.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 branch principale e il test e la distribuzione automatici di queste modifiche. Questo consente di identificare e correggere rapidamente gli errori, aumentando l'efficienza e la velocità dello sviluppo.

Uno dei sistemi CI/CD più comuni, anche se un po' datato, è Jenkins. Se lavori in una piccola azienda, lo utilizzeranno con una probabilità dell'80%.

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

Se ti trovi in una grande azienda, potresti avere altre 5 opzioni tra cui scegliere:

TeamCity è un potente sistema commerciale di JetBrains che offre un'integrazione profonda con vari ambienti di sviluppo e test.

GitLab CI è una parte integrata di GitLab, fornisce integrazione continua e distribuzione con la possibilità di configurare attraverso file YAML.

CircleCI è un servizio CI/CD cloud che supporta l'automazione dei test e della distribuzione per molti progetti.

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

Bamboo è un prodotto di Atlassian, strettamente integrato con altri strumenti di questa azienda, come Jira e Bitbucket.

Non è necessario conoscerli e saperci lavorare: di solito in azienda c'è uno specialista DevOps che configura tutti questi processi di build. Devi solo sapere che esistono e capire di cosa si parla se in una conversazione viene menzionato Jenkins, CI/CD o "continuous integration".

12.4 Distribuiamo il progetto sul server

Non basta scrivere il progetto, deve anche essere sul tuo server. In generale, il deploy di un progetto sul server è il processo di collocamento e attivazione di un'applicazione web su un 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, i database, le dipendenze, oltre alla configurazione delle impostazioni di rete e sicurezza.

E come pensi che il tuo codice arriverà sul server? Qualcuno lo caricherà lì? O forse ti connetterai tramite SSH al server remoto, caricherai un paio di file e configurerai tutto? Rilassati: nessuno lo fa più così. Ora c'è Docker.

Docker è una piattaforma per lo sviluppo, la consegna e l'esecuzione di applicazioni tramite la containerizzazione. Docker facilita la creazione, la distribuzione e l'esecuzione di applicazioni utilizzando i container, che consentono di impacchettare l'applicazione con tutto il suo ambiente e le dipendenze in un unico oggetto compatto, garantendo la coerenza dell'ambiente in tutte le fasi di sviluppo, test e produzione.

Docker ti permette di impacchettare il tuo progetto o progetti in un container Docker. È un po' come una macchina virtuale, solo molto leggera.

E anche se su qualsiasi forum dedicato a Docker, se lo chiami una macchina virtuale, ti lanceranno contro delle scarpe, ma se sai cos'è una macchina virtuale, puoi pensare a un container Docker come a una macchina virtuale. Solo molto leggera.

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

E il deploy di un progetto con Docker semplifica notevolmente il processo di distribuzione delle applicazioni, garantendo velocità e affidabilità. Il progetto viene impacchettato 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 permette 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