IL PRESENTE E UN PO’ DI FUTURO DEL SOFTWARE DISTRIBUITO E DEL SAAS

Una delle grandi bufale della nostra epoca, digitalmente parlando, è che “ormai tutto il software è web”.

Forse il “nuovo” software lo è, nel senso che la maggior parte delle aziende, e degli sviluppatori, abbracciano il modello di “Sistemi Distribuiti” e “Software as a Service” (o SaaS) per i sistemi che sviluppano attualmente.

Lo fanno certamente gli sviluppatori di app per mobile, anche se a volte più a fini propagandistici che per reali necessità tecniche.

Lo fanno le avventurose startup che provano a lanciare le loro originalissime piattaforme “come Facebook però per [sostituire con categoria/attività a piacere]”.

Lo fanno le aziende che hanno capito che il modello di software “installato” è oramai svantaggioso sia dal punto di vista tecnico che commerciale per loro stessi e per i loro clienti.

Tutti dicono di farlo, ma in realtà non tutti lo fanno.

Resta ancora in circolazione un mare magnum di applicativi, sopratutto gestionali per aziende, spacciati per “sistemi web”, che invece web non sono affatto.

Realizzati su architetture vecchie con persistenza dei dati basata addirittura su Access[1] (che è una spanna sopra il “carta e penna”) e interfacce che puzzano di Windows95.

E “accesso dal web” spesso significa “dovete collegarvi in dieci utenti, via remote desktop, sulla macchina dove è installato il programma”[2].

Si tratta fondamentalmente degli stessi software venduti (e rivenduti) da anni, mai realmente aggiornati, e spacciati ogni tanto come “nuova versione web” attraverso un blando restyling fatto passare per epocale upgrade.

Chiariamo allora

cosa si intende esattamente quando si parla di SaaS e software “web” o “distribuito” in opposizione a software “classico”.

Un software distribuito è un sistema costituito da differenti moduli, alcuni costituenti il “frontend” e altri il “backend” del sistema.

1. Il “Frontend” web application

E’ l’insieme dei moduli software responsabili dell’interfacciamento con l’utente finale del sistema.

2. Il “Backend”

Si intende quella parte di sistema che gira su server centralizzati, raggiungibili dalla rete, e gestisce la logica di funzionamento dell’intero sistema [l’autenticazione degli utenti e la gestione dei ruoli d’accesso, per esempio].

In quello che in ingegneria del software è il pattern architetturale “model-view-controller”, il frontend rappresenta la coppia “view+controller”, e permette all’utente di inserire i dati nel sistema e fruirne le informazioni disponibili.

Un modulo del frontend può essere una web-application, ovvero un’applicazione realizzata come una o più pagine web dinamiche, fruibili attraverso un browser, che scambiano dati in input e output con il backend tramite diverse tecnologie [tipicamente richieste Http o Websocket, e risposte in Json o Xml]. Le web application non vengono “installate” sul dispositivo, ma caricate al momento dell’esecuzione dopo essere state “create al volo” da un apposito modulo del backend. Sono inoltre eseguibili sia su desktop che su dispositivi mobile, e su qualunque piattaforma, Windows, Linux, Android o IoS.

A volte invece come modulo frontend si utilizza un’applicazione nativa, un classico “programma” per Windows, Linux o Mac o un’App Mobile per Android o IoS. Al contrario di una web-application quest’ultima è installata sul dispositivo dell’utente, che sia un pc o mobile, e ne sfrutta appieno [o comunque ha la possibilità di farlo] le caratteristiche.

Entrambe queste scelte tecnologiche condividono di base, nelle architetture distribuite, lo stretto accoppiamento con il backend verso cui vengono indirizzati i dati inseriti/prodotti dall’utente e da cui vengono lette le informazioni da visualizzare.

Infatti al backend è demandata, oltre all’implementazione delle “logiche di business”, anche la conservazione [o “persistenza”] dei dati, che devono essere condivisi e coerenti, mediante l’utilizzo di database relazionali o NoSql, archivi documentali, archivi multimediali.

Pro e contro dell’approccio SaaS

Proverò ad elencare sinteticamente, ma cercando di essere abbastanza esaustivo, i pro e i contro dell’approccio SaaS rispetto a quello “classico”.

