Affidabilità
prodottiprodotti chi siamochi siamo mappa del sitomappa del sito
susu homehome L'importanza dell'affidabilità

Approfondimento sull'affidabilità dei sistemi

Il software commerciale risente purtroppo di un grave problema di affidabilità. Per rendersi conto della diffusione e della portata della difficoltà è sufficiente entrare in qualsiasi ufficio e constatare come frasi del tipo "è lento", "ho perso il collegamento", "devo riavviare", "non mi risponde più", "prima andava" etc... rappresentino oramai la quotidianità degli operatori.

Le tecniche di sviluppo rapido hanno portato alla scrittura di quantità enormi di software, ma questo software non è affidabile. L'affidabilità si può ottenere unicamente in fase di progetto, e richiede grande lungimiranza, occorre valutare in anticipo il livello di tolleranza che il software dovrà possedere. L'affidabilità va cercata e perseguita, la questione coinvolge il designprofondo del software, e non si può ottenere successivamente alla prima progettazione.

Molti software commerciali derivano da una metodologia di sviluppo down-top, questa semplifica e velocizza lo sviluppo, dato che vengono prima preparati dei software estremamente semplici e poi, nel tempo, vengono resi più complessi e sofisticati. Purtroppo questa metodologia porta a prodotti che non risultano in grado di sopportare quel livello di evoluzione che viene richiesto agli strumenti informatici. Un progetto di questo tipo finisce sempre e comunque per divenire obsoleto a distanza di qualche anno (uno, due, tre anni). Questo problema porta alla regolare riscrittura del software, ovvero le nuove versioni sono molto diverse dalle precedenti, non esiste continuità del prodotto, occorre potenziare continuamente l'hardware, occorre studiare una lunga e costosa migrazione dai vecchi sistemi ai nuovi e gli utilizzatori vanno continuamente riaddestrati.

Se nel mercato homel'acquisto di un nuovo smartphone può risultare divertente ed interessante, in ambiente businessla problematica risulta ogni volta devastante. Questo stesso discorso intacca l'affidabilità del software. Questi continui cambiamenti di fronte portano all'impossibilità di ottenere un software consolidato. Il debugdiventa impossibile, dato che agli sviluppatori viene richiesto di produrre velocemente sempre nuovo software, e vengono considerati costi inutili quelle operazioni di revisione e riorganizzazione interna del software. Nel corso dell'ultimo paio di decenni questo "malcostume" informatico è diventato sempre difficilmente tollerabile, gli utilizzatori passano più tempo a cercare di aggirare i problemi dei sistemi piuttosto che svolgere lavoro vero e proprio. La quotidianità degli operatori è sempre più costellata di inceppamenti e malfunzionamenti vari del software.

Questo è uno dei problemi più diffusi ed invadenti dell'informatica moderna.

Il CLnet

IL CLnet nasce da un designdi tipo top-down, la complessità delle problematiche di un software "moderno" non possono venire affrontate successivamente alla prima stesura, occorre provvedere immediatamente all'utilizzo delle tecniche più sofisticate disponibili, per rendere il prodotto più adeguato alle esigenze degli utilizzatori. Durante la progettazione del CLnet si sono esaminate tutte le possibilità disponibili con gli strumenti più recenti, senza tuttavia denigrare le tecniche del passato.

Il CLnet è figlio non solo dell'ultimo paio di decenni, ma dell'insieme delle esperienze intercorse in quasi 50 anni di informatica. Le tecniche studiate e sviluppate a partire dagli anni 70 sono tutt'altro che obsolete, anzi, in molti casi si rivelano estremamente lungimiranti. Addirittura molte logiche emerse durante gli anni 80 sono ancora in stato embrionale, perché possono trovare la loro attuazione solo ora, con la disponibilità di hardware e reti dati moderne. A distanza di 40 anni le logiche sono modernissime, addirittura più di quelle utilizzate negli anni 90 (che si sono rivelate rapidamente piuttosto deludenti).

L'informatica moderna soffre molto di questo basso livello delle tecniche e delle logiche utilizzate, si privilegia sempre l'economicità di sviluppo e il veloce ritorno degli investimenti, portando ad un impoverimento complessivo dei prodotti, anche per quelli di ultima generazione.

L'eredità degli ultimi 5 decenni di esperienze informatiche è stata raccolta durante la progettazione del CLnet, rendendolo estremamente più potente ed affidabile di quanto non possano risultare altri software. La qualità del designlo rende un prodotto in grado di tollerare attività gravose ( heavy duty), sia in termini di grandi volumi che di complessità, per queste ragioni il CLnet può venire utilizzato con ottimi risultati anche in quelle grandi realtà dove i livelli di carico farebbero cedere qualsiasi software progettato con meno attenzione. IL CLnet nasce per soddisfare il mercato informatico di fascia alta, anche se si propone inizialmente di soddisfare le piccole realtà. Una volta consolidato il prodotto si può crescere rapidamente verso le infrastrutture di più alto livello.

Criteri di affidabilità

