CodeGym /Corsi /JAVA 25 SELF /Modello di prodotto IT

Modello di prodotto IT

JAVA 25 SELF
Livello 9 , Lezione 6
Disponibile

1. Prodotti moderni

I prodotti moderni non vengono più chiamati semplicemente programmi. Un prodotto moderno può includere decine di programmi, centinaia di servizi Internet e numerosi API, forniti da un data center cloud (chiamati anche centri di elaborazione dati) in cui è distribuito.

Molti prodotti moderni (se non tutti) funzionano secondo il paradigma Client-Server. Questo accade quando sul tuo dispositivo (telefono, laptop, computer) c’è un programma che si occupa della comunicazione con l’utente (te), mentre la funzionalità critica risiede su un server dedicato, dove avviene tutto ciò che è importante ➡️🖥️

A volte il tuo client può comunicare con più server indipendenti, oppure il server di un prodotto può contattare il server di un altro prodotto. Ne risulta una sorta di rete globale di client e server, e tutti collaborano tra loro.

Perciò il modello moderno delle applicazioni forse è meglio descritto dal paradigma Client-Internet-Server. Lì c’è davvero tanta comunicazione complessa. Sono comparsi perfino i cosiddetti «canali di comunicazione intelligenti», che decidono autonomamente a chi e quando inviare la tua richiesta.🛰️📡

2. Client

I programmi client si possono suddividere in 4 categorie:

  • 🖥️ Client desktop — programma che gira su un computer.
  • 📲 Client mobile — applicazione per iOS o Android.
  • 🌐 Client web — sito/applicazione web che funziona nel browser.
  • 🌍 Client server — applicazione eseguita su un altro server.

E ognuna di queste può a sua volta essere suddivisa. Per esempio, un client web è un sito o un’applicazione web, quindi è composto da browser e sito, che viene caricato al suo interno. Anche i browser non sono tutti uguali e possono comportarsi in modo diverso.

Ma anche scegliendo il browser più diffuso, resta comunque il sito da caricare. Un sito di solito è composto da tre cose:

  • 📄 HTML
  • 🎨 CSS
  • ⚡ JavaScript

«Niente di più semplice», dirai. Solo che oggi nessuno scrive siti semplicemente in HTML e JavaScript. Per sviluppare siti si usano ormai non solo librerie, ma veri e propri framework, come React, Angular o Vue ⚛️. E non sono più «siti», ma applicazioni web complete con le loro build, i test e i paradigmi.

Il CSS puro ormai non lo usa quasi nessuno. Esistono già preprocessori CSS che aiutano a generarlo, e interi framework CSS. Anzi, persino per le email esistono framework CSS dedicati, così che la tua mail appaia bella sia nel browser sia nella maggior parte dei client di posta 💌.

Anche in puro JavaScript ormai scrivono in pochi — tutte le grandi applicazioni web vengono create in TypeScript, che poi viene compilato in JavaScript. Beh, ci siamo capiti...

3. Internet e infrastruttura

La comunicazione tra client e server — cosa può esserci di più semplice? Ma persino nei loro rapporti è cambiato tutto.

Il tuo prodotto con ogni probabilità sarà ospitato in uno dei moderni data center. Numerose aziende in tutto il mondo offrono vari servizi di hosting per i tuoi prodotti, che si tratti dei loro server o dei tuoi server fisici. Ogni capriccio, purché si paghi.

Centro dati

Il server fisico ormai è non fisico. Tutti i moderni data center offrono il noleggio di server virtuali. Un server virtuale è una sorta di computer virtuale, e su un unico server fisico possono essercene a decine. È però comodo in termini di upgrade del server. Se ti serve più memoria, puoi aggiungerla al tuo server virtuale in pochi minuti ⏱️.

Ma anche questo approccio sta diventando obsoleto: oggi va di moda migrare nel cloud — quando il tuo prodotto non è solo distribuito su un server virtuale in un data center, ma utilizza attivamente una vasta gamma di infrastrutture e servizi di quei data center.

