Sin dagli anni novanta, uno dei mantra favoriti dei giovani developer è sempre stato: “Il Cobol è un linguaggio da dinosauri”. I neo programmatori uscivano dalle università carichi di entusiasmo per i nuovi framework, e guardavano un po’ dall’alto verso il basso questo linguaggio old school e il mondo dei mainframe a cui era legato, così lontano dalle emergenti tecnologie cloud che stavano dominando l’immaginario comune.
Se non che, lasciandosi alle spalle il mondo accademico per iniziare a sporcarsi le mani con l’informatica effettivamente impiegata nelle aziende, molti di questi giovani programmatori si sono dovuti scontrare con questo vecchio dinosauro, che in molti ambiti continua a dettare legge quando si arriva a dover mettere mano al basso livello di transazioni finanziarie e bancarie.
Mobile vs. Cobol: sarà davvero così?
Siamo ormai abituati alle casse dei centri commerciali a pagare in maniera Smart, avvicinando al lettore la nostra carta di credito con chip NFC o il nostro smartwatch. Pensiamo che siano i nostri sottilissimi device a compiere tutta la magia, ma in realtà c’è almeno una probabilità su due che il web service invocato quando si appoggia lo smartwatch sul POS scarichi la responsabilità della transazione finale su un vecchio programma in Cobol.
Quasi tutte le istituzioni finanziarie e le banche ormai hanno esposto servizi di pagamento fruibili da APP mobili: queste applicazioni presentano all’utente un’interfaccia moderna e piacevole, ma, da un punto di vista informatico, sono solo dei wrapper che vanno a rivestire, con un complesso stack a base di linguaggi proprietari e Java, una chiamata a un consolidatissimo programma Cobol.
Riscrivere le logiche portanti di molti sistemi di accounting e finance comporterebbe infatti rischi proibitivi per tante aziende, per cui si preferisce mantenere il core in Cobol e aggiornare solo i servizi di fruizione esposti agli utenti finali.
La sinergia tra Java e Cobol
Cobol è in grado di esporre i propri programmi sotto forma di web service REST e SOAP. È possibile perciò realizzare stack software che permettono la comunicazione sicura tra front end anche complessi, realizzati con framework aggiornati come React o Angular, e un back end in Cobol.
Per ragioni di sicurezza e di scalabilità, solitamente non si collega direttamente il web service Cobol al front end, ma si inseriscono tra questi due layer degli strati intermedi, realizzati spesso in Java, per ottenere una migliore orchestrazione dei servizi e un bilanciamento ottimale delle risorse.
Una feature molto apprezzata è la possibilità di processare direttamente nel programma Cobol finale i valori delle strutture JSON per mezzo delle funzionalità di parsing implementate sia nell’ambiente di sviluppo nativo sia nei Toolkit opzionali.
È anche possibile far dialogare Cobol e Java direttamente all’interno di una Java Virtual Machine per mezzo dell’interfaccia JNI (Java Native Interface), realizzata appositamente per permettere l’interazione tra Java e programmi scritti in ambienti Mainframe.
Tra manutenzione e innovazione
Le numerose possibilità disponibili per integrare i programmi Cobol con soluzioni moderne creano una costante richiesta di figure di sviluppatori Cobol nel mondo del lavoro informatico.
Queste figure vengono impiegate per lo più per attività di manutenzione e adeguamento del codice sorgente esistente, ma non mancano le eccezioni in cui nuovi team vengono alla luce per sviluppare soluzioni native in Cobol.
Questo trend è facilitato dal continuo aggiornamento del parco hardware dei Mainframe, che vengono regolarmente adeguati in modo da stare al passo con l’evoluzione del mondo informatico circostante: gli ultimi modelli di Mainframe offrono ad esempio chip ottimizzati per l’AI e tecnologie di sicurezza quantistica incorporate.
La solidità e la sicurezza dell’ambiente Cobol hanno spinto perciò alcuni giovani progetti a sceglierlo come backend su cui fondare lo stack di nuove soluzioni, Smart come UI/UX, ma Cobol come core business logic.
Il porting di vecchi programmi Cobol
Non tutti però condividono lo stesso entusiasmo verso il mondo dei Mainframe. Quando la base di codice non deve gestire situazioni critiche, l’azienda potrebbe essere tentata di aggiornare i moduli dell’infrastruttura in Cobol con soluzioni più moderne e di più semplice manutenzione.
In questi casi, ci sono diverse opzioni a disposizione dei team incaricati della migrazione verso un framework più recente. Una soluzione che si può valutare è di realizzare una migrazione semi automatica, affidandosi magari a un tool che traduca in automatico gran parte del codice nel nuovo linguaggio e allocando un budget di risorse a rifiniture o a porting interamente manuali di moduli troppo critici per essere affidati all’automatismo di un software.
Un framework che ben si presta a ricevere porting di soluzioni in Cobol è Java Spring, che è dotato di strumenti di integrità dei dati capaci di mettere gli sviluppatori Cobol velocemente a proprio agio. Esistono anche soluzioni software che affidano all’AI il compito della migrazione, anche se la scelta di una soluzione così estrema dipenderà molto dalla complessità della logica di business da migrare.
Cobol e cloud
Chi invece non voglia separarsi dalle logiche ormai familiari, potrà comunque beneficiare dalla possibilità di rendere fruibile la propria base di codice Cobol per mezzo di soluzioni di cloud ibrido, utilizzando anche macchine virtuali su cui sarà possibile far girare la propria logica in Cobol senza riscrittura di codice sorgente. L’impiego di soluzioni di hosting di Cobol in cloud aprono al team di sviluppo anche interessanti modalità di lavoro basate su strumenti di container e CI/CD, con possibilità di utilizzare tool di versioning e pipeline di test.