No momento de começar um novo projeto, o que vem à mente antes de tudo? Muita gente pode responder “definir a arquitetura/ framework que será usada”. Entretanto, nos dias de hoje, não se pode mais conceber uma arquitetura estática e imutável, em especial, para soluções inovadoras, e altamente mutantes.

Dentro do universo do desenvolvimento de software, novos requisitos e funcionalidades de um produto fazem parte da rotina de trabalho e estão previstos. Por isso mesmo, as metodologias ágeis são muito bem aceitas dentro dessa indústria e, para que funcionem bem, precisam contar com a arquitetura evolutiva.

Como ainda não se sabe quais serão as funcionalidades de uma aplicação, não faz sentido escolher uma arquitetura para atender a tudo. Por isso, é mais indicado investir na arquitetura evolutiva, que começa simples e vai adicionando funcionalidades aos poucos.

Quer entender melhor o que é arquitetura evolutiva e quais são suas vantagens? Acompanhe as nossas dicas!

O que é arquitetura evolutiva

Arquitetura Evolutiva

Complexidade

Há dois tipos de complexidade em todo projeto:

– A inerente ao problema: aquela que o software precisa resolver

– A acidental: vem da tentativa de criar alguma abstração ou generalização desnecessária.

A primeira deve ser aborda na estratégia de construção da solução e a segunda, evitada.

KISS

O primeiro princípio da arquitetura evolutiva envolve uma prática bem conhecida, que tenta eliminar a complexidade acidental. Denominada KISS (Keep it Simple), ela faz o problema parecer simples lidando com a complexidade inerente e não gerando complexidade acidental.

Tudo isso pode ser feito por meio de experimentações, testes e busca por soluções. É preciso evoluir a cada tentativa para chegar ao segundo princípio, que é a refatoração.

Refatorar

É preciso ter capacidade e paciência para refatorar seu código constantemente. Só assim será possível encontrar uma solução que seja boa e que ajude a evoluir o produto. Refatorar significa mudar a forma sem mudar o objetivo ou o comportamento do que está sendo alterado, com o objetivo de robustecer o código, eliminar débito técnico e aportar para um melhor entendimento e simplicidade do código.

Vale testar novos padrões, implementar ideias, experimentar insights, discutir os resultados e, se isso não resolver, tentar de novo.

Reversibilidade

É importante testar e experimentar, mas é imprescindível seguir por um caminho que seja reversível. Isso vale para tudo, desde código até serviços e infraestrutura.

Se o código não pode ser revertido, é impossível refatorar. Se não é possível refatorar, não se pode evoluir. Sem evolução, o software não se adapta aos novos requisitos e passa a ser uma questão de tempo até que ele pare de funcionar.

Vantagens de se investir na arquitetura evolutiva

Arquitetura Evolutiva

Adotar um racional evolutivo para sua arquitetura de software é bastante vantajoso. Entretanto, é importante destacar que, normalmente, essas arquiteturas são diretamente focadas em reuso e, portanto, levam em consideração não apenas fatores técnicos, mas também questões como produtividade e, consequentemente, questões econômicas.

No momento de definir o futuro da arquitetura de software, não se deve pensar apenas no lado técnico, mas também compartilhar as decisões e buscar perspectivas diferentes que sustentem questões relativas a produto, pessoas e processos.

É preciso acompanhar atentamente o crescimento do produto e buscar um entendimento amplo de negócio. Desta forma, você garante que o que está sendo desenvolvido, funcional ou não-funcional, esteja de acordo com o seu real propósito.

A arquitetura evolutiva é formada por diferentes áreas, que devem ser equilibradas no dia a dia. São elas:

Delivery

Como fazer, ou os aspectos práticos que envolvem a melhor forma de executar diferentes atividades, garantindo que os processos de teste, CI/CD e definições estratégicas do ponto de vista operacional sejam realizados corretamente.

Guidance

Inclui os aspectos de formação e direcionamento contínuo das pessoas para a execução das suas atividades. Esta disciplina se preocupa em tornar toda a equipe apta para entender a arquitetura. Pode-se fazer code-reviews e desenvolvimento em pares.

Management

É o porquê e o que fazer. Essas questões envolvem a visão macro da situação da arquitetura. A estrutura de gestão deve permitir compartilhar com os demais membros do time assuntos como riscos e roadmap, garantindo um melhor entendimento do contexto do projeto para todos.

Há uma especial atenção no uso de uma arquitetura evolutiva em abordagens como DevOps, onde o processo de mudanças é contínuo e intenso. Assim, muitas situações demandam a convivência de várias estruturas e soluções diferentes coexistindo. Um exemplo é o uso da estratégia de “estrangulamento” que permite a migração de estruturas altamente acopladas, como monolito, para modelos componentizados.  As vantagens de ter arquiteturas fracamente acopladas permitem um maior dinamismo, adaptação e um controle intenso nas partes do código que está sendo alterado, sem afetar o restante da aplicação. Isso permite realizar testes focados nas mudanças, acelerando o processo de validação. Estas condições são fundamentais para práticas como Integração Continua.

DevOps traz estes pontos como fundamentais para ganhar a real flexibilidade que a agilidade anuncia, que é facilitar uma maior autonomia as equipes para construir, testar, implantar e corrigir sem depender de outros times. Os tempos de inclusão de novos profissionais no time é mais rápida como também a qualidade é maior. Se ganha um poder de gestão sobre a solução. A coexistência de versões no código permite o uso de uma implantação mais dinâmica, habilitando novas versões e desabilitando soluções que vão ficando obsoletas, todo em tempo real.

Investir na arquitetura evolutiva é um processo que torna o ciclo de aprendizado e experimentação mais bem-sucedido. A dica, aqui, é fazer retrospectivas, kaizens e PDCAs (Plan Do Check Act) constantemente para definir as próximas etapas.

Newsletter HNZ

Fique por dentro de nossos conteúdos se cadastrando na nossa newsletter semanal! Clique aqui!

HNZ

HNZ

Leave a Reply