Procedure, umani e gestione degli errori

in Olio di Balena4 years ago

Procedure

Diciotto mesi fa, ho sviluppato per un partner a livello nazionale, una procedura piuttosto articolata di distrubuzione delle informazioni sotto forma di report.

La base dati dalla quale attingo a piene mani è il sistema centrale di database AS400 sul quale, ogni giorno, centinaia di persone inseriscono dati contabili, di prodotto, di svalutazione etc.

Con Talend Open Studio, un software potentissimo di data mining, effettuo la prima fase del ETL (Extract, Transform, Load) recuperando i dati da diverse tabelle del sistema centrale e riversandoli in fase di staging su altrettante tabelle di MySQL.

Su MySQL ho scritto una Stored Procedure di circa 5.000 righe in linguaggio SQL che parte non appena termina l'importazione dei dati. La procedura normalizza alcuni campi, effettua la creazione di diversi campi calcolati, toglie i campi superflui, collega le tabelle secondo alcuni criteri. Insomma: prepara il dato grezzo al fine di essere elaborato in modo più snello.

Al termine della Stored Procedure parte la costruzione del report e la successiva fase di deploy (distribuzione). Questa fase si articola in tre distinte modalità:

  • viene generato un cruscotto navigabile su QlikView per la direzione del partner;
  • vengono generati alcuni documenti in formato Excel dove vige il principio di segregazione dei dati. Questi documenti vengono copiati su alcune cartelle dalle quali un'altra procedura li inserisce in uno spazio FTP condiviso con il partner ed al quale accedono alcuni loro dipendenti locali;
  • viene generato un documento PDF che è spedito via mail al Servizio Contabilità e ai Regional Manager del partner per gli opportuni controlli.

Tutto semplice no?

Umani

Le procedure concatenate hanno girato correttamente per ben 18 mesi ma arriviamo al capodanno tra il 2019 ed il 2020. Nei primi giorni dell'anno si sono verificate alcune circostanze che hanno destabilizzato il tutto.

Lo FTP

L'automatismo di deploy del FTP, a causa di un aggiornamento del server, non ha funzionato e per tre giorni la mia procedura ha inserito, su ogni cartella, tre files differenti; uno per ogni giorno. Peccato che l'automatismo FTP non contemplava questa eventualità per cui quando è ripartito è prontamente andato in errore. Tale errore, tuttavia, non veniva comunicato a nessuno per cui per circa due settimane non è stato aggiornato alcun file sullo spazio condiviso.

La contabilità

Il Servizio Contabilità, pur avendo correttamente conteggiato e pagato le provvigioni, per mancanza di tempo non le ha inserite sul gestionale su AS400. Per questo motivo, il dato del pro forma era più alto di quello del report ed una rapida verifica ha indispettito il partner.

La Business Unit

La Business Unit, dal canto suo, aveva erroneamente attivato una decina di contratti in più. Questi contratti risultavano attivi per la Direzione del partner su QlikView ma non essendo realmente perfezionati non erano state pagate le relative provvigioni.

Gestione degli errori

Fare il debug in queste situazioni così articolate non è affatto semplice. Gli attori in gioco sono molteplici e le infrastrutture informatiche estremamente variegate. Quando le architetture diventano complesse, altrettanto diventa la verifica delle informazioni.

Ore perse a trovare il bandolo della matassa. Ore perse a trovare una soluzione rapida ed indolore. Accrocchi vari per uniformare tutte le informazioni.

In una società che si basa sui dati ma corre alla velocità della luce è difficile trovare un giusto equilibrio tra la gestione degli errori e la necessità di sviluppo serrato. L'elemento umano, tuttavia, fa sempre e comunque la differenza.

L'errore può essere intercettato quando è derivato da un'errata scrittura del codice ma non da un errato comportamento di una o più persone. Che l'intelligenza artificiale possa, in futuro, risolvere queste situazioni? Personalmente non lo credo possibile ed una volta di più mi chiedo dove stia il confine tra sviluppo di codice e gestione degli errori.

La procedura è ripartita e gira di nuovo correttamente da circa un mese. L'ansia che si possa rompere di nuovo, tuttavia, mi tiene ogni giorno con il fiato in sospeso dalle 9 alle 11. Poi fila via e si passa ad un nuovo giorno.

Origine delle immagini: