Il ruolo di Configuration Manager in sintesi
Ogni prodotto che sviluppiamo richiede, nel tempo, una manutenzione ed un controllo. Ancora prima del rilascio del prodotto, il Configuration Manager si occupa di predisporre tutti gli strumenti che saranno utili per tutto il ciclo di vita. Deve padroneggiare strumenti di source control, strategie di branching, sistemi di monitoraggio delle applicazioni, CI/CD e gestione dei database. È quindi la persona che più si specializza nell'ambito DevOps e collabora direttamente con il reparto Sistemi Informativi.
Qual è il tuo ruolo?
Alessandro C.
Ho un duplice ruolo nel reparto, ovvero Developer, ultimamente più concentrato nello sviluppo front-end in React, e anche Configuration Manager.
Quali sono le attività che svolgi tipicamente durante un progetto software?
Alessandro C.
Possiamo dire che ci sono tre
fasi principali nello sviluppo software: quella iniziale (identificazione e
definizione della soluzione), lo sviluppo vero e proprio e, dopo la fase di
pubblicazione in produzione, la manutenzione.
Come Configuration Manager, ho un ruolo in tutte queste fasi. Nella prima
fase, il mio compito principale è consentire al team di sviluppo di iniziare
a lavorare sull’applicazione il prima possibile. Mi occupo della
configurazione degli ambienti per lo sviluppo e, in seguito, sono il punto
di riferimento per quanto riguarda gli standard aziendali o le tecnologie da
usare.
Per il nostro codice sorgente serve un apposito repository di Git da
me configurato in modo tale da rispettare nomenclature e strategie di
branching; per evitare il dannoso “works on my machine”
vengono impostate le build automatiche di CI, CD e configurate le
metriche di monitoraggio del software. In CGN, per gestire il processo di
deploy al meglio, usiamo tre ambienti (Test, UAT e infine Produzione)
in modo tale da arrivare al pubblico con il minor numero di bug
possibili. E queste sono solo una parte delle attività iniziali.
Nella seconda fase, tengo d’occhio le metriche di buona fattura del codice e
configuro gli ambienti di test dove si monitorano anche eventuali problemi
prestazionali.
Non è detto che segua solamente io tutte queste attività all’interno del
team, ma sono colui che ne ha la responsabilità.
Mentre nella prima e seconda fase, un errore si può sistemare con relativa
tranquillità, quando il sistema è online ed è utilizzato dagli utenti,
bisogna saper intervenire prontamente e precisamente, un po’ come un
chirurgo.
A me piace dire che un software non è fatto e finito quando viene
pubblicato, ma anzi, è proprio in quel momento che inizia “a vivere”.
Qual è l’ultima cosa che hai imparato che ti ha aiutato nell’esprimerti meglio nel tuo ruolo?
Alessandro C.
Più sai e più esperienza hai maturato e più ti senti sicuro, preciso e veloce nel rispondere. Questo dà serenità al tuo team, che si sente con le spalle coperte: se sta venendo il brutto tempo, tu sei il primo ad avvertirli e quello in prima linea in caso di emergenze. Già dopo i primi due progetti ho capito che non potrò mai evitare tutti gli errori e i malfunzionamenti, ma, grazie alla competenza crescente, so che troverò il modo di risolverli.
Com’è lavorare nella software factory CGN?
Alessandro C.
Avendo scelto di “fare tutto in casa”, l’hosting delle nostre applicazioni è tutto interno, con alcuni sistemi di monitoraggio proprietari; pertanto, devi apprendere il più possibile da solo o da un collega più esperto. Non basta aprire un libro per imparare qual è la configurazione perfetta per la tua infrastruttura. È un processo continuo di trial and error. Sono contento del ruolo che ricopro in CGN, perché sento di essere un ingranaggio importante che fa parte di una macchina ben oliata.
Ti piacerebbe ricoprire il ruolo di Configuration Manager?
Nel ruolo di Configuration Manager ti occupi di tutto il ciclo di vita del software in produzione, dalla configurazione degli ambienti al monitoraggio dei sistemi. Lavori quotidianamente con Git, RedHat OpenShift, i container Docker, Kibana, SSMS ed altri strumenti per garantire la piena operatività sia dei tuoi colleghi sia degli utenti finali. Non solo. Hai in mano la gestione DevOps del team, la configurazione delle pipeline di CI/CD con AzureDevOps e OpenShift. Cos’ altro? Il tuo team si aspetta che tu contribuisca anche allo sviluppo dei prodotti come back-end developer o front-end developer.
È allettante come sfida?