I principali ostacoli nelle adozioni DevOps

Giร  dall’inizio abbiamo specificato che DevOps coinvolge le persone. C’รจ quindi da aspettarsi che la maggior parte degli ostacoli arrivino dalle persone stesse o da gruppi. Per alcune persone i cambiamenti rappresentano dei problemi.

Vediamo quali sono le principali tematiche da tenere in considerazione quando si tratta di ostacoli da superare nelle adozioni DevOps su tematiche che riguardano le persone.

Cultura resistente al cambiamento

La resistenza culturale all’interno dell’organizzazione รจ un ostacolo significativo, poichรฉ molte persone possono essere riluttanti a cambiare le pratiche consolidate. Potrebbe essere perchรฉ non sono chiari i vantaggi portati dall’affrontare le cose in modo diverso o perchรฉ bisogna imparare metodologie e pratiche nuove mettendo in discussione le proprie conoscenze consolidate da anni di pratica.

Silos Organizzativi

Strutture organizzative con silos funzionali (forti separazioni tra team Dev, Ops, Security, Audit…) ostacolano la collaborazione e la comunicazione tra team, rendendo difficile implementare una cultura DevOps.

Alla base della cultura DevOps c’รจ una forte volontร  di migliorare l’interazione tra persone mettendo in discussione anche la formazione di come sono formati in azienda (favorendo un approccio “market-oriented” rispetto al “function-oriented”).

Questi cambiamenti, quando sono effettuati senza un piano strategico, potrebbero destabilizzare le persone abituate a lavorare in un certo modo da tanto tempo o ad avere ruoli e responsabilitร  che cambiano. Ad esempio, i team Operation devono cambiare il modo in cui operano sull’infrastruttura adottando strumenti che abilitano l’approccio *Infrastructure as Code* e realizzando tool che permettano a chiunque di operare in modalitร  self-service.

Microsoft Engineering Stories – Our DevOps Journey (1 of 4)

Il cambiamento non รจ supportato dal management

L’assenza di coinvolgimento della leadership o mancanza di supporto puรฒ ostacolare l’adozione di pratiche DevOps (e l’ho visto accadere in piรน casi). Puรฒ arrivare a fermare un’adozione per intero alla sua partenza o puรฒ limitarne le potenzialitร  fermandosi ad aspetti superficiali (i piรน tecnologici) dell’iniziativa.

L’approccio della leadership รจ fondamentale perchรฉ ogni cambiamento porta nelle prime fasi delle inefficienze. Si devono imparare modi e tecnologie diverse che, quindi, richiedono tempo di apprendimento e rallentano il normale procedere delle cose.

Quando la leadership รจ ignara del valore del cambiamento, allora non vengono allocati tempo e risorse per supportare la trasformazione.

Questo puรฒ avvenire in realtร  di tutte le dimensioni: dalle piรน grandi alle piรน piccole.

Microsoft Engineering Stories – Our DevOps Journey (2 of 4)

Da un punto di vista piรน tecnico, invece, i colli di bottiglia nelle adozioni DevOps seguono tipicamente questo percorso

  • Creazione di ambienti
  • Deployment del codice
  • Test setup ed esecuzione
  • Architettura troppo accoppiata

Creazione di ambienti

Quando non si applicano tecniche DevOps, la creazione degli ambienti (di produzione e non) รจ un collo di bottiglia molto sentito. I developer lamentano l’assenza di ambienti di test e, quando ne richiedono di nuovi, i tempi di approvvigionamento sono molto lunghi. Questo impatta sulle pratiche di testing. In particolare, si arriva a lavorare “in grandi batch” perchรฉ, visto che รจ difficile testare per scarsitร  di ambienti, si accumulano feature in modo tale che, quando riesco a installare su un ambiente, posso eseguire molti test.

Si deduce, quindi, che trasformare il modo in cui si creano e gestiscono gli ambienti (investendo in approcci cloud o ibridi, *Infrastructure as Code*, uso di repository tipo git anche per i team di Operation) porta enormi benefici e un ritorno sull’investimento molto rapido.

Deployment del codice

Una volta che abbiamo risolto la creazione e configurazione degli ambienti, il problema successivo da risolvere รจ quello di installare le nuove versioni in modo rapido e senza dipendere dalle persone. Arrivano in nostro soccorso le automazioni con le pipeline di deployment che devono riprendere le fila da dove la *continuous integration* termina le sue responsabilitร .

Solo automatizzando il deployment abilitiamo un flusso rapido da developer a operation e, in definitiva, verso i nostri utenti finali.

Microsoft Engineering Stories – Our DevOps Journey (3 of 4)

Test setup ed esecuzione

Automatizzare gli ambienti e il deployment dei componenti risolve il problema delle tempistiche, ma non della qualitร . Un processo di deployment che non include controlli di qualitร  รจ un lavoro a metร . Non possiamo permettere che i nostri artefatti arrivino agli utenti finali senza passare controlli che ne certifichino un determinato livello di qualitร .

Nascono quindi le tematiche di test automatizzati che dobbiamo svolgere mentre i nostri artefatti attraversano la pipeline di deployment. Abbiamo, di solito:

  • Test di integrazione: prevedono di sollecitare il nostro sistema a vari livelli stimolando l’interazione tra almeno due parti del sistema stesso. Esempio: delle API e un database.
  • Test end-to-end: prevedono di sollecitare il sistema facendo partire delle transazioni sintetiche che simulino il comportamento di un utente finale (ad esempio con strumenti tipo Playwright).

In entrambi gli scenari ci sono da gestire tematiche riguardanti i dati di test a corredo. Si utilizzeranno dati generati casualmente? Un database preso dalla produzione con i dati sensibili mascherati? Queste sono alcune delle domande a cui dovremmo rispondere quando si progettano i test in pipeline.

Architettura accoppiata

L’argomento dei test apre spesso uno scheletro pieno di armadi. Codice legacy progettato con metodologie non guidate dai test (TDD / BDD) rende difficile l’esecuzione e la scrittura di test automatici a tutti i livelli, in particolare di unit test. Con una codebase / architettura accoppiata, spesso si ricade nell’uso di test manuali oppure si automatizzano test di integrazione o end-to-end. Tuttavia, questo porta a un portafoglio di test a forma di “cono gelato” e non di piramide, con alla base una forte componente di unit test. I test di integrazione ed end-to-end sono piรน lenti da eseguire e piรน costosi da scrivere rispetto agli unit test, per questo motivo la loro esistenza รจ giustificata in proporzione minore rispetto agli unit test (shift-left).

Microsoft Engineering Stories – Our DevOps Journey (4 of 4)

Conclusione

In conclusione, l’adozione di DevOps puรฒ incontrare numerosi ostacoli legati sia alla cultura aziendale che agli aspetti tecnici. La resistenza al cambiamento, i silos organizzativi e la mancanza di supporto dal management sono tra i principali fattori che rallentano la trasformazione. Tuttavia, affrontare questi problemi con un approccio strategico e un forte impegno nella creazione di ambienti automatizzati, deployment efficaci e test di qualitร  puรฒ portare a enormi benefici. Superando questi ostacoli, le aziende possono ottenere una maggiore efficienza, velocitร  e qualitร  nei loro processi, creando un ciclo virtuoso che migliora costantemente le operazioni e la cultura aziendale.


Lascia un commento

Il tuo indirizzo email non sarร  pubblicato. I campi obbligatori sono contrassegnati *