Explorar a arquitetura de DevOps
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.