
No início, é sempre difícil entender um projeto grande e antigo. A avaliação de arquitetura é uma das atividades do arquiteto. Normalmente, temos que trabalhar com projetos grandes e antigos, e os resultados precisam ser apresentados em uma semana.
Como avaliar um projeto com 100 mil linhas de código ou mais em uma semana e fornecer resultados realmente úteis para o cliente?
A maioria dos arquitetos e líderes técnicos já se deparou com avaliações de projetos como estas. Pode parecer um processo semi-formal ou um serviço separado, como fazemos em nossa empresa, mas, de qualquer forma, a maioria de vocês já lidou com isso.
A versão original em inglês para seus amigos que não falam russo está aqui: .
Abordagem em nossa empresa
Vou explicar como isso funciona em nossa empresa e como eu lido com situações semelhantes, mas você pode facilmente adaptar essa abordagem às necessidades do seu projeto e da sua empresa.
Existem duas variantes de avaliação de arquitetura.
Interna – geralmente fazemos isso para projetos dentro da empresa. Qualquer projeto pode solicitar uma avaliação de arquitetura por várias razões:
- A equipe pensa que seu projeto é perfeito e isso é suspeito. Já tivemos casos em que, frequentemente, em tais projetos, tudo não está tão perfeito.
- A equipe quer verificar seu projeto e suas decisões.
- A equipe sabe que tudo está ruim. Eles podem até listar os principais problemas e razões, mas querem obter uma lista completa de problemas e recomendações para melhorar o projeto.
Externa – é um processo mais formal do que a avaliação interna. O cliente vem somente quando as coisas estão realmente ruins. Normalmente, o cliente entende que existem problemas globais, mas não consegue identificar corretamente as causas e desmembrá-las.
A avaliação de arquitetura para um cliente externo é um caso mais complexo. O processo deve ser mais formal. Os projetos são sempre grandes e antigos. Eles têm muitos problemas, bugs e código defeituoso. O relatório do trabalho realizado deve ser preparado em algumas semanas, no máximo, onde devem estar os principais problemas e recomendações para melhorias. Portanto, se conseguirmos resolver a avaliação externa do projeto, a interna será apenas uma questão simples. Vamos considerar o caso mais complexo.
Avaliação de Arquitetura de um projeto enterprise
Um projeto típico de avaliação é um grande projeto de enterprise antigo com muitos problemas. O cliente nos procura e pede para consertar seu projeto. É como um iceberg; o cliente vê apenas o topo de seus problemas e não percebe o que está abaixo da superfície (na profundidade do código).
Problemas que o cliente pode relatar e dos quais pode estar ciente:
- Problemas de desempenho
- Problemas de usabilidade do aplicativo
- Implantação prolongada
- Ausência de testes unitários e outros testes
Problemas que o cliente provavelmente não percebe, mas que podem existir no projeto:
- Problemas de segurança
- Problemas de design
- Arquitetura incorreta
- Erros algorítmicos
- Tecnologias inadequadas
- Dívida técnica
- Processo de desenvolvimento inadequado
Processo formal de avaliação de arquitetura
É um processo formal que seguimos na empresa, mas você pode ajustá-lo conforme necessário em sua empresa e projeto.
Pedido do cliente
O cliente pede uma avaliação da arquitetura do projeto atual. A pessoa responsável do nosso lado coleta informações básicas sobre o projeto e seleciona os especialistas necessários. Dependendo do projeto, isso pode envolver diferentes especialistas.
Arquiteto de Soluções – a pessoa principal responsável pela avaliação e coordenação (e muitas vezes a única).
Especialistas específicos de stack – .Net, Java, Python, e outros especialistas técnicos dependendo do projeto e das tecnologias
Especialistas em Nuvem – podem ser arquitetos de nuvem Azure, GCP ou AWS.
Infraestrutura – DevOps, Administrador de sistema, etc.
Outros especialistas – como big data, machine learning, engenheiro de performance, especialista em segurança, líder de QA.
Coleta de informações sobre o projeto
Você deve coletar o máximo de informações possível sobre o projeto. Você pode usar várias técnicas dependendo da situação:
- Questionários e outras formas de comunicação por e-mail. O método menos eficaz.
- Reuniões online.
- Ferramentas especiais para troca de informações, como: Google doc, Confluence, repositórios, etc.
- Reuniões presenciais. O método mais eficaz e mais caro.
O que coletar do cliente?
Informações básicas. Sobre o que é o projeto. Seu objetivo e valor. Principais metas e planos futuros. Objetivos e estratégias de negócios. Principais problemas e resultados desejados.
Informações sobre o projeto. Pilha tecnológica, frameworks, linguagens de programação. Implantação on-premise ou em nuvem. Se o projeto está na nuvem, quais serviços estão sendo utilizados. Quais padrões arquitetônicos e de design foram aplicados.
Requisitos não funcionais. Todos os requisitos relacionados ao desempenho, disponibilidade e usabilidade do sistema. Requisitos de segurança, etc.
Casos de uso básicos e fluxos de dados.
Acesso ao código-fonte. A parte mais importante! Você definitivamente deve obter acesso aos repositórios e à documentação sobre como compilar o projeto.
Acesso à infraestrutura. Seria bom ter acesso à infraestrutura em stage ou produção, para trabalhar com o sistema 'vivo'. É uma grande sorte se o cliente tiver ferramentas de monitoramento da infraestrutura e de desempenho. Falaremos sobre essas ferramentas na próxima seção.
Documentação. Se o cliente tiver documentação, isso é um bom começo. Ela pode estar desatualizada, mas ainda assim é um bom começo. Nunca confie totalmente na documentação – verifique com o cliente, na infraestrutura real e no código-fonte.
Processo de avaliação da arquitetura
Como lidar com tanta informação em tão pouco tempo? Primeiro, paralelize o trabalho.
O DevOps deve olhar para a infraestrutura. O líder técnico deve se concentrar no código. O engenheiro de performance deve examinar as métricas de desempenho. O especialista em bancos de dados deve investigar mais a fundo as estruturas de dados.
Mas esse é o caso ideal, quando você tem muitos recursos. Normalmente, a avaliação do projeto é feita por uma a três pessoas. Você pode até fazer a avaliação sozinho, o que muitas vezes acontece se você tiver o conhecimento e a experiência adequados em todas as áreas do projeto. Nesse caso, você precisa automatizar todos os processos, tanto quanto possível.
Infelizmente, você terá que ler a documentação manualmente. Com a experiência adequada, você conseguirá entender rapidamente a qualidade da documentação. O que é verdade e o que claramente não corresponde à realidade. Às vezes, você pode encontrar uma arquitetura na documentação que nunca funcionará na vida real. Isso deve fazer você pensar em como realmente foi feito no projeto.
Ferramentas úteis para automação da avaliação do projeto
A avaliação de código é um exercício simples. Você pode utilizar analisadores de código estáticos que mostrarão problemas de design, desempenho e segurança. Aqui estão alguns deles:
é uma excelente ferramenta para arquitetos. Ele mostrará uma visão geral, a dependência entre módulos e áreas potenciais para refatoração. Como todas as boas ferramentas, tem um custo justo, mas você pode aproveitar uma versão de teste de 30 dias.
é uma ferramenta clássica. Uma ferramenta para análise estática de código. Permite identificar códigos ruins, bugs e problemas de segurança em mais de 20 linguagens de programação.
Todos os provedores de nuvem têm ferramentas para monitoramento de infraestrutura. Isso permitirá que você avalie corretamente a eficiência da infraestrutura em termos de custo e desempenho. Para AWS, isso é . Para Azure, simplesmente .
Monitoramento adicional de desempenho e registro ajudará a identificar problemas de desempenho em todos os níveis. Desde a base de dados com consultas ineficazes, o backend até o frontend. Mesmo que o cliente não tenha instalado essas ferramentas anteriormente, você pode integrá-las rapidamente ao sistema existente para identificar problemas de desempenho.
Como sempre, boas ferramentas têm seu preço. Posso recomendar algumas ferramentas pagas. Claro, você pode usar soluções open-source, mas isso exigirá mais tempo de sua parte. E deve ser feito com antecedência, e não no processo de avaliação da arquitetura.
é uma ferramenta de avaliação de desempenho de aplicativos
é um serviço de monitoramento em nuvem
Para testes de segurança, existem diversas ferramentas. Desta vez, recomendo uma ferramenta gratuita para escaneamento de sistemas.
é uma ferramenta para escaneamento de aplicativos web quanto à conformidade com padrões de segurança.
Vamos organizar tudo em um todo.
Preparar o relatório
Comece seu relatório com os dados coletados do cliente. Descreva os objetivos do projeto, limitações e requisitos não funcionais. Em seguida, mencione todos os dados de entrada, como código-fonte, documentação e infraestrutura.
Próximo passo. Liste todos os problemas que você encontrou manualmente ou com a ajuda de ferramentas automatizadas. Coloque os grandes relatórios gerados automaticamente na seção de apêndices no final. Aqui devem estar as evidências curtas e concisas dos problemas encontrados.
Priorize os problemas encontrados em uma escala de erro, aviso, informação. Você pode escolher sua própria escala, mas esta é a mais comum.
Como verdadeiro arquiteto, você deve fornecer recomendações para resolver os problemas encontrados. Descreva as melhorias e o valor para o negócio que o cliente obterá. Como demonstrar o valor para o negócio de que discutimos anteriormente.
Prepare um roadmap com pequenas iterações. Cada iteração deve conter o tempo para execução, descrição, número de recursos necessários para a melhoria, valor técnico e valor para o negócio.
Finalizamos a avaliação da arquitetura e fornecemos ao cliente o relatório.
Nunca simplesmente envie o relatório por e-mail. Ele pode não ser lido ou ser lido e não entendido sem a devida explicação. Em resumo, a comunicação ao vivo ajuda a eliminar mal-entendidos entre as pessoas. Você deve marcar uma reunião com o cliente e falar sobre os problemas encontrados, enfatizando os mais significativos. É importante chamar a atenção do cliente para problemas que ele pode nem saber que existem, como questões de segurança, e explicar como isso pode impactar o negócio. Mostre seu roadmap com as melhorias e discuta várias opções que sejam mais adequadas para o cliente. Isso pode incluir tempo, recursos e volume de trabalho.
Como um fechamento da sua reunião, envie ao cliente seu relatório.
Para concluir
A avaliação da arquitetura é um processo complexo. Para realizá-la adequadamente, você precisa ter experiência e conhecimentos suficientes.
É realmente possível fornecer ao cliente resultados úteis para ele e seu negócio em apenas uma semana. Mesmo que você faça isso sozinho.
Com base na minha experiência, muitas melhorias ficaram paradas no meio do caminho, às vezes nem começaram. Aqueles que escolheram um meio-termo e realizaram apenas algumas melhorias que eram maximamente úteis para o negócio com o mínimo de esforço, melhoraram significativamente a qualidade do seu produto. Aqueles que não fizeram nada, após alguns anos, poderiam até fechar o projeto.
Seu objetivo é mostrar ao cliente as melhores melhorias pelo menor preço.
Outros artigos da seção pode ser lido em seu tempo livre.
Desejo a você código limpo e boas soluções arquitetônicas.
Nosso grupo do Facebook — .
Fonte: habr.com
