Microservices, Clean Architecture, Kubernetes... Esqueça isso e valide seu MVP!
Tags: programming, braziliandevs, business, productivity
Published: 2021-12-24 02:12:36


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/l4wji1tu8sotlxamsnhe.jpeg)
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!

> Hey, eu atualizei esta postagem no [meu blog pessoal, veja agora!](https://www.tuliocalil.com.br/post/microservices-clean-architecture-kubernetes-esqueca-isso-e-valide-seu-mvp)!

![Kubernetes](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/pook4hqs8nqnc5uaf47q.png)
 
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](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/fehwvlldj1okzj887nju.png)

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](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/27u1bxfyei7psyvokpek.png)

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](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/6mc30gfxckqbuqq5sy6w.png)
 
**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](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/v3q3crm7s0tmrttm2gcs.png)

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!