Numa empresa anterior, o chefe de engenharia e os engenheiros principais decidiram dividir a nossa aplicação Ruby on Rails numa malha de microserviços em Go.
Eles criaram documentos de design e diagramas de arquitetura muito detalhados. Eles foram a fundo e usaram Kubernetes, gRPC, templates de serviço, tudo.
Toda a liderança sénior de engenharia veio da Amazon, onde estavam habituados a que cada equipa fosse responsável por um serviço distinto. Eles tentaram aplicar esse modelo diretamente. Mas os nossos problemas estavam na propriedade do código e na modelagem de domínio deficiente.
Toda a aplicação poderia ter funcionado apenas em um punhado de instâncias EC2.
Qual foi o resultado?
Cinco anos depois, 70% da aplicação ainda está a funcionar no monólito Ruby on Rails. Nunca completaram a migração. Mas agora têm que manter dois sistemas.
Nenhum dos líderes originais trabalha lá ainda.