Ti serve un server per conservare i backup? Nel cloud c’è un’infrastruttura pronta e comoda per questo. Ti serve un database con affidabilità 99,9999999 %? C’è anche quello. Kafka, RabbitMQ, NoSQL? È già tutto disponibile e si configura facilmente. Devi solo pagare.

E questi data center e i cloud stanno diventando parte del tuo prodotto. Per esempio, Amazon ha una miriade di data center in tutto il mondo, quindi offre il servizio CDN: i tuoi contenuti pubblici verranno memorizzati nella cache in tutti i data center Amazon, e i tuoi utenti in tutto il mondo li riceveranno più velocemente 🛰️.

Oppure le chiamate all’API della tua applicazione possono passare attraverso il servizio Amazon Gateway API, che consente di configurare in modo molto flessibile il lavoro con i tuoi servizi. Si può distribuire il carico su servizi diversi, mitigare gli attacchi DDoS, automatizzare il caricamento dei file, impostare una cache intelligente, e molto altro 🛡️.

In questo modo, tra l’applicazione client e i tuoi servizi sorge un gran numero di «comunicazioni intelligenti», che si possono e si devono configurare. Anche se non lo farai mai personalmente, devi sapere che esistono e che possono influire in modo significativo sul funzionamento del tuo programma.

E non abbiamo ancora sfiorato temi come router, antenne 5G, satelliti e cavi Internet sul fondo dell’oceano. Invi un flusso video dal tuo server al tuo client, e questo ha problemi perché il client ha una connessione scarsa e la linea cade continuamente. Indovina chi affronterà questo problema? Tu 😅

4. Server

Sotto la parola «server» si possono nascondere concetti molto diversi. Ti sarà utile conoscere i più comuni.

  • 🖥️ Server fisico
    Un server fisico è un hardware che rappresenta un computer separato con risorse (processore, memoria, storage), utilizzato per l’elaborazione dei dati e per garantire il funzionamento di varie applicazioni software. Questi server vengono installati nei centri di elaborazione dati, dove forniscono la potenza necessaria per l’hosting di siti web, applicazioni, database e altri servizi.
  • 🪐 Server virtuale
    Un server virtuale è un server emulato via software che gira all’interno di un server fisico. Grazie alle tecnologie di virtualizzazione, un singolo server fisico può essere suddiviso in più server virtuali isolati, ciascuno dei quali ha il proprio sistema operativo e può essere riavviato e configurato in modo indipendente.
  • 🕹️ Programma server (ad esempio, Nginx)
    Un programma server, come Nginx, è un software lato server utilizzato per gestire le richieste a risorse web. Nginx è ampiamente noto come web server, ma può anche svolgere il ruolo di server proxy di posta e di reverse proxy nelle architetture a microservizi, nonché di bilanciatore di carico.
  • 💾 Server di database
    Un server di database è un server specializzato utilizzato per la gestione delle basi di dati e per l’elaborazione delle relative query. Fornisce un’archiviazione centralizzata dei dati e la loro elaborazione, offrendo accesso ai dati attraverso la rete. I server di database supportano l’elaborazione delle transazioni, la ricerca e la modifica dei dati, garantendo al contempo l’affidabilità e la sicurezza della conservazione delle informazioni. Esempi di server di database includono MySQL, PostgreSQL, Oracle Database e Microsoft SQL Server.

E così, da qualche parte in un data center, su uno dei server virtuali, sarà in esecuzione il tuo progetto in C# e ASP.NET Core. Lavorerà con un database, riceverà le richieste tramite Nginx o Azure Application Gateway, e invierà i log delle proprie attività a sistemi di monitoraggio come Azure Monitor o Splunk 📈.

Ma proprio grazie al tuo codice milioni di utenti del tuo prodotto saranno soddisfatti. Useranno il servizio, pagheranno per esso, e alla fine sarà soddisfatto anche il proprietario del prodotto. Le azioni dell’azienda saliranno, riceverai bonus in azioni — e sarai felice 💸. Un vero ciclo della felicità nell’industria :)

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