Microservices, Kubernetes, etc. Apenas valide seu MVP!
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!
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.
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.
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.
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.
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!