Pianificazione della scalabilità end-to-end con Appian

Sui temi della scalabilità e delle performance sfida i tuoi fornitori. È possibile che abbiano omesso qualche particolare.

Introduzione

Cosa significa scalabilità, in ambito software? Questa domanda, in apparenza semplice, è stata complicata da disinformazione, usi impropri e marketing poco chiaro, fino a creare confusione su un argomento di fondamentale importanza. L’intento di questo articolo è chiarire almeno in parte questa confusione tramite un’analisi dettagliata della scalabilità.

Scalabilità: di cosa stiamo parlando

Innanzitutto, è necessario capire cosa si intende quando si parla di software scalabile.

Cos’è

Le definizioni di scalabilità sono molto varie. Ad esempio, secondo Wikipedia “la scalabilità denota in genere la capacità di un sistema di sostenere un ammontare di lavoro crescente grazie all’aggiunta di risorse.” Gartner, invece, definisce la scalabilità come “[l]a misurazione della capacità di un sistema di aumentare o diminuire le prestazioni e i costi in risposta a richieste di cambiamenti nelle applicazioni e nelle elaborazione di sistema". E ne esistono molte altre.

Nonostante questa molteplicità, però, tutte le definizioni di scalabilità presentano caratteristiche comuni. Ad esempio, la scalabilità si concentra su due aspetti di un sistema: l’hardware e il software;

ogni piattaforma avrà limiti di prestazione diversi in base all’hardware su cui viene eseguita; ogni macchina o rete di macchine funziona con numero di CPU, quantità di RAM e spazio su disco limitati e così via. Per l’hardware, la scalabilità è una misurazione della quantità di risorse,

mentre, nel caso del software, la scalabilità riguarda l’utilizzo delle librerie e i codici necessari per eseguire le attività. Ogni componente del software richiede una determinata quantità di risorse del server necessarie per il funzionamento di tutte le parti. Inoltre, la scalabilità del software consente di misurare i costi di esecuzione

e concerne il modo in cui un sistema risponde ai requisiti presenti e futuri. Poiché diversi scenari hanno a che vedere con quest’ultima caratteristica, molte organizzazioni vogliono assicurarsi che ciò che hanno costruito oggi continuerà a funzionare anche con le esigenze di domani.

Cosa NON è

In breve, tutto ciò che non è correlato alla capacità di un sistema di gestire le richieste con una determinata quantità di risorse non riguarda la scalabilità. Navigando su Internet, si trovano diverse informazioni erronee sulla scalabilità, tra cui:

  • La scalabilità include la sicurezza. Sebbene la sicurezza sia di fondamentale importanza per qualsiasi soluzione, è necessario seguire policy e pratiche di sicurezza adeguate indipendentemente dal resto dell’implementazione. Per questa ragione, nel calcolo della scalabilità è possibile scartare le considerazioni relative alla sicurezza.
  • L’alta disponibilità influenza la scalabilità. Questo concetto è totalmente falso: una disponibilità elevata rispecchia l’affidabilità della piattaforma, ma non il comportamento di quest’ultima in presenza di carichi di lavoro specifici.
  • Il ridimensionamento automatico si traduce in scalabilità. Non è proprio così. La capacità di ridimensionamento automatico è vantaggiosa, ma non implica efficienza, anzi, l’architettura di ridimensionamento automatico può funzionare anche senza considerare l’efficienza.
  • La scalabilità riguarda le funzionalità della piattaforma. Le funzionalità di una piattaforma andrebbero valutate unicamente in comparazione con quelle di altre piattaforme, non è necessario includerle nei calcoli relativi alla scalabilità. Sebbene ciascun gruppo di funzionalità abbia effetto sulle diverse prestazioni, non comporterà alcun effetto su quelle del sistema nel complesso.

Se un fornitore avanza questo genere di argomentazioni, faresti meglio a dubitare di lui. Cerca un fornitore desideroso di aiutarti a comprendere la scalabilità della tua soluzione specifica.

Considerazioni nel determinare la scalabilità

