Nos dias hoje, cada vez mais, precisamos criar condições para que possamos inovar rápido, ter times mais produtivos, garantir disponibilidade e oferecer flexibilidade para nossos clientes. Para conseguir isso, o Monolítico (aplicações monolíticas) está sendo cada vez mais substituído por Microsserviços.
Claro que existe um grande hype em torno dessa ideia de microsserviços, e por isso, não necessariamente todas as aplicações do mundo precisam ser reescritas para continuarem fazendo sentido e agregando valor de negócio.
É preciso que você como profissional de tecnologia, busque a maturidade necessária para entender o valor que um migração como essa efetivamente vai trazer para sua companhia e para os clientes que vocês atendem.
Além disso, é importante entender os novos custos tanto em termos da equipe de desenvolvimento, o custo de oportunidade de estar fazendo isso em vez de fazer outra coisa, e o custo de infra-estrutura que dependendo da situação pode ser drasticamente reduzido, mas em certos casos também pode aumentar.
Recentemente, a empresa CommerceTools criou um guia de migração do Monolítico para Microsserviços com alguns pontos interessantes que gostaria de compartilhar com você aqui, com algumas adaptações.
Guia de Migração de Monolítico para Microsserviços
Entenda a solução atual
Faça um inventário das funcionalidades, entenda as histórias de usuário que o software atende, os processos que rodam em background, etc.
Documente tudo isso.
Defina Prioridades
Identifique quais processos são mais importantes, e quais devem ser migrados primeiro e quais depois.
Faça isso com a perspectiva do que trará maiores ganhos de negócio.
Não reinvente a roda
Muitas das funcionalidades que você identificou na sua lista, podem não precisar ser desenvolvidas por sua equipe.
Por exemplo, se você precisa de um serviços de autenticação, considere usar o AWS Cognito, ou a Auth0, por exemplo.
Se você precisa de um serviço cadastro de produtos, considere um usar um Product Information Management (PIM).
Evite fazer coisas que não precisa, foque em criar o que realmente vai fazer diferença para o seu negócio!
Forme Equipes
Certifique-se de distribuir os microsserviços a serem criados em equipes pequenas, cross-funcionais, e multi-funcionais que, idealmente, tomem conta do ciclo de vida da aplicação, desde a concepção até o deploy, e o monitoramento.
Evite criar times muito grandes (com mais de 10 pessoas), e evite criar times por função (time de desenvolvedores, time de testadores, time de designers, etc.).
Crie times que com pessoas com as habilidades necessárias para realizar todas as atividades necessárias para entrega do microsserviço.
Quebrando o Monolítico Na Prática
Para ver isso acontecendo na prática, veja essa palestra de como a Fender fez para migrar seu e-commerce de uma arquitetura monolítica para uma arquitetura de microsserviços na AWS.
Case Fender antes e depois