2.1 Prodotti moderni
Nessuno chiama più i prodotti moderni programmi. Un prodotto moderno può includere decine di programmi, centinaia di servizi internet e molti API, forniti da un data center cloud (chiamati anche centri di elaborazione dati), dove è distribuito.
Molti prodotti moderni (se non tutti) operano secondo la paradigma Client-Server. È quando sul tuo dispositivo (telefono, notebook, computer) c'è un programma che si occupa della comunicazione con l'utente (te), mentre la funzionalità critica è su un server dedicato, dove avviene tutto ciò che è importante.
A volte il tuo client può comunicare con diversi server indipendenti, oppure il server di un prodotto può contattare il server di un altro prodotto. Si crea una sorta di rete globale di client e server, e tutti lavorano insieme.
Pertanto, il modello moderno delle applicazioni potrebbe essere meglio descritto con la paradigma Client-Internet-Server. Ci sono davvero molte comunicazioni complicate tra loro. Sono persino comparsi i cosiddetti "canali di comunicazione intelligenti", che decidono autonomamente a chi e quando inviare la tua richiesta.
2.2 Client
I programmi client possono essere divisi in 4 categorie:
- Desktop-client — programma che funziona su un computer.
- Mobile-client — applicazione per iOS o Android.
- Web-client — sito/applicazione web che funziona in un browser.
- Server-client — applicazione che è in esecuzione su un altro server.
E ognuno di essi può essere ulteriormente suddiviso. Ad esempio, il web-client è un sito o un'app web e quindi consiste in Browser e Sito, che viene caricato in esso. Anche i browser non sono tutti uguali e possono funzionare in modi diversi.
Ma anche se prendiamo il browser più comune, rimane il sito che viene caricato in esso. Il sito di solito è composto da tre cose:
- HTML
- CSS
- JavaScript
"Niente di più facile," puoi dire. Ma oggi nessuno costruisce siti solo con HTML e JavaScript. Ora per lo sviluppo dei siti si usano non solo delle librerie, ma dei veri framework, come React, Angular o Vue. E non sono più siti, ma vere e proprie applicazioni web con loro build, test e paradigmi.
Anche il CSS puro non si usa più. Esistono già pre-processori CSS che aiutano a generarlo e interi framework CSS. Eh sì, ci sono persino framework CSS specifici per le email, affinché il tuo messaggio appaia bello sia nel browser che nella maggior parte dei client di posta.
Anche JavaScript puro ormai viene usato poco — tutte le grandi web application sono sviluppate in TypeScript, che poi viene compilato in JavaScript. Eh, hai capito...
2.3 Internet e infrastruttura
Comunicazione tra client e server — cosa può esserci di più semplice? Ma anche in questa relazione è già cambiato tutto.
Il tuo prodotto, molto probabilmente, sarà ospitato in uno dei moderni data center. Molte aziende in tutto il mondo offrono servizi di hosting diversi per i tuoi prodotti, siano essi sui loro server o sui tuoi server fisici. Qualsiasi capriccio per i tuoi soldi.

Il server fisico non è più fisico. Tutti i moderni data center offrono il noleggio di server virtuali. Un server virtuale è una sorta di computer virtuale, e su un server fisico ce ne possono essere decine. Ma è comodo quando si tratta di aggiornare il server. Se hai bisogno di più memoria, puoi aggiungerla al tuo server virtuale in pochi minuti.
Anche questo approccio è ormai obsoleto, ora va di moda il trasferimento al cloud — è quando il tuo prodotto non è solo distribuito su un server virtuale nel data center, ma utilizza attivamente una vasta gamma di infrastrutture e servizi di questi data center.
Hai bisogno di un server per l'archiviazione dei backup — c'è un'infrastruttura pronta nel cloud per questo. Hai bisogno di un database con un'affidabilità del 99.9999999%? Anche quello c'è. Kafka, RabbitMQ, NoSQL? Tutto è già disponibile e facile da configurare. Basta pagare.
E questi data center e cloud stanno diventando parte del tuo prodotto. Ad esempio, Amazon ha un sacco di data center in tutto il mondo, quindi offrono un servizio CDN: il tuo contenuto pubblico verrà memorizzato nella cache su tutti i data center di Amazon e i tuoi utenti in tutto il mondo lo riceveranno più velocemente.
Oppure la chiamata all'API della tua applicazione può essere passata attraverso il servizio Amazon Gateway API, che consente di impostare un lavoro molto flessibile con i tuoi servizi. È possibile distribuire il carico su diversi servizi, riflettere gli attacchi DDoS, automatizzare il caricamento dei file, impostare una cache intelligente e molto altro ancora.
In questo modo, tra l'applicazione-client e i tuoi servizi si sviluppa un sacco di "comunicazioni intelligenti" che possono e devono essere configurate. Anche se non dovrai mai farlo personalmente, devi sapere che esistono e possono influenzare significativamente il funzionamento del tuo programma.
E non abbiamo ancora toccato argomenti come router, torri 5G, satelliti e cavi internet sul fondo dell'oceano. Inviate un flusso video dal vostro server al vostro client, e si interrompe perché la connessione del client è scarsa e cade continuamente. Indovina chi risolverà questo problema?
2.4 Server
La parola "server" può nascondere concetti completamente diversi. Sarà utile conoscere i più comuni.
Server fisicoUn server fisico è un hardware che rappresenta un computer separato con risorse (processore, memoria, storage), utilizzato per l'elaborazione dei dati e per il funzionamento di varie applicazioni software. Questi server sono installati nei centri di elaborazione dati, dove forniscono potenza per l'hosting di siti web, applicazioni, database e altri servizi.
Server virtualeUn server virtuale è un server emulato tramite software che funziona su un server fisico. Con la tecnologia di virtualizzazione, un server fisico può essere diviso in diversi server virtuali isolati, ciascuno con il suo sistema operativo e può essere riavviato e configurato indipendentemente.
Programma-server (ad esempio, Nginx)Un programma-server, come Nginx, è un software server utilizzato per gestire le richieste alle risorse web. Nginx è ampiamente noto come web server, ma può anche funzionare come server proxy per la posta e reverse proxy in architetture con microservizi, nonché come bilanciatore di carico.
Server di databaseUn server di database è un server specializzato, utilizzato per gestire i database e processare le richieste a essi. Fornisce archiviazione centralizzata dei dati e loro elaborazione, fornendo accesso ai dati attraverso la rete. I server di database supportano l'elaborazione delle transazioni, la ricerca e la modifica dei dati, garantendo allo stesso tempo l'affidabilità e la sicurezza dell'archiviazione delle informazioni. Esempi di server di database includono MySQL, PostgreSQL, Oracle Database e Microsoft SQL Server.
E lì, in un data center su uno dei server virtuali, girerà il tuo progetto in Python e Django. Lavorerà con un database, riceverà richieste da NginX e invierà i log delle sue azioni a Splunk.
Ma è grazie al tuo codice che milioni di utenti del tuo prodotto saranno felici. Useranno il prodotto, pagheranno per esso e in tal caso sarà felice anche il proprietario del prodotto. Le azioni della società saliranno, riceverai bonus in azioni e sarai felice anche tu. Sembra quasi un ciclo di felicità in natura :)
GO TO FULL VERSION