Nel calcolare la scalabilità di una piattaforma software, dovresti tenere in considerazione quattro variabili:

  • Numero di utenti che utilizzano la piattaforma in contemporanea. Quanti utenti devono accedere al sistema contemporaneamente? Accertati di includere le transazioni richieste dagli account di servizio o da altri sistemi automatici.
  • La media di richieste per utente. Si tratta, ad esempio, del numero di chiamate a un determinato servizio o della comunicazione interna tra i servizi della piattaforma.
  • La dimensione media di ogni richiesta. Quanto è grande la richiesta specifica? È raro che vi siano richieste della stessa dimensione: una stima errata dei requisiti delle dimensioni effettive può alterare notevolmente il calcolo della scalabilità.
  • Le dimensioni della macchina su cui è in esecuzione la piattaforma. Le varie configurazioni hardware funzioneranno in modo diverso. Effettua il testing su un sistema che somiglia molto a quello che utilizzerai, tenendo in considerazione il numero di processori, le dimensioni della RAM e lo spazio su disco. È importante inserire correttamente questi valori, sia in caso di upscaling sia di downscaling.

Queste variabili consentono di valutare la scalabilità di un sistema. Ad esempio, se sono presenti 10 utenti che effettuano 100 operazioni al giorno, ciascuna delle quali ha in media 1 MB di dati, e questi servizi consumano il 10 % delle risorse hardware, aggiungendo altri 10 utenti verrà utilizzato soltanto un altro 10 % delle risorse di sistema? Se la risposta è sì, la scalabilità della piattaforma è lineare.

Il software può andare oltre la scalabilità lineare tramite la parallelizzazione, ma non ci dilungheremo sull’argomento qui. Inoltre, è importante sapere che, anche se in un dato momento una soluzione segue un percorso lineare, non significa che questa sarà sempre la tendenza predominante. Esiste un limite alla linearità, superato il quale l’aggiunta di nuove risorse produrrà un rendimento inferiore.

Sta tutto nei costi

La ragione per cui controllare la scalabilità di una piattaforma è riconducibile principalmente al denaro.  Quanto lavoro si può svolgere nel modo più efficiente possibile? Anche se una soluzione presenta buone prestazioni, è necessario che consenta di ottimizzare i costi.

Di recente, un fornitore ha pubblicato i propri dati sulla scalabilità, sebbene i risultati mostrati fossero davvero impressionanti, i test venivano eseguiti con un mainframe da 26 milioni di dollari. Considerato che Amazon offre una soluzione sul cloud di alta qualità a 4,50 $ l’ora, sarebbero necessari circa 660 anni prima che il costo del mainframe venga completamente ammortizzato. Per il tuo obiettivo non è importante se il sistema del fornitore può ospitare 10 000 o 100 000 utenti, si tratta comunque di un pessimo affare.

Altrettanto discutibile è la strategia dei fornitori che propongono sfide di scalabilità artificiali. Si può trattare, ad esempio di commissioni sulle transazioni o sui singoli set di soluzioni. All’inizio, le opzioni con questo tipo di tariffe possono sembrare convenienti, ma il cliente, cioè tu, sarà costretto a prendere pessime decisioni relative al design.

Immagina di ricevere un addebito per ogni chiamata API. Non proveresti ad aumentare le dimensioni del carico utile di ogni chiamata per massimizzare l’efficienza? Certo, ma cosa succede se il caso in questione richiede di effettuare molte chiamate per lunghi periodi di tempo? Dovrai decidere se creare una soluzione che si appesantisce perché deve contenere un unico grande carico utile o pagare le commissioni extra per creare la soluzione giusta.

Le commissioni sugli oggetti hanno un effetto simile: se devi pagare per ogni oggetto, proverai a condensare il tuo design nel minor numero di passaggi possibile. In questo modo, però, si genera l’esigenza inevitabile di utilizzare un design più elaborato per gli elementi della soluzione, cosa che potrebbe comportare prestazioni non ottimali.

