martedì 13 aprile 2021

IBM CodeEngine: come una tecnologia particolarmente acuta può modificare il modo di lavorare

Nell'informatica (e non solo) le cose si possono dividere in 2 categorie:
-le cose che possono essere fatte con un tuo stile personale
-le cose che invece devono essere fatte necessariamente sempre allo stesso modo.


Nella prima categoria ricadono sicuramente tutte le attività relative alla disciplina della programmazione: dall'ideazione all'analisi funzionale, dal coding alle strategie di test.
Nella seconda ricadono le modalità di compilazione, la costruzione di una build, il delivery in produzione di un sistema software, il funzionamento dell'infrastruttura e cose simili.

Ho la percezione che le discipline ed attività ricadenti nella prima categoria siano più divertenti e significative di quelle della seconda categoria.
Amplifica questa percezione un pensiero di Robert M. Pirsig, che condivido totalmente:
"Qualsiasi lavoro tu faccia, se trasformi in arte ciò che stai facendo, con ogni probabilità scoprirai di essere divenuto per gli altri una persona interessante e non un oggetto."

Ovviamente un lavoro meccanicistico che deve per forza essere fatto in un modo specifico, come il deploy di un'immagine docker in un orchestratore, non lascia certamente spazio all'inventiva, allo stile personale e probabilmente offre poca soddisfazione. E non può essere trasformato in arte.

Come nella guida di un'automobile: ciascuno ha un suo stile di guida, ma il modo in cui premi il pedale della frizione ha poco a che fare con uno tuo stile o soddisfazione personale e se non lo fai esattamente nell'unico modo giusto fai dei danni.
Che soddisfazione si prova ad azionare i tergicristalli quando inizia a piovere? Non è meglio che sia l'automobile stessa ad attivarli? Ed i fari, non è meglio che si accendano automaticamente al calare della sera, piuttosto che a doverli accendere manualmente, rischiando anche di dimenticare di farlo?
E se ogni volta che smetti di usare l'automobile devi tirare il freno a mano, non sarebbe tanto meglio che lo facesse l'automobile?
Oggi le automobili fanno automaticamente queste cose, lasciandoci liberi di pensare a guidare (almeno per ora).

Allo stesso modo se una tecnologia, come quella dei container&microservizi, è così conveniente e porta molti benefici, non possiamo permettere che sia inibita o rallentata da ostacoli procedurali, complessità tecniche o fattori umani. 


Le cose appartenenti al secondo gruppo (quelle da fare sempre allo stesso modo) devono essere automatizzate perché portano poca soddisfazione alla persona (talvolta sono attività deprimenti) e sono spesso fattori di inibizione o, come si dice spesso, lock-in.

Hai del codice sorgente scritto magistralmente e vuoi farlo eseguire come applicazione web in Internet, ma non hai né skill né voglia per trasformarlo in un'immagine docker, di attrezzare il tuo orchestratore, di utilizzare HELM chart, avviare il deploy ecc?


Le alternative sono queste:
-il tuo codice resta li, inutilizzabile
-paghi qualcuno che faccia tutte queste cose per te
-spendi mesi di studio per essere in grado un giorno di gestire autonomamente tutto il processo
-usi la moderna tecnologia di automazione!

IBM con CodeEngine offre proprio la quarta alternativa.

Gli dici dove si trova il tuo sorgente, fai pochi click di mouse, viene creata la tua web app in cloud nel giro di un minuto. Sei felice!
Se poi hai già un'immagine docker del tuo software puoi semplicemente metterla in funzione in cloud sempre con pochi click di mouse e pochi secondi di attesa.
Non c'è nessun altro skill necessario oltre a quello della pura programmazione (che è l'attività dove andiamo a creare valore).

Inoltre, perché continuare a pagare un runtime in esecuzione in cloud se per qualche tempo (minuti, ore, nottate per esempio) nessuno sta utilizzando quell'applicazione?

IBM CodeEngine può fermare automaticamente il tuo runtime, in assenza di input, senza mantenerlo in idle, azzerandone i costi di consumo.  Esso verrà avviato alla prima richiesta di utilizzo.
Il risparmio energetico derivante da questa prassi è un ulteriore effetto collaterale benefico per il Pianeta.

IBM CodeEngine è una tecnologia di IBM Cloud, utilizzabile dall'url:

https://cloud.ibm.com/codeengine/overview