Cosa si intende per disponibilità delle applicazioni?

La disponibilità di un'applicazione indica la quantità di tempo durante il quale un'applicazione è operativa.

Obiettivi di apprendimento

Dopo aver letto questo articolo sarai in grado di:

  • Descrivere il concetto di disponibilità di un'applicazione e differenziarlo dall'affidabilità
  • Comprendere i concetti di tempo di attività e di inattività, e i livelli di disponibilità
  • Spiegare gli elementi di un'architettura ad elevata disponibilità

Argomenti correlati


Vuoi saperne di più?

Abbonati a theNET, il riepilogo mensile di Cloudflare sulle tematiche più discusse in Internet.

Fai riferimento all'Informativa sulla privacy di Cloudflare per scoprire come raccogliamo ed elaboriamo i tuoi dati personali.

Copia link dell'articolo

Cosa si intende per disponibilità delle applicazioni?

La disponibilità misura la quantità di tempo in cui un'applicazione è operativa. Un'applicazione è disponibile quando funziona come previsto, soddisfacendo le richieste degli utenti. Un'applicazione non è invece disponibile se non sta funzionando o se non è raggiungibile dagli utenti finali.

Per le applicazioni web, la massimizzazione della disponibilità è una parte importante del processo di sviluppo. Questo parametro può essere migliorato combinando l'ottimizzazione dell'infrastruttura di backend e di frontend con la mitigazione degli attacchi.

Gli utenti ripongono nelle applicazioni aspettative di disponibilità molto alte. I tempi di inattività possono avere un impatto significativo sia sui ricavi che sulla reputazione di un'azienda. Pensiamo agli orari di apertura di un negozio: se il negozio è chiuso in orari inaspettati, i clienti porteranno i loro soldi altrove. Allo stesso modo, gli utenti che non riescono a ottenere i servizi di cui necessitano da un'applicazione software smetteranno di usarla, e questo causerà una contrazione della clientela e una perdita di fatturato.

Per le applicazioni business-to-business (B2B), la disponibilità è solitamente prevista in un contratto sui livelli di servizio (Service-level agreement, SLA) e viene espressa come la percentuale di tempo in cui ci si aspetta che l'applicazione sia operativa. In questi casi, gli sviluppatori di applicazioni hanno l'obbligo contrattuale di garantire ai propri clienti un determinato livello di disponibilità.

Le differenze tra affidabilità e disponibilità di un'applicazione

il concetto di "disponibilità" si applica a sistemi e servizi di ogni tipo, dai server alle applicazioni e alle API. La disponibilità viene misurata in percentuale: un'applicazione non disponibile per 36 secondi ogni ora ha una disponibilità del 99%.

Per affidabilità si intende la capacità di un sistema o di un'applicazione di fornire i propri servizi come previsto, senza errori, nel corso di un determinato periodo di tempo. Un'applicazione può essere disponibile pur essendo inaffidabile, se le sue prestazioni sono lente o genera risultati imprevisti e non corretti. Tornando all'analogia precedente, un negozio non disponibile è chiuso, mentre un negozio inaffidabile è aperto, ma magari sugli scaffali alcuni prodotti sono nel posto sbagliato.

Calcolo dei livelli di disponibilità di un'applicazione

La misurazione della disponibilità di una data applicazione viene spesso calcolata nell'arco di un anno solare. Questa tabella indica il tempo di inattività che un'applicazione avrà in un periodo di 365 giorni a seconda dei diversi livelli di disponibilità. I tempi di inattività sono cumulativi, e possono verificarsi in diversi periodi o nel corso di un singolo evento.

Disponibilità Tempo di inattività totale annuo
95% 18 giorni e 6 ore
99% 3 giorni, 15 ore e 36 minuti
99,9% 8 ore, 45 minuti e 36 secondi
99,99% 52 minuti e 34 secondi
99,999% ("i cinque nove") 5 minuti e 15 secondi

Cos'è il tempo di attività? Cos'è il tempo di inattività?

Per "tempo di attività" si intende l'intervallo temporale in cui una data applicazione funziona come previsto, mentre il "tempo di inattività", di converso, indica quando un dispositivo o un servizio non sono operativi. In molti contesti, i termini tempo di attività e disponibilità sono sinonimi.

Quali sono i fattori che influiscono sulla disponibilità di una applicazione web?

L'Internet è complesso, e i fattori che possono impattare sulla disponibilità e sulle prestazioni di una applicazione web sono numerosi e diversi. Alcuni rientrano nel controllo di coloro che l'hanno sviluppata, altri no. Tuttavia, esistono diverse misure che gli sviluppatori possono adottare per tenerli in conto e mitigarli.

  • Attacchi: gli attacchi distributed-denial-of service (DDoS) o gli attacchi sferrati da bot sono in grado di sopraffare un'applicazione e rendere i suoi servizi indisponibili agli utenti. Questi attacchi agiscono occupando interamente la larghezza di banda e la potenza di calcolo disponibili, oppure causando il crash totale dell'applicazione. Anche gli attacchi che compromettono un'applicazione dall'interno, come i ransomware o gli attacchi SQL injection, possono provocare l'arresto completo di una applicazione.
  • Avarie dell'infrastruttura: i server host che rallentano o si arrestano in modo anomalo possono determinare l'indisponibilità di un'applicazione. Le prestazioni del server possono degradare per diversi motivi: guasti alle apparecchiature, bug nei software o picchi improvvisi di richieste. Se le richieste continuano a essere indirizzate a server lenti o non funzionanti, è possibile che rimangano inevase.
  • Traffico elevato o utilizzo intenso: se a usare una data applicazione sono troppi utenti,è possibile mandarla in sovraccarico. Le piattaforme di e-commerce, ad esempio, registrano picchi di utilizzo in occasione del lancio di prodotti, di promozioni o durante la stagione delle feste. Questo problema può essere esacerbato dal traffico bot.
  • Bug: gli errori nel software applicativo possono provocare arresti anomali e la conseguente indisponibilità dell'applicazione.
  • Problemi lato client: un codice inefficiente sul frontend può mandare in crash il dispositivo o il browser di un utente, oppure causare problemi di compatibilità.

Cosa si intende per "disponibilità elevata"?

Per "disponibilità elevata" si intende un livello di disponibilità costante, ottenuto tramite backup ed evitando punti singoli di vulnerabilità. In un'architettura ad elevata disponibilità, nessun server, gateway o servizio che va fuori uso determina l'indisponibilità del sistema. Questo tipo di architettura deve prevenire anche gli attacchi informatici.

Quali sono i componenti di un'architettura applicativa ad elevata disponibilità?

Bilanciamento del carico

Il bilanciamento del carico distribuisce i carichi computazionali e il traffico di rete in modo uniforme tra gruppi di server. Questo fa in modo nessun singolo server, o gruppo di server, venga sovraccaricato con più traffico di quanto possa gestire con efficienza.

Esistono diversi algoritmi di bilanciamento del carico: alcuni bilanciatori distribuiscono uniformemente i carichi di lavoro a prescindere dalle condizioni, mentre altri utilizzano algoritmi dinamici per reagire in tempo reale alle condizioni di rete e allo stato dei server.

Controlli di integrità

Ogni tanto è inevitabile che un server incorra in un arresto anomalo. Un controllo di integrità è un servizio che monitora se un dato server di origine è online oppure no. I controlli di integrità consentono ai bilanciatori di carico di reagire allo stato del server, in modo che le richieste non vengano indirizzate verso un server offline.

Ridondanza e backup

Le applicazioni ad elevata disponibilità integrano la ridondanza nella loro architettura. Queste applicazioni sono in grado di ripristinare una copia di backup dei dati in caso di attacco ransomware o di indisponibilità di un database per altri motivi. La ridondanza dei servizi e i pool di server garantiscono che l'arresto anomalo di un server o di un'API non influisca sulla funzionalità dell'applicazione.

Caching

Gli elementi statici di un'applicazione web possono essere trasmessi da una rete di distribuzione dei contenuti (CDN) anche se l'infrastruttura sottostante è andata in crash. Una versione in cache di un'applicazione web potrebbe non disporre di tutte le funzionalità, ma potrebbe essere tecnicamente disponibile fino al ripristino completo del servizio. (Scopri di più sul servizio Cloudflare Always Online).

DNS affidabile

Il Domain Name System (DNS) è ciò che consente agli utenti di raggiungere i server delle applicazioni su una rete. Se il DNS smette di funzionare o non riesce più a trovare l'indirizzo IP corretto, gli utenti non possono caricare l'applicazione. L'utilizzo di un provider DNS affidabile, con copertura globale e in grado di bloccare attacchi DDoS incentrati sul DNS, può fare in modo che il DNS non influisca sulla disponibilità.

Il monitoraggio della disponibilità delle applicazioni

L'impiego di un tool esterno di monitoraggio della disponibilità aiuta i fornitori di servizi a monitorare lo stato di servizio di un'applicazione e a intervenire prontamente in caso di arresto anomalo.

Cosa si intende per "disponibilità continua"?

La disponibilità continua è un approccio alla progettazione dell'infrastruttura informatica volto ad assicurare che un'applicazione o un sistema rimangano continuamente operativi. L'obiettivo finale di questo approccio è l'ottenimento di una disponibilità pari al 100%, un target che nella pratica potrebbe non essere possibile ottenere. Internet è stato progettato per resistere a una guerra nucleare. Malgrado questo livello di resilienza, il servizio può comunque andare fuori uso. Ciononostante, la disponibilità continua rimane un obiettivo che vale la pena perseguire, e che contribuisce a fornire all'utenza il miglior servizio possibile.

Quale livello di disponibilità richiede un'applicazione web?

Quanto più un'applicazione è disponibile, tanto maggiori sono le risorse che devono essere impiegate per supportarla. In altre parole, una disponibilità pari al 99,999% ha un costo, e non è basso. Gli sviluppatori devono pertanto "indovinare" il tempo di inattività che i loro clienti sono disposti a tollerare, e tarare lo sviluppo del sistema di conseguenza.

Fortunatamente, Cloudflare rende l'architettura ad alta disponibilità molto più accessibile agli sviluppatori. Cloudflare incorpora nativamente nei propri servizi il bilanciamento del carico, il caching, lo stream delivery, la mitigazione degli attacchi DDoS e la gestione dei bot. Cloudflare offre persino una piattaforma dedicata per consentire agli sviluppatori di creare nuove funzionalità o nuove applicazioni, e farle girare su una rete globale presente in 335 città distribuite in tutto il mondo.

Scopri come Cloudflare mantiene le applicazioni disponibili.