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.
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.
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.
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.
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?