Software personalizzato: una panoramica delle migliori tecnologie

triangolo

Indice

Software personalizzato: perché preferirlo a un software a pacchetto

Lo sviluppo di un software personalizzato per il core business aziendale è la soluzione ideale per poter sfruttare a pieno i vantaggi che i servizi informatici forniscono al business. Richiedere lo sviluppo di un software su misura significa progettare assieme ai fornitori un applicativo pensato specificatamente sulle esigenze della propria azienda e delle proprie attività. Questo tipo di offerta si differenzia da quella basata su software a pacchetto: in quest’ultimo caso, lo sviluppo non parte da zero, e spesso si tratta di adattare le necessità della singola impresa alle funzionalità offerte dal pacchetto. Inoltre, il software su misura può evolvere e crescere contestualmente ai processi business dell’azienda. La prima domanda quindi che l’azienda deve porsi è: voglio adattarmi al software o voglio che il software si adatti alle mie esigenze?

Sicuramente è necessario parlare anche di prezzi: il costo di startup per un software personalizzato è tendenzialmente più alto di quello di una soluzione a pacchetto, proprio perché il lavoro del developer parte da zero e costruisce una soluzione personalizzata in tutti i suoi aspetti. Ma, mentre il software custom, proprio perché ordinato dal cliente, diventa di proprietà del committente, il software a pacchetto può essere utilizzato a fronte del pagamento ricorsivo dei costi di licenza; tali costi, col passare del tempo, costituiscono spesso un investimento complessivo più alto, senza contare eventuali vincoli tecnologici che il vendor della soluzione impone.

Non esiste una strategia univoca, ma per compiere una scelta razionale e un buon investimento è consigliabile richiedere lo sviluppo di un software custom per i processi core che rappresentano le peculiarità dell’azienda e preferire un software a pacchetto per le attività standard al contorno.

Sviluppo software personalizzato: il back-end

Per il back-end, Omnia Group suggerisce e sviluppa da anni soluzioni basate su microservizi. Questo tipo di struttura apporta infatti numerosi vantaggi: innanzitutto le fasi di development e di deploy sono più veloci e si riducono così i tempi di consegna al cliente. La struttura a microservizi per il software personalizzato prevede infatti che l’applicazione venga suddivisa in numerosi servizi tra loro indipendenti, permettendo una gestione decentralizzata, più flessibile e più facilmente manutenibile. Gli interventi del development sono più rapidi e grazie all’indipendenza dei singoli servizi è possibile intervenire sui singoli elementi anche dopo il deploy, senza quindi bloccare la struttura nel suo complesso e garantendone la disponibilità continua. In aggiunta, la struttura a microservizi è altamente scalabile.

Per quanto riguarda il framework di sviluppo per il back-end del software custom, la soluzione open source Spring fornisce componenti all’avanguardia. Prima di tutto, questo framework è caratterizzato da diversi moduli: il framework è scomposto in progetti ognuno con specifiche funzionalità. In questo modo il developer può scegliere il modulo che più si avvicina alle sue esigenze: creazione dei servizi, inversion of control, persistenza dei dati, autenticazione, sicurezza, monitoraggio, etc. Inoltre l’organizzazione in moduli rispecchia la struttura a microservizi: indipendenza, specificità e flessibilità.

A queste due tecnologie può essere abbinata la soluzione a container di Docker che permette di gestire i pacchetti software all’interno di container virtuali che rendono i moduli applicativi standardizzati, indipendenti e svincolati dall’ambiente di esecuzione. Il singolo container di Docker avvia al suo interno il war bootable generato con un’altra tecnologia: Apache MavenQuesto fornisce meccanismi automatici di test, esportazione del codice negli ambienti di deploy ed importazione di librerie ed artefatti, ovvero componenti aggiuntive, per aggiungere funzionalità all’applicazione.

Sviluppo software personalizzato: il front-end

