Em uma empresa anterior, o chefe de engenharia e os principais engenheiros decidiram dividir nosso aplicativo Ruby on Rails em uma malha de microsserviços Go.
Eles criaram documentos de design e diagramas de arquitetura muito detalhados. Eles fizeram de tudo e usaram Kubernetes, gRPC, modelos de serviço, toda a coisa.
Toda a liderança sênior de engenharia veio da Amazon, onde eles estavam acostumados com cada equipe possuindo um serviço distinto. Eles tentaram aplicar esse modelo diretamente. Mas nossos problemas eram com a propriedade do código e a modelagem de domínio ruim.
Todo o aplicativo poderia ter sido executado em apenas algumas instâncias do EC2.
Qual foi o resultado?
Cinco anos depois, 70% do aplicativo ainda está rodando no monólito Ruby on Rails. Nunca concluiu a migração. Mas agora eles têm que manter dois sistemas.
Nenhuma das lideranças originais trabalha mais lá.