Sotto il profilo tecnico sono stati rispettati tutti quei criteri di affidabilità che erano considerati prioritari solo fino alla fine degli anni 80, successivamente l'informatica è regredita in termini qualitativi. Alcuni esempi sono legati al rispetto dei protocolli di rete come l' http, che impone determinate logiche di funzionamento agli applicativi con interfaccia web. Purtroppo le interfacce web sono progettate per altissimi carichi di lavoro, ma per una scarsa interazione con gli utilizzatori (sono le due facce di una stessa medaglia). Le logiche utilizzate nello sviluppo del CLnet potrebbero renderlo apparentemente inusuale o addirittura "strano", ma questo è dovuto unicamente al fatto di preferire certe logiche ad altre. La ricerca di un'elevata affidabilità incide pesantemente sulle interfacce utente, così come influenza pesantemente la struttura interna del database.

Molti comportamenti del CLnet, inconsueti e decisamente controintuitivi, sono dovuti alle differenze di progettazione imposte dalla mediazione tra le vecchie logiche e quelle più adeguate ai sistemi moderni, si è cercato infatti di rendere le funzionalità più fruibili, ma procedendo sempre nella maniera più solida e tollerante agli errori. Arrivare al blocco del software è estremamente improbabile, le tolleranze introdotte nella progettazione sono di livello altissimo, tanto che i più comuni bug di sviluppo possono portare al solo blocco delle singole sezioni delle schermate, ma difficilmente possono influire sul funzionamento interno del motore applicativo.

Il database è estremamente curato ed ottimizzato per il massimo livello di affidabilità possibile. Sono stati adottati tutti quegli accorgimenti che rendono il CLnet assolutamente mission critical, compreso il fatto di dare la priorità alla salvaguardia dei dati, anche quando questa andasse a penalizzare le performance, o aumentasse la complessità dello sviluppo.

La complessità del motore applicativo è elevata, ma i compiti che svolge sono esclusivamente a bassa criticità, ogni attività elaborativa riguardante i dati è delegata interamente al database, in modo da non presentare debolezze o superficialità durante il passaggio delle informazioni dall'applicativo al database. Le applicazioni e la stessa interfaccia web non possono operare sui dati senza affidarsi totalmente al database. Non esistono scorciatoie verso i dati, la supervisione del database è totale e pervasiva. Tutte le logiche di manipolazione dei dati sono sviluppate internamente al database, rendendo il CLnet estremamente performante ed affidabile.

Durante lo sviluppo sono stati analizzati tutti i possibili punti critici, provvedendo a spostarli in direzione di strumenti informatici più potenti e consolidati. Lo sviluppo del motore web è stato improntato alla bassa possibilità di crash, ed alla più bassa criticità di funzionamento possibile. La reale complessità è stata spostata all'interno del database, dove sono state implementate tutte le tecniche disponibili per la verifica ed il mantenimento dell'integrità dei dati, nel rispetto totale delle logiche di controllo dei relazionamenti e gestione delle transazioni.

Come database è stato scelto PostgreSQL, che rappresenta lo stato dell'arte nelle tecnologie dei database mission critical. All'interno del database sono stati implementati tutti gli strumenti disponibili, come i dominii, le funzioni (sia SQL che PL/pgSQL), la normalizzazione dei dati in ingresso, le indicizzazioni, le viste upgradabili, le regole ( rules) ed i trigger.

La stratificazione degli strumenti del database è notevole, e la complessità raggiunta è decisamente molto elevata (manipolazione regolare di migliaia di oggetti), ma Postgressembra perfettamente in grado di operare in totale affidabilità, e con performance di tutto rilievo, costanti su tutta la complessità introdotta. Non sono stati riscontrati difetti di funzionamento o debolezze, nemmeno potenziali.

Clustering

Tutti i sistemi CLnet vengono forniti sotto forma di coppie di macchine in cluster. La presenza di un clusterevita che tutta una serie di inconvenienti tecnici possano comportare un'interruzione grave del normale funzionamento dell'applicativo.

Nella situazione di mercato attuale, per qualsiasi azienda, l'interruzione del funzionamento del gestionale causa problemi gravi, quindi si preferisce non rischiare inutilmente. Allo stato attuale sia i costi che le tecnologie non rappresentano più un limite all'adozione diffusa del clustering, quindi si ritiene preferibile operare secondo i requisiti dell'alta disponibilità.

Lo standard HA( High availability, definito anche 5/9) prevede un tempo massimo di fermo di 5 minuti ogni anno. Certamente si tratta di un obiettivo ambizioso, ma non più fuori portata delle attuali tecnologie informatiche. Inoltre l'impiego dei clusterinnesca tutta una serie di vantaggi negli interventi tecnici, ed operazioni quali la sostituzione o l' upgradedegli hardware diventano di semplice realizzazione, senza causare particolari disturbi alla normale operatività. Si ritiene opportuno limitare sempre il più possibile le interruzioni di servizio, per evitare perdite di tempo e fermi inutili.