Explorar a arquitetura de DevOps

Concluído

Uma arquitetura bem projetada é como uma estrada que pode fornecer rapidamente valor empresarial para o usuário final. Quando ela não é feita corretamente, é como uma ponte desbotada que impede você de atingir suas metas.

Introdução à arquitetura de software

A viabilidade de longo prazo de qualquer arquitetura exige que o design, a implementação, a atualização e as mudanças inevitáveis sejam bem-sucedidas.

A arquitetura é abstrata até ser operacional, quando se torna uma coisa viva.

William LeMessurier, um dos arquitetos estruturais mais premiados dos Estados Unidos, era consultor de design e construção na inovadora torre da sede da Citicorp em Nova York. A construção da torre foi concluída em 1977. No ano seguinte, depois que um aluno da Princeton que estudou o design de torre o chamou para indicar uma possível deficiência, LeMessurier descobriu que o edifício era, de fato, estruturalmente deficiente.

O edifício não conseguiria resistir a ventos de 110 km/h, que, de acordo com os dados meteorológicos, ocorrem pelo menos uma vez a cada 55 anos na cidade de Nova York. Nessa circunstância, as junções falhariam, e o edifício teria um colapso, começando no 13º andar. A torre estava totalmente ocupada naquela época. A LeMessurier teve que dar a notícia aos proprietários e agentes públicos da cidade.

LeMessurier enfrentou um problema complexo e difícil de responsabilidade profissional. Ele precisava alertar um amplo grupo de pessoas sobre a deficiência estrutural e solicitar a cooperação delas para reparar a deficiência antes que um furacão derrubasse o edifício.

Naquele verão, o furacão Ella passou pela cidade. O prédio ficou protegido. A torre Citicorp se manteve firme desde então.

Importante

A arquitetura de software se trata de fazer escolhas estruturais fundamentais que são caras para serem modificadas depois da implementação.

As características dela incluem:

  • Stakeholder, que podem incluir stakeholders empresariais, equipes de aplicativos, equipes de garantia de qualidade, operações, segurança e usuários.
  • Separação de preocupações: para reduzir a complexidade, separe as preocupações que orientam o design.
  • Atributos controlados por qualidade: incluindo escalabilidade, extensibilidade, confiabilidade, capacidade de manutenção e segurança.
  • Integridade conceitual: a arquitetura de software representa uma visão geral do que ele deve fazer e como ele deve fazer para manter a arquitetura, os dados e a integridade do processo.
  • Restrições cognitivas: as organizações estão restritas a produzir designs que são cópias das estruturas de comunicação delas.
  • Estilos recorrentes: a disciplina de arquitetura de software exige que nós desenvolvamos maneiras padrão de resolver preocupações recorrentes.

Qualquer arquitetura aborda o seguinte:

  • capacidade de auditoria
  • availability
  • compatibilidade
  • modularidade
  • configurabilidade
  • acessibilidade
  • adaptabilidade
  • acessibilidade
  • capacidade de personalização
  • demonstrabilidade
  • capacidade de implantação
  • durabilidade
  • usabilidade
  • extensibilidade
  • flexibilidade
  • interoperabilidade
  • gerenciabilidade
  • portabilidade
  • previsibilidade
  • capacidade de recuperação
  • confiabilidade
  • capacidade de repetição
  • capacidade de reutilização
  • escalabilidade
  • capacidade de manutenção
  • sociabilidade
  • simplicidade
  • capacidade de testagem
  • sustentabilidade
  • rastreabilidade
  • reprodutibilidade

Ao criar um software, os arquitetos precisam determinar qual desses itens é o mais importante. Contudo, muitos desses fatores se opõem entre si.

Por exemplo, atingir um alto desempenho e escalabilidade extrema pode ser difícil porque requer um equilíbrio cuidadoso de arquitetura, operações e muitos outros fatores.

Esse processo de tomada de decisão é um ato de balanceamento; o balanceamento dos prós e dos contras de cada decisão de arquitetura leva a compensações, normalmente o que faz os arquitetos lamentarem.

Nos últimos anos, desenvolvimentos incrementais em práticas básicas de engenharia para desenvolvimento de software definiram a base para repensar como a arquitetura muda ao longo do tempo e como proteger características de arquitetura importantes à medida que essa evolução ocorre.

Arquitetura de DevOps

Gene Kim é um famoso pesquisador, autor e visionário de DevOps. Ele identifica três coisas necessárias para fazer o DevOps acontecer:

"Uma delas é o componente cultural. Certamente, a outra parte são as ferramentas e a tecnologia. A terceira delas é a arquitetura. Você precisa de excelentes práticas de tecnologia, o que inclui automação. Você precisa de uma cultura de alta confiança. E é a arquitetura que permite que você chegue lá."

A pesquisa apresentada no livro Accelerate não demonstra nenhuma correlação significativa entre o tipo de sistema e o desempenho de entrega para muitos tipos de sistemas, incluindo novos sistemas, sistemas de registro, software comercial empacotado, software de mainframe e software incorporado. O que é importante é a capacidade de implantação e de testes.

Dica

A Boa arquitetura facilita a capacidade de implantação e de teste.

Arquitetura e organização

A lei de Conway ganhou esse nome pelo programa de computador Melvin Conway, que introduziu a ideia em 1967. Ela reconhece que o design do sistema é afetado pelas estruturas de comunicação das organizações que projetam os sistemas:

Importante

Lei de Conway: qualquer organização que projeta um sistema (definido amplamente) produzirá um design cuja estrutura é uma cópia da estrutura de comunicação da organização.

A lei se baseia no raciocínio que, para um módulo de software funcionar, vários autores precisam se comunicar com frequência entre si.

Portanto, a estrutura de interface de software de um sistema refletirá os limites sociais das organizações que a produziram; entre elas, a comunicação é mais difícil.

Habilidades de arquiteto no DevOps empresarial

Os arquitetos desenvolvem e refinam uma ampla variedade de habilidades, como:

  • raciocínio de todo o cenário
  • raciocínio sistêmico
  • conhecimento empresarial
  • habilidades interpessoais
  • habilidades de influência e liderança
  • noções básicas da arquitetura técnica
  • experiência de administração financeira de TI
  • gerenciamento de tempo
  • exposição às estruturas de EA (arquitetura empresarial)
  • capacidade de explicar a TI para os executivos
  • habilidades de apresentação
  • habilidades de treinamento
  • noções básicas da arquitetura de dados e das operações de TI

Importante

Mas qual é a habilidade mais importante para o sucesso no século XXI?

Disposição e capacidade de aprender.