Quando entrei para o Grupo RUA, em 2020, com o desafio de liderar a área de Tecnologia, a primeira coisa que fizemos foi uma análise do estado geral das áreas de tecnologia na empresa em todos os níveis, com o objetivo de entender todas as oportunidades de melhoria e os riscos que precisávamos abordar primeiro.
Algo que deve ser destacado durante uma análise desse tipo é a necessidade intrínseca de uma participação ativa dos colaboradores, que são, afinal de contas, aqueles que vivenciam o fornecimento de valor das áreas de TI no dia a dia. Também é importante considerar o custo/dificuldade que a dívida técnica impõe à equipe de desenvolvimento.
Um dos principais desafios que identificamos para um dos nossos principais produtos, que pretendíamos internacionalizar e escalar, era o de desacoplar ou decompor toda a lógica de negócios de uma API monolítica (um único repositório de código com todas as responsabilidades centralizadas) para uma arquitetura de microserviços, onde cada um desses conhecesse e fosse responsável por uma pequena parte do negócio. Ou seja, um microserviço específico para autenticação (SignUp, SignIn, logins, etc.), outro para gerenciamento de conteúdo (fotos, banners, etc.), outro para lógica de cupons de desconto e assim por diante.
A forma como esses componentes funcionam geralmente ocorre por meio da “orquestração” a partir de um componente específico (como uma API) que faz solicitações a diferentes microserviços.
O que se busca alcançar com essa arquitetura são “pequenos” componentes interagindo entre si e/ou com outros componentes, cada um autônomo e especializado na execução de seus próprios processos relacionados a um problema, serviço ou funcionalidade específica, sem deixar de fazer parte da lógica geral do negócio, tornando-o mais fácil de manter, com várias vantagens:
- Escalabilidade independente: cada microserviço pode ser mantido e/ou melhorado de forma independente do restante do produto, minimizando riscos durante implantações.
- Elasticidade: é relativamente simples criar mais instâncias desses microserviços em momentos de pico de demanda.
- Agilidade no desenvolvimento: incorporação de pequenas melhorias e adição de valor em iterações de tempo limitado.
- Independência tecnológica: embora cada MS interaja com outros componentes, eles podem usar tecnologias ou linguagens diferentes de acordo com suas características. Alguns requerem tecnologias mais robustas do que outros, diferentes bancos de dados, etc.
- Reutilização de código: lógicas são reutilizadas, evitando reescrever múltiplas vezes a mesma funcionalidade, como um microserviço de autenticação, responsável por todos os registros e acessos.
- Implantação e entrega contínua: os tempos de implantação são muito menores e os erros podem ser revertidos facilmente, permitindo “rollbacks” rápidos, o que ajuda na experimentação e aprendizado.
Tudo isso é algo que avançamos no Grupo RUA e continuaremos trabalhando sempre que uma unidade de negócios exigir novas funcionalidades ou melhorias na lógica atual.
É importante esclarecer que nem tudo é perfeito nessa arquitetura, ela tem seus desafios:
- Aumenta a complexidade do sistema que está sendo desacoplado.
- Exige esforço adicional em termos de monitoramento e gerenciamento de erros.
- Requer mais recursos: hardware físico ou virtual (nuvem ou híbrido/nuvem).
- Novas funções, como DevOps, responsáveis pelo fornecimento, implantação e lançamento contínuo, se tornam essenciais.
- Implementação de novas filosofias e metodologias de trabalho.
Em conclusão, para alcançar o objetivo de um produto escalável e internacional, com capacidade de resposta às mudanças, sustentável e com a capacidade de crescer de forma ágil, toda a empresa deve passar por mudanças enfrentando grandes desafios. É necessário sair da zona de conforto, aprender novas metodologias e tecnologias, modificar fluxos de trabalho, ajustar funções e responsabilidades, etc.
Na minha perspectiva, o esforço vale a pena, pois permite que aqueles apaixonados por tecnologia e negócios construam estruturas e equipes de alto desempenho que, com a tecnologia como aliada, gerem impacto nos negócios e nos clientes (internos ou externos) com valor agregado a curto prazo.