Explore a arquitetura de DevOps

Concluído

Uma arquitetura bem projetada é como uma rodovia que pode fornecer rapidamente valor comercial ao usuário final. Quando não é feito corretamente, é como uma ponte lavada bloqueando você de seus objetivos finais.

Introdução à arquitetura de software

A viabilidade a longo prazo de qualquer arquitetura requer seu design, implementação, atualização e mudanças inevitáveis para ser bem-sucedida.

A arquitetura é abstrata até ser operacionalizada, quando se torna um ser vivo.

William LeMessurier, um dos arquitetos estruturais mais ilustres dos Estados Unidos, atuou como consultor de projeto e construção na inovadora torre da sede do Citicorp em Nova York. A torre foi concluída em 1977. No ano seguinte, depois que um estudante universitário de Princeton que estudava o projeto da torre o chamou para apontar uma possível deficiência, LeMessurier descobriu que o edifício era realmente estruturalmente deficiente.

O edifício não seria capaz de suportar ventos de 70 milhas por hora – o que, de acordo com as tabelas meteorológicas, ocorreria pelo menos uma vez a cada 55 anos na cidade de Nova York. Nessa circunstância, as juntas falhariam e o edifício desmoronaria, começando no 13º andar. A torre estava totalmente ocupada na época. LeMessurier teve que dar a notícia aos proprietários e funcionários da cidade.

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

Naquele verão, o furacão Ella seguiu em direção à cidade. O edifício estava seguro. A torre Citicorp tem permanecido sólida desde então.

Importante

A arquitetura de software consiste em fazer escolhas estruturais fundamentais que são dispendiosas de mudar uma vez implementadas.

As suas características incluem:

  • Partes interessadas, que podem incluir partes interessadas de negócios, equipes de aplicativos, equipes de controle de qualidade, operações, segurança e usuários.
  • Separação de preocupações: para reduzir a complexidade, separe as preocupações que impulsionam o projeto.
  • Atributos orientados pela qualidade: incluindo escalabilidade, extensibilidade, confiabilidade, manutenibilidade e segurança.
  • Integridade conceitual: a arquitetura de software representa uma visão geral do que deve fazer e como deve fazê-lo para manter a arquitetura, os dados e a integridade do processo.
  • Restrições cognitivas: as organizações são constrangidas a produzir desenhos que sejam cópias das suas estruturas de comunicação.
  • Estilos recorrentes: a disciplina de arquitetura de software exige que desenvolvamos maneiras padrão de lidar com preocupações recorrentes.

Qualquer arquitetura aborda "-ilidades":

  • auditabilidade
  • disponibilidade
  • compatibilidade
  • Possibilidade de composição
  • Configurabilidade
  • acessibilidade
  • Adaptabilidade
  • acessibilidade de preços
  • Personalização
  • Demonstrabilidade
  • capacidade de implantação
  • Durabilidade
  • Usabilidade
  • Extensibilidade
  • flexibilidade
  • Interoperabilidade
  • capacidade de gestão
  • portabilidade
  • previsibilidade
  • Capacidade de recuperação
  • fiabilidade
  • Repetibilidade
  • reutilização
  • escalabilidade
  • Facilidade de manutenção
  • sociabilidade
  • simplicidade
  • Capacidade de teste
  • sustentabilidade
  • Rastreabilidade
  • Reprodutibilidade

Ao construir software, os arquitetos devem determinar a mais importante dessas "-ilidades". No entanto, muitos destes fatores opõem-se entre si.

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

Este processo de tomada de decisão é um ato de equilíbrio; Equilibrar os prós e contras de cada decisão arquitetônica leva às compensações tão comumente lamentadas pelos arquitetos.

Nos últimos anos, desenvolvimentos incrementais nas principais práticas de engenharia para desenvolvimento de software lançaram as bases para repensar como a arquitetura muda ao longo do tempo e como proteger características arquitetônicas importantes à medida que essa evolução ocorre.

Arquitetura DevOps

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

"Um deles é a componente cultural. Certamente, a outra parte são as ferramentas e a tecnologia. A terceira parte é a arquitetura. Você precisa de ótimas práticas de tecnologia, o que inclui automação. Você precisa de uma cultura de alta confiança. E é a arquitetura que permite chegar lá."

A pesquisa apresentada no livro Accelerate 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 a estabilidade.

Gorjeta

Uma boa arquitetura facilita a capacidade de implantação e a estabilidade.

Arquitetura e organização

A lei de Conway tem o nome do programador informático Melvin Conway, que introduziu a ideia em 1967. Ele 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 projete um sistema (definido amplamente) produzirá um design cuja estrutura é uma cópia da estrutura de comunicação da organização.

A lei baseia-se no raciocínio de que, para um módulo de software funcionar, vários autores devem comunicar frequentemente entre si.

Portanto, a estrutura de interface de software de um sistema refletirá os limites sociais da(s) organização(ões) que o produziu, através dos quais a comunicação é mais difícil.

Habilidades de arquiteto em Enterprise DevOps

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

  • Pensamento de visão geral
  • pensamento sistémico
  • conhecimento de negócios
  • competências interpessoais
  • Capacidade de influência e liderança
  • compreensão da arquitetura técnica
  • Experiência em gestão financeira de TI
  • gestão do tempo
  • exposição a estruturas de arquitetura corporativa (EA)
  • capacidade de explicar TI aos executivos
  • Capacidade de apresentação
  • habilidades de coaching
  • compreensão da arquitetura de dados e operações de TI

Importante

Mas qual é a habilidade mais importante para o sucesso do século 21?

Vontade e capacidade de aprender.