DEV Community

Tulio Calil
Tulio Calil

Posted on • Updated on

Microservices, Clean Architecture, Kubernetes... Esqueça isso e valide seu MVP!

Image description
Você teve uma ideia incrível, fez protótipo, fez plano de negocio e agora finalmente vai tirar do papel um MVP funcional e ta em duvida de qual nuvem escolher, se o melhor gerenciador de container é o Kubernetes ou Docker Swarm e outros questionamentos parecidos, pare agora!

Kubernetes

Se você precisa apenas validar antes de investir de forma mais pesada, faça rápido e com o menor custo e complexidade que poder.
Isso vai te ajudar a focar no que realmente importa: o Negocio.

  • Mas a parte tecnica não importa ?

Claro que importa, e muito, porém precisamos entender o quanto de esforço e complexidade podemos empregar a um projeto que possivelmente não vai ser a versão final, que talvez seja até refeito por outra equipe e que tem um intuito de validação no primeiro momento.

Uma visão de contexto da solução é algo super interessante para um MVP por exemplo, mas um diagrama de sequencia e um documento C4 Model a nível de componentes talvez seja dispensável, tendo em vista que esse mesmo esforço poderia ir para uma avaliação de ferramenta ou implementação de alguma funcionalidade.

C4 Model

Ao invés de gastar horas arquitetando e resolvendo problemas de uma infra com microserviços, modelando diversos bancos (ou não, você vai pensar sobre isso também), orquestração de containers e outras infinidade de coisas hype (totalmente necessárias no momento certo), simplesmente inicie um monólito full MVC ou separe em Back e Front, use um boilerplate e/ou template da stack favorita do time (ou sua), temos milhares de frameworks que ajudam muito para tirarmos um MVP do papel de uma forma super rápida e robusta, use e abuse.

  • Mas e o futuro, e quando meu MVP der certo e eu precisar escalar e ele começar a gargalar ? Se eu tivesse criado ja pronto para isso, teria ganhando muito tempo.

The future is now

Essa é uma hipótese, seu negocio ter dado super certo a ponto de começar a ter problemas de performance é uma ótima noticia afinal.
O que eu sugiro nesse caso é simplesmente: escalar!
Faça escala vertical, adicionando mais recursos e se possível tente uma escala horizontal. Isso vai te dar tempo e até recurso suficiente para repensar sua aplicação.
Sua ideia esta validada e rodando, você já conhece os problemas, seu publico alvo, media de acessos e outros comportamentos que irão servir de insumo para a sua super aplicação novinha, com modelo C4 em vários níveis, microserviços pra dar e vender e outras coisas a mais.
Você acha loucura refazer tudo ? Que ja deveria ter nascido para durar por anos sem a necessidade de intervenções ?
Bem, esse é um pensamento estranho.
Além das coisas mudarem cada vez mais rápido, você deve fugir de uma arquitetura prematura. Se preocupe com o problema real e eminente, não sofra por antecedência.

Outra hipótese é se o seu MVP falhar. Não é algo que queremos pensar, mas vamos considerar. Vamos imaginar que ele não dê totalmente errado, mas que durante a validação da ideia inicial não tenha dado resultados esperados e você tenha tido um estalo de uma outra ideia que pode fazer você "salvar a operação". Obviamente vai depender de pra onde você esta indo agora, mas imagine quanto vai custar (tempo, esforço e dinheiro) essa reviravolta em uma infra grande e complexa e pense o mesmo em algo mais simples.

Pivotar ideia

Uma grande observação aqui é: Não deixe de empregar as melhores praticas no projeto. Seja de código, segurança, infra e o outras coisas mais.
Apenas não deixe-o complexo sem necessidade.

Codigo ruim

Essa é uma reflexão com base em minhas experiencias que quis compartilhar e não uma verdade absoluta. Seu projeto pode não se encaixar nisso tudo e pra você seja melhor o contrario do que eu disse.
Mas e o que você acha ? Comente!

Discussion (0)