La manutenzione del frontend, che è quello che richiede tipicamente maggiori risorse, risulta essere agevolato drasticamente dal modello distribuito.

Nuove versioni dei moduli del frontend contenenti correzioni di bug e upgrade vengono distribuiti praticamente in tempo reale agli utenti, nel caso di web-application o di app mobile.

Questo meccanismo permette un ciclo di miglioramento e manutenzione del software a costi bassissimi e con un minimo impatto sui flussi operativi degli utenti.

 

Sviluppare software SaaS richiede un programmatore full stack

saas - software as a service

Realizzare un software che sia veramente “distribuito” è sicuramente più complesso che realizzare un software classico. Sviluppare sistemi distribuiti richiede, anche per applicativi non ferocemente complessi, competenza e risorse.

Per fare le cose “per bene”è necessaria la conoscenza di un Full Stack composto da mezza dozzina di linguaggi, altrettante tecnologie, protocolli, pattern e un bagaglio di esperienza che sembra non bastare mai. E chi ha detto “ma si può usare javascript per tutto” si alzi ed esca dalla stanza, grazie.

L’utilizzo da parte di diversi e numerosi utenti che operano contemporaneamente su informazioni condivise, pone problemi di concorrenza e sincronizzazione sull’accesso ai dati. Questo fa sì che in fase di testing sia necessario tener conto di situazioni di asincronicità nel sistema difficilmente riproducibili.

I vantaggi per l’utente

E siamo quindi arrivati a considerare il punto di vista dell’utente, il cui primo evidente vantaggio nell’adozione di sistemi distribuiti consiste nel potervi accedere da ogni luogo e in ogni momento, indipendentemente dal dispositivo utilizzato. Ovvero la tipica modalità di fruizione del SaaS.  Ovviamente in presenza di accesso alla rete, ma siamo nel 2018, giusto?

Il secondo è l’essere sollevati da qualunque attività di manutenzione del del software, che vengono svolte in trasparenza e indipendenza dal fornitore.

Il terzo, dulcis in fundo, è dato dalla indiscutibile sicurezza dei dati. Se tieni i tuoi fogli excel su una pennina USB prima o poi la perderai. Se li tieni su un hard-disk prima o poi si guasterà. Se li tieni in un NAS, prima o poi te lo ruberanno, l’ufficio andrà a fuoco o si allagherà.

Senza contare tutti i problemi dovuti al dover tenere sincronizzati e coerenti i dati stessi, e a potervi accedere in ogni momento e da ogni luogo.

In un sistema distribuito i dati degli utenti vengono conservati sui server in cloud, universalmente più affidabili dei server in-house dei clienti. Problemi come il deterioramento dei supporti, furti, incendi o altre catastrofi naturali e innaturali non sono più una preoccupazione dell’utente. Come diciamo spesso ai nostri clienti “se perdi i tuoi dati sul cloud vuol dire che è arrivata la terza guerra mondiale, ma in quel caso dovrai preoccuparti di cose più serie dei tuoi dati”.

A conti fatti, sembra che il modello web sia chiaramente conveniente sia per i fornitori che per i clienti. Tutti vincono. Eppure è ancora forte, in molti casi, la resistenza ad adottare sistemi basati sul web.

Secondo noi di Vectis il compito di chi sviluppa software è non solo quello di adottare questa nuova architettura in base a considerazioni tecniche, ma anche di diffondere presso i clienti una nuova cultura dell’informatica, che tenga conto delle possibilità offerte dal web, dall’interconnessione tra dispositivi, e dalle infrastrutture sempre più sicure e performanti messe a disposizione dal cloud.

Concludo facendovi notare che il paradigma SaaS cambia anche il modo in cui i costi del software, visto ormai come un “servizio” di cui si usufruisce e non più come un “prodotto” che si acquista, vengono sostenuti dagli sviluppatori e coperti dai clienti. Ma di questo parleremo un’altra volta.

I nostri software sono tutti sviluppati secondo questo modello, quindi se avete domande o richieste più specifiche sull’argomento scriveteci a info@vectis.it  o visitate la pagina dei nostri prodotti: http://vectis.it/prodotti/ 

[1] visto in un gestionale per PMI, realizzato in Italia da persone evidentemente poco aggiornate

[2] visto in un total manager per aziende di logistica, realizzato in Scozia da gente confusionaria