Skip to Content
Guida

Che cosa sono le applicazioni moderne? Guida definitiva

Le applicazioni moderne sfruttano tecnologie cloud-native come i containers con best practice Agile e DevOps per offrire portabilità, affidabilità e agilità su vasta scala.

Che cosa sono Containers?

Un'applicazione moderna è qualsiasi applicazione creata e distribuita con le tecnologie, le metodologie di sviluppo e le best practice più recenti disponibili per offrire un'esperienza utente ottimale. Le applicazioni moderne di oggi sono cloud-native. Sono progettati come microservizi che comunicano tra loro tramite API, invece di applicazioni monolitiche strettamente accoppiate. Queste applicazioni basate su microservizi in genere sfruttano tecnologie cloud-native come containers e Kubernetes.

Le applicazioni moderne sono realizzate tenendo conto di agilità, scalabilità, portabilità e affidabilità.

Sono microservizi piuttosto che monolitici, che li rendono scalabili, riutilizzabili e più facili da usare.

Sono spesso costruiti in conformità con metodologie di sviluppo Agile e best practice DevOps, con una forte enfasi sull'automazione in tutta la pipeline di integrazione e delivery integrazione continua (CI/CD).

Che aspetto ha questo in termini di tecnologie odierne? In questa guida esamineremo più da vicino le varie funzionalità che rendono moderna un'applicazione.

Maggiori informazioni: Demistificazione dello sviluppo di applicazioni moderne.

Quali sono i vantaggi dei Containers?

Nell'approccio tradizionale allo sviluppo delle applicazioni, le applicazioni sono realizzate con code base singolari e strettamente integrati. Al contrario, un'architettura a microservizi implica la progettazione di un'applicazione come una raccolta di servizi non perfettamente collegati.

Questo approccio di sviluppo presenta molti vantaggi:

  • Codice altamente testabile
  • Semplicità di debug, manutenzione e aggiornamento
  • Controllo granulare sul provisioning delle risorse di storage e calcolo
  • Migliore isolamento dai guasti, che porta ad applicazioni più resilienti
  • Portatile e implementabile in modo indipendente. I componenti possono essere separati dagli ambienti software e hardware con tecnologie di virtualizzazione come i containers.

Poiché hai a che fare con una raccolta di servizi modulari e implementabili in modo indipendente, è possibile lavorare su un unico servizio senza interrompere gli altri. Anche la possibilità di creare, testare, implementare, gestire e aggiornare a livello di servizio per servizio riduce notevolmente i tempi di sviluppo.

Quali sono i vantaggi dell'utilizzo Containers?

L'architettura a microservizi consente agli sviluppatori di sfruttare appieno il potenziale delle tecnologie di virtualizzazione come containers e macchine virtuali. Diamo un'occhiata ad alcune di queste tecnologie di virtualizzazione principali:

  • Macchine virtuali (VM): Abilitare la virtualizzazione a livello hardware (compresi OS e hardware). Un hypervisor consente a un singolo server di eseguire più applicazioni con diverse dipendenze del sistema operativo.
  • Containers Abilita la virtualizzazione a livello software (che dipende ancora da un kernel di OS operativo host). Per l'esecuzione di un servizio sono necessarie unità software standardizzate che contengano tutto il codice e le dipendenze, inclusi file binari, librerie e file di configurazione.
  • Volumi virtuali (vVols): Sono datastore disaccoppiati. Le applicazioni containerizzate possono trarre grandi vantaggi dallo storage containerizzato. vVols possono mappare in rapporto 1:1 i microservizi containerizzati evitando i colli di bottiglia nel database centrale.

La virtualizzazione può aiutare a migliorare i vantaggi di un'architettura di microservizi per lo sviluppo di applicazioni moderne, fornendo una granularità sul grado di isolamento che impartisci ai microservizi.

Puoi sfruttare le macchine virtuali per eseguire servizi con diverse dipendenze del OS sullo stesso computer. In alternativa, è possibile utilizzare containers e vVols aumentare notevolmente il numero di servizi eseguibili su un singolo computer.

Soprattutto, la virtualizzazione semplifica la scalabilità automatica del provisioning e del deployment dei microservizi e delle loro risorse on demand.

Scopri di più sui compromessi tra macchine virtuali e containers.

Containers e data storage

Per capire perché potresti voler associare i containers stateless con le architetture serverless, dobbiamo definire alcuni termini:

  • Stateless: Un'applicazione è stateless se non legge o memorizza le informazioni sul suo stato da un runtime all'altro (ad esempio, un'applicazione di calcolo legge zero quando la si riapre, senza ricordare l'ultima volta che è stato eseguito un calcolo).
  • Serverless: Un'applicazione è serverless se uno sviluppatore si affida a una terza parte, come un provider cloud, per la gestione delle risorse server, eliminando i dettagli della gestione dei server.

Per progettazione, i primi containers erano state stateless perché consentivano loro di entrare in esistenza quando necessario, svolgere il proprio lavoro e scomparire, liberando risorse per il resto dell'applicazione. Allo stesso modo, le applicazioni moderne semplificano i containers, consentendo loro di entrare in esistenza in base alle esigenze.

Se abbinato a un'architettura serverless, gli sviluppatori di applicazioni possono chiamare le funzioni che forniscono risorse on demand senza dover gestire l'infrastruttura sottostante. La combinazione di containers stateless e architetture serverless semplifica notevolmente lo sviluppo di applicazioni altamente scalabili. Questo è particolarmente indicato per gli ambienti di edge computing in cui i dispositivi edge trasmettono costantemente i dati in risposta agli eventi. La combinazione stateless/serverless facilita l'esecuzione immediata delle modifiche in risposta alle informazioni in tempo reale.

