BT

Martin Fowler descreve a “Arquitetura do Sacrifício”

| por Savita Pahuja Seguir 2 Seguidores , traduzido por Diogo Carleto Seguir 31 Seguidores em 06 nov 2014. Tempo estimado de leitura: 3 minutos |

As equipes de desenvolvimento de software preferem ter uma arquitetura de longa vida nos softwares, mas a rápida evolução das tendências em hardware, software e velocidade de redes, demanda uma grande mudança na arquitetura ou jogar fora toda a base de código. No mesmo contexto, Martin Fowler, autor e consultor na Thoughtworks, adicionou recentemente um post no seu blog sobre a Arquitetura do Sacrifício.

Arquitetura do Sacrifício significa aceitar agora que daqui a poucos anos a equipe terá que jogar fora o que está sendo desenvolvido atualmente. Fowler mencionou que isso significa pensar agora sobre as coisas que podem tornar mais fácil a substituição quando chegar a hora, mas os criadores de software raramente pensam sobre como projetar sua criação para apoiar a sua substituição.

Para muitas pessoas, jogar fora a base de código é um sinal de falha, possivelmente compreensível, dada a natureza exploratória inerente de desenvolvimento de software, mas mesmo assim uma falha. Mas frequentemente o melhor código que se pode escrever é o código que será descartado em alguns anos.

Fowler deu um exemplo correspondente a Arquitetura do Sacrifício do eBay que ao longo de um período de tempo mudaram dos scripts Perl, para código C++, para código Java. A arquitetura correta para suportar em 1996 não vai ser a arquitetura correta em 2006. Aquele de 1996 não vai lidar com a carga de 2006, mas a versão 2006 é muito complexa para construir, manter e evoluir para as necessidades de 1996.

Dmitry Cheryasov, desenvolvedor na EPAM Systems também endossa a Arquitetura do Sacrifício devido às mudanças que o negócio necessita. E compartilhou sua visão em uma discussão na Y Combinator como:

Construa com a intenção de reconstruir, quando a hora chegar. É como jogar fora protótipos, só que em produção. Quando seu negócio cresce, pode ser necessário jogar fora parte ou toda a base de código (como o eBay fez, duas vezes). Isso não significa que a solução anterior era ruim: não ao todo, eles foram adequados em uma etapa anterior.

Jeff Dean, pesquisador sênior na Google, mencionou em sua apresentação sobre redesenhar ou jogar fora o código antes que fique muito velho.

O design certo em X pode não ser muito errado a 10X ou 100X ou para ~10X maior, mas se planeje para reescrever antes dos ~100X.

Fowler diz que no período inicial do sistema de software há menos certeza de que o software realmente precisa fazer, então é importante colocar mais foco na flexibilidade para mudar funcionalidades ao invés de desempenho ou disponibilidade. Jeff Atwood, cofundador do Stack Overflow e Stack Exchange Network, cunhou a frase "desempenho é uma funcionalidade". Portanto a equipe pode priorizar o desempenho com respeito às outras funcionalidades. Inicialmente, essa não tem alta prioridade, mas no estágio futuro do desenvolvimento essa prioridade pode aumentar.

Fowler afirma que a Arquitetura do Sacrifício não conduz a falta de qualidade. Para uma base de código saudável, a modularidade é a chave.

Boa modularidade é uma parte vital para uma base de código saudável, e modularidade é geralmente de grande ajuda quando se substitui um sistema. De fato uma das melhores coisas a fazer com uma versão inicial de um sistema é explorar o que a melhor estrutura modular deve ser para que se possa aproveitar esse conhecimento para a substituição. Embora possa ser razoável sacrificar todo um sistema em seus primeiros dias, assim como um sistema cresce é mais efetivo sacrificar módulos individuais - o que só é possível fazer se o módulo tiver bons limites.

Justin Meyer, consultor jQuery e coautor de JavaScriptMVC, CanJS e jQueryPP, compartilhou a importância da modularidade recentemente no seu blog como:

Modularidade é a característica mais importante de um aplicativo sustentável. Um aplicativo modular não é um desperdício, pois partes podem ser mudadas, substituídas ou descartadas sem afetar o resto da aplicação.

Fowler acredita também que a equipe que escreve a Arquitetura do Sacrifício é a equipe que decide o tempo do sacrifício, e isso é bom para saber sobre o código que será sacrificado no futuro.

Para você até quando vale a pena sustentar o legado? Até não ter mais membros da equipe que trabalhem no projeto ou é considerado que depois de 3, 5 ou 10 anos o sistema já não atende mais as espectativas e está na hora de ir além.

Avalie esse artigo

Relevância
Estilo/Redação

Olá visitante

Você precisa cadastrar-se no InfoQ Brasil ou para enviar comentários. Há muitas vantagens em se cadastrar.

Obtenha o máximo da experiência do InfoQ Brasil.

Dê sua opinião

HTML é permitido: a,b,br,blockquote,i,li,pre,u,ul,p

Receber mensagens dessa discussão
Comentários da comunidade

Excelente! by Luiz Adolphs

Muito boa essa abordagem. Vai de encontro ao encorajado pelo DDD no tocante a modularização!

HTML é permitido: a,b,br,blockquote,i,li,pre,u,ul,p

Receber mensagens dessa discussão

HTML é permitido: a,b,br,blockquote,i,li,pre,u,ul,p

Receber mensagens dessa discussão

1 Dê sua opinião

Faça seu login para melhorar sua experiência com o InfoQ e ter acesso a funcionalidades exclusivas


Esqueci minha senha

Follow

Siga seus tópicos e editores favoritos

Acompanhe e seja notificados sobre as mais importantes novidades do mundo do desenvolvimento de software.

Like

Mais interação, mais personalização

Crie seu próprio feed de novidades escolhendo os tópicos e pessoas que você gostaria de acompanhar.

Notifications

Fique por dentro das novidades!

Configure as notificações e acompanhe as novidades relacionada a tópicos, conteúdos e pessoas de seu interesse

BT