Esplorare l'architettura di DevOps

Completato

Un'architettura ben progettata è come un'autostrada in grado di fornire rapidamente valore aziendale all'utente finale. Quando non viene fatta bene, è come un ponte crollato che impedisce di raggiungere gli obiettivi finali.

Introduzione all'architettura software

L'affidabilità a lungo termine di qualsiasi architettura richiede la corretta esecuzione di progettazione, implementazione, aggiornamento e modifica inevitabile.

L'architettura è astratta fino a quando non è operativa, quando diventa un elemento vivente.

William LeMessurier, uno dei più distinti architetti strutturali degli Stati Uniti, lavorò come consulente di progettazione e costruzione all'innovativa sede di Citicorp di New York a forma di torre. La torre fu completata nel 1977. L'anno successivo, dopo che uno studente dell'università di Princeton che aveva studiato il progetto della torre gli aveva segnalato una possibile carenza, LeMessurier scoprì che l'edificio aveva effettivamente delle carenze strutturali.

L'edificio non sarebbe stato in grado di resistere ai venti a 110 km orari che in base alle tabelle meteorologiche si abbatterebbero sulla città di New York almeno una volta ogni 55 anni. In tal caso, le giunzioni avrebbero ceduto e l'edificio sarebbe crollato a partire dal 13° piano. La torre a quell'epoca era interamente occupata. LeMessurier dovette comunicare la notizia ai proprietari e ai funzionari della città.

LeMessurier si trovò davanti a un problema complesso e difficile di responsabilità professionale. Dovette avvertire un vasto gruppo di persone della carenza strutturale e coinvolgerle nella riparazione della carenza prima che un uragano demolisse l'edificio.

Quell'estate, l'uragano Ella si diresse verso la città. L'edificio fu messo in sicurezza. La torre Citicorp da allora continua a ergersi solida.

Importante

L'architettura software consiste nel fare scelte strutturali fondamentali che sono costose da modificare una volta implementate.

Le sue caratteristiche includono:

  • Stakeholder, che possono includere stakeholder aziendali, team di applicazioni, team di QA, operazioni, sicurezza e utenti.
  • Separazione dei problemi: per ridurre la complessità, separare i problemi che orientano la progettazione.
  • Attributi guidati dalla qualità: inclusi scalabilità, estendibilità, affidabilità, gestibilità e sicurezza.
  • Integrità concettuale: l'architettura del software rappresenta una visione complessiva delle operazioni da eseguire e del modo in cui devono essere eseguite per conservare l'integrità dell'architettura, dei dati e dei processi.
  • Vincoli cognitivi: le organizzazioni sono vincolate alla creazione di progetti che sono copie delle loro strutture di comunicazione.
  • Stili ricorrenti: la disciplina dell'architettura software richiede di sviluppare modi standard per risolvere problemi ricorrenti.

Qualsiasi architettura si rivolge alle "-ilità":

  • controllabilità
  • availability
  • compatibility
  • componibilità
  • configurabilità
  • accessibilità
  • adattabilità
  • accessibilità economica
  • personalizzabilità
  • dimostrabilità
  • distribuibilità
  • durabilità
  • usabilità
  • estendibilità
  • flessibilità
  • interoperabilità
  • gestibilità
  • portabilità
  • prevedibilità
  • recuperabilità
  • affidabilità
  • ripetibilità
  • riusabilità
  • scalabilità
  • funzionalità
  • socialità
  • semplicità
  • testabilità
  • sostenibilità
  • tracciabilità
  • riproducibilità

Durante la creazione di software, i progettisti devono stabilire le "-ilità" più importanti. Tuttavia, molti di questi fattori sono in contrasto tra loro.

Ad esempio, l'ottenimento sia di prestazioni elevate che di una scalabilità estrema può essere difficile, perché questo richiede un attento equilibrio tra l'architettura, le operazioni e molti altri fattori.

Questo processo decisionale è un'azione di equilibrio; bilanciare i vantaggi e gli svantaggi di ogni decisione sull'architettura porta a compromessi, in genere molto deprecati dai progettisti.

Negli ultimi anni, gli sviluppi incrementali nelle procedure ingegneristiche di base per lo sviluppo di software hanno gettato le basi per ripensare il modo in cui l'architettura cambia nel tempo e come proteggere le caratteristiche architettoniche importanti quando si verifica questa evoluzione.

Architettura DevOps

Gene Kim è un rinomato ricercatore e autore di DevOps, nonché visionario. Egli individua tre elementi necessari a DevOps:

"Uno è la componente culturale. Ovviamente l'altra parte è strumenti e tecnologia. La terza parte è l'architettura. Sono necessarie procedure tecnologiche eccezionali, compresa l'automazione. Serve una cultura di grande fiducia. Ed è l'architettura che ti consente di arrivarci".

La ricerca presentata nel libro Accelerate dimostra che non esiste alcuna correlazione di significato tra il tipo di sistema e le prestazioni di distribuzione per molti tipi di sistemi, inclusi i nuovi sistemi, i sistemi di registrazione, il software commerciale preconfezionato, il software mainframe e il software integrato. Ciò che è importante è la distribuibilità e la testabilità.

Suggerimento

Una buona architettura semplifica la distribuibilità e la testabilità.

Architettura e organizzazione

La legge di Conway prende il nome da un programmatore di computer, Melvin Conway, che ha introdotto l'idea nel 1967. Riconosce che il design dei sistemi è influenzato dalle strutture di comunicazione delle organizzazioni che progettano i sistemi:

Importante

Legge di Conway: qualsiasi organizzazione che progetta un sistema (in senso lato) produrrà un design la cui struttura è una copia della struttura di comunicazione dell'organizzazione.

La legge si basa sull'idea secondo cui perché un modulo software funzioni è necessario che più autori comunichino spesso tra loro.

Pertanto, la struttura dell'interfaccia software di un sistema rifletterà i confini sociali delle organizzazioni che lo hanno prodotto tra cui la comunicazione è più difficile.

Competenze dei progettisti in Enterprise DevOps

I progettisti sviluppano e perfezionano un'ampia gamma di competenze, ad esempio:

  • Capacità di cogliere il quadro generale
  • Pensiero sistemico
  • Conoscenza aziendale
  • Competenze interpersonali
  • Capacità di influenzare e guidare
  • Conoscenza dell'architettura tecnica
  • Esperienza di gestione finanziaria IT
  • gestione del tempo
  • Esposizione ai framework Enterprise Architecture (EA)
  • Capacità di spiegare l'IT ai dirigenti
  • Competenze di presentazione
  • Competenze di coaching
  • Comprensione dell'architettura dei dati e delle operazioni IT

Importante

Ma qual è la competenza più importante per il successo nel 21° secolo?

La volontà e la capacità di apprendere.