Detto questo, più complessa è l'applicazione, più è probabile che sia ancora necessario uno storage persistente per i microservizi containerizzati. Per questo motivo, le soluzioni di data storage dei container come Portworx ® semplificano la distribuzione dello storage persistente alle applicazioni containerizzate stateful. La mappatura 1:1 degli archivi di dati Agile può migliorare la scalabilità e consentire di preservare lo stato durante l'esecuzione dell'applicazione.

Che cosa sono l'orchestrazione e la gestione dei containers?

Le applicazioni moderne sono native per il cloud. In linea con l'infrastruttura sottostante necessaria per supportarli, possono sfruttare tutti i vantaggi degli ecosistemi cloud come Amazon Web Services (AWS), Google Cloud e Microsoft Azure.

Cosa rende un'applicazione cloud-native sotto controllo? La combinazione di un'architettura a microservizi con tecnologie di virtualizzazione e calcolo serverless consente di eseguire il provisioning dinamico delle applicazioni moderne in base alla domanda degli utenti. Questi microservizi possono comunicare in modo indipendente tramite API gestite tramite un livello di servizi.

Le applicazioni cloud-native sfruttano appieno i modelli di deployment del cloud computing come il Software-as-a-Service (SaaS), il Platform-as-a-Service (PaaS) e l'Infrastructure-as-a-Service (IaaS). Questi modelli sostituiscono il modello di pagamento CapEx tradizionale, in cui l'utente paga un prezzo fisso per le risorse che può utilizzare o meno con i modelli di pagamento OPEX, in cui l'utente paga per le risorse mentre le utilizza.

Scopri di più su cosa significa essere cloud-native.

Che cos'è Docker?

Una grande differenza tra le applicazioni moderne e quelle legacy risiede nelle loro filosofie di sviluppo e deployment.

Nell'approccio tradizionale allo sviluppo delle applicazioni, si inizia con un piano generale lineare e ci si attiene. Lo sviluppo passa dalla raccolta dei requisiti attraverso fasi chiaramente definite fino al deployment dell'intera applicazione in produzione. La comunicazione tra sviluppatori, operatori, stakeholder e utenti finali è ostacolata da lunghi cicli di vita di sviluppo software (SDLC). Le basi di codice sono monolitiche, le patch sono più grandi e i tentativi di implementare una correzione di bug, aggiungere una nuova funzionalità o aggiornare la tecnologia sottostante sono vulnerabili a lunghe interruzioni dei servizi o a effetti collaterali imprevisti che possono essere difficili da risolvere.

La soluzione per le applicazioni moderne? Passaggio dai sistemi monolitici ai microservizi con best practice Agile e DevOps.

Lo sviluppo agile adotta un approccio iterativo allo sviluppo software. Se abbinato ai microservizi , consente agli sviluppatori di creare, testare e implementare le funzionalità in modo incrementale su più iterazioni di progettazione. L'SLC viene mantenuto rigido, consentendo cicli di comunicazione di feedback più stretti tra utenti finali, stakeholder e sviluppatori. Le metodologie di sviluppo Agile più diffuse includono Scrum, Extreme Programming (XP) e Test-driven Development (TDD).

DevOps è una pratica e una cultura di sviluppo software che integra strettamente i team di sviluppo e operativi all'interno di un'organizzazione. L'SLC viene reinventato come una pipeline CI/CD che utilizza la gestione della configurazione, l'automazione e il monitoraggio in tempo reale per semplificare lo sviluppo, il test e il deployment del software.

Si prevede che le applicazioni moderne siano sempre altamente disponibili e performanti. Non possono permettersi di subire interruzioni del servizio causate da patch, aggiornamenti o bug monolitici. Per questo motivo, le applicazioni moderne sfruttano metodologie di sviluppo Agile e best practice DevOps per rimanere aggiornate e competitive in un panorama digitale in rapida evoluzione.

Scopri di più su come le applicazioni moderne riducono il time-to-market.

Che cos'è Kubernetes?

In un mondo sempre più digitale, la data protection è al primo posto. I vantaggi della data protection delle applicazioni moderne includono:

  • Isolamento del codice, che rende difficile per gli hacker compromettere l'intero sistema 
  • Architettura modulare, che consente test di sicurezza incrementali più rigorosi in tutto l'SDLC. 
  • pipeline CI/CD, che garantiscono cicli di feedback più rigorosi tra sviluppatori e utenti, consentendo  agli sviluppatori di correggere rapidamente le vulnerabilità man mano che appaiono
  • Disaster recovery semplificato: i microservizi possono essere sottoposti a backup e restore in modo indipendente con interruzioni minime o nulle dell'intera applicazione
  • Best practice di sicurezza avanzate come DevSecOps

Le applicazioni moderne sono attrezzate per gestire le minacce alla sicurezza moderne. I cicli di sviluppo più rigidi e i cicli di feedback delle comunicazioni consentono agli sviluppatori di identificare e risolvere bug e vulnerabilità prima che possano essere sfruttati.

Maggiori informazioni: I vantaggi della data protection delle applicazioni moderne

CONTATTACI
Domande?

Hai domande o commenti sui prodotti o sulle certificazioni di Pure?  Siamo qui per aiutarti.

Prenota una demo

Prenota una demo per vedere come puoi trasformare i tuoi dati in risultati concreti con Pure. 

Telefono: +39 02 9475 9422

Media: pr@purestorage.com

 

Pure Storage Italia

Spaces c/o Bastioni di Porta Nuova, 21

Milano, 20121

+39 02 9475 9422

italia@purestorage.com

CHIUDI
Il browser che stai usando non è più supportato.

I browser non aggiornati spesso comportano rischi per la sicurezza. Per offrirti la migliore esperienza possibile sul nostro sito, ti invitiamo ad aggiornare il browser alla versione più recente.