Microservices, Kubernetes, etc. Apenas valide seu MVP!
![Microservices, Kubernetes, etc. Apenas valide seu MVP!](/content/images/size/w2000/2022/12/l4wji1tu8sotlxamsnhe_9ced881c3f.jpeg)
Você teve uma ideia incrível, fez protótipo, fez plano de negócio e agora finalmente vai tirar do papel um MVP funcional e ta em dúvida de qual nuvem escolher, se o melhor gerenciador de container é o Kubernetes ou Docker Swarm e outros questionamentos parecidos, pare agora!
![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 Negócio.
- Mas a parte técnica 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 sequência 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 negócio ter dado super certo a ponto de começar a ter problemas de performance é uma ótima notícia 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 está validada e rodando, você já conhece os problemas, seu público 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ê está 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 práticas no projeto. Seja de código, segurança, infra e o outras coisas mais.
Apenas não o deixe 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 contrário do que eu disse.
Mas e o que você acha? Comente!