Per il front-end, sono due le tecnologie più in voga e capaci, a seconda delle specifiche esigenze, di fornire le migliori interfacce per gli utilizzatori del software personalizzato. Angular o React? C’è da sottolineare innanzitutto che Angular è un framework completo mentre React è una libreria Javascript: è necessario quindi aggiungere componenti di terze parti per sviluppare gli applicativi. Allo stesso tempo però React è molto più facile da utilizzare: imparare a sviluppare in React è un processo decisamente più facile e veloce rispetto ad Angular, per il quale invece è necessaria una vera e propria formazione. Per quanto riguarda la compatibilità e la migrazione, React in genere non presenta grossi problemi a seguito di pubblicazione di nuove versioni, mentre Angular da questo punto di vista ha presentato in passato problematiche: al rilascio di nuove versioni si sono manifestate issue di compatibilità che, in alcuni casi, hanno pregiudicato la sua adozione da parte dei team di development.

Quale scegliere quindi? Dipende da come abbiamo progettato il nostro lavoro di sviluppo del software custom e dal target degli applicativi: React è adatto ad applicazioni che cambiano spesso (non a caso è di proprietà di Facebook): pensiamo ad esempio alle App di messaggistica istantanea o alle interfacce web estremamente dinamiche e multimediali; Angular invece è da preferire in settori molto strutturati come quello finanziario e, in generale, in realtà di grandi dimensioni. Le due soluzioni rappresentano sicuramente lo stato dell’arte relativamente alle tecnologie di front-end per il software personalizzato e la scelta tra le due dipende, oltre che dai fattori espressi poco fa, ovviamente anche dalle skill del gruppo IT e dal tipo di formazione portata avanti.

Software custom: il Database

Veniamo ora al DB, il Database: la sua funzione primaria è quella di storicizzare i dati. A seconda del tipo di informazione che dobbiamo persistere esistono soluzioni relazionali (più rigide e basate su strutture tabellari) e non relazionali (più flessibili e basate su oggetti). Ogni database poi ha una capacità di persistenza dei dati che può ospitare basata sul grado di scalabilità che offre e questo è uno degli aspetti principali da considerare nella scelta del DB. Oltre a questo, le varie soluzioni offrono un set più o meno variegato di funzionalità native con le quali è possibile costruire procedure per mettere in relazione dati e applicazioni in maniera più efficace.La scelta del database si basa inoltre sui costi di licenza che possono variare di prezzo o possono non esserci nel caso di DB freeware.

Tra i database relazionali opensource troviamo soluzioni altamente performanti e che sono un’ottima scelta anche per un software personalizzato: ad esempio MySQL e Postgres. Entrambi sono database scritti in SQL (Structured Query Language): le tabelle possono avere relazioni tra loro e possono essere consultate utilizzando query con join più o meno complesse. Si differenziano sotto diversi aspetti e la scelta tra uno e l’altro si basa sulle necessità del development. Dal punto di vista architetturale, MySQL è un puro relational database management system (e ne esiste anche la versione enterprise) mentre Postgres è un object- relational database management system, nel quale convergono aspetti sia del modello relazione che di quello ad oggetti. Nel caso Postgres quindi i dati e le relazioni tra questi sono modellate secondo i paradigmi delle entità dei più classici linguaggi di programmazione ad oggetti e per questo la soluzione è adatta ad applicazioni che contengono dati molto complessi. Inoltre, questo tipo di database può essere programmato attraverso procedure, cursori e sub-query di tipo evoluto. MySQL è spesso utilizzato per lo sviluppo di applicazioni web dinamiche in combinazione con i linguaggi di scripting PHP o Perl. I vantaggi principali di MySQL come database per il software custom sono: la facilità di utilizzo ed una grande community di developer di supporto. Risulta tendenzialmente più veloce di Postgres che però, dal canto suo, fornisce feature più evolute, una maggiore scalabilità e la garanzia di una piena compatibilità con i vincoli sulle transazioni e l’integrità dei dati.

Ogni progetto ha le sue caratteristiche e peculiarità e le tecnologie per sviluppare il software personalizzato più adatto richiedono un partner esperto nella loro proposta e utilizzo: Omnia offre più di 25 anni di esperienza come software developer e un team di oltre 50 tecnici esperti.