Delle variabili sopra descritte, le dimensioni delle chiamate e i numeri delle transazioni sono quelle per cui è più facile offuscare i risultati delle performance. I fornitori non sono dei novellini, sanno che addebitare commissioni in questi ambiti è un modo efficace per nascondere i costi effettivi di una soluzione.

Come fare fronte a questo problema

Vediamo di mettere tutto insieme:  supponendo che le informazioni summenzionate siano vere, ecco alcune best practice più o meno universali per valutare la scalabilità di una piattaforma.

Stabilire una strategia di partenza

Sapere da dove cominciare è fondamentale. Per ogni caso d’uso, mantieniti informato sul conteggio degli utenti e sulle azioni da intraprendere. Dopodiché, calcola le risorse di cui ogni utente ha bisogno. Infine, scegli una configurazione hardware che pensi consenta l’esecuzione di questa soluzione.

Testare, testare e ancora testare

Testa la tua soluzione di partenza. Che prestazioni ha ottenuto? Una volta verificato ciò, modifica una variabile ed effettua nuovamente il test. Come funziona la soluzione se raddoppi gli utenti? E se li moltiplichi per 10? O per 50? Scopri cosa succede se introduci una nuova operazione nel mix, aumentando il numero di chiamate e/o le dimensioni della chiamata. Quand’è che l’hardware in uso inizia a non funzionare più bene? Se aumenti la dimensione dell’hardware, tramite scalabilità verticale o orizzontale, cosa succede?

Fare attenzione ai costi nascosti

Ricorda, la scalabilità va oltre i risultati dei test. Un test ti dirà se una soluzione è scalabile, ma non se è conveniente. Presta molta attenzione ai costi nascosti, come le spese per le transazioni o le commissioni extra per oggetto o unità. Sebbene un sistema possa sembrare in grado di gestire il lavoro, potrebbe non essere vantaggioso per il tuo portafoglio.

Chi è responsabile di garantire una soluzione scalabile?

Ecco qualcosa che non avresti mai pensato di poter sentire da un fornitore di software: la scalabilità è il tuo problema. Sia che tu crei una soluzione da te o che paghi dei terzi per farlo, dovrai convivere il design che ne risulterà nel suo complesso.

Qualsiasi piattaforma software sul mercato può avere problemi di scalabilità, ma, con un budget illimitato sull’hardware, è possibile far funzionare qualsiasi cosa.

Se un fornitore si vanta della scalabilità della propria soluzione, non preoccuparti di sfidarlo. Riteniamo che Appian sia una delle piattaforme con le prestazioni migliori sul mercato, con servizi scritti su un framework più efficace rispetto alla concorrenza. Inoltre, le valutazioni di Appian possono essere eseguite in parallelo, funzionalità che altri fornitori non supportano. Anche considerando tutti i vantaggi illustrati, Appian non si limita certo a questo: oltre alla potenza back-end della nostra piattaforma, siamo impazienti di collaborare con te alla creazione di applicazioni quanto più scalabili possibile.

L’aiuto che Appian può darti

Appian vuole aiutarti a creare la soluzione più scalabile ed economica possibile. Potremmo dirti che la nostra soluzione è la migliore, ma preferiamo mostrartelo.

Se desideri visualizzare cifre tangibili sulle prestazioni di Appian, dai un’occhiata al nostro white paper sulla scalabilità. Al suo interno, vengono illustrate le prestazioni della nostra piattaforma su tre istanze hardware separate.

Dopo aver letto il white paper, rivolgiti al nostro team di vendita: rimarrai sorpreso nel capire quanto ci interessa guadagnare la tua fiducia e diventare il tuo fornitore aziendale di riferimento. Siamo totalmente a disposizione nel guidarti alla scoperta della piattaforma e ad aiutarti a capire il modo più efficace di utilizzare il nostro prodotto.

La scalabilità delle applicazioni aziendali su sistemi di importanza strategica è tutt’altro che semplice. Raccontaci la tua storia e ti aiuteremo a comprendere appieno come utilizzare efficacemente Appian a questo fine.

ISCRIVITI a APPIAN WEEKLY!