Com o passar dos anos e evolução da tecnologia, softwares grandes e essenciais para a operação vão se tornando obsoletos. Surge então o desafio de se modernizar e se manter relevante em um mercado cada vez mais digital e com grande apetite por inovação.
De uma lado, há as estratégias de modernização baseada na ideia óbvia de reescrever do zero as mesmas aplicações em uma tecnologia mais atual. Do outro, há as abordagens mais sofisticadas de estrangulamento de legado baseado em quebras de microsserviços que permitem uma evolução incremental. Entre os extremos, há diversas variações de caminhos que precisam ser criteriosamente ponderados pelas lideranças de tecnologia para atender ao que o negócio realmente precisa.
Microsserviços como arquitetura para modernização
Microsserviços se trata de um estilo arquitetural que preconiza o desenvolvimento de aplicações com serviços pequenos que são desenvolvidos, mantidos, evoluídos, colocados em produção e operados de maneira independente.
É uma abordagem particularmente interessante para projetos de modernização, pois permite construir soluções novas de forma incremental e em harmonia com a solução legada, porém para alcançar esse fim há um aumento considerável da complexidade técnica do software.
É possível diminuir significativamente a complexidade técnica adequando a granularidade dos serviços que serão construídos. Se em vez de microsserviços, abrirmos a possibilidade para desenvolver uma arquitetura baseada em serviços (não tão micros), minimizamos a necessidade de lidar com brokers de mensageria, consistência eventual, testes integrados sofisticados e outras dificuldades de se construir e manter aplicações distribuídas.
Um outro ponto a ser levado em consideração é o tamanho do time, pois uma arquitetura baseada em microsserviços gera sinergia com uma estrutura organizacional que reflita as características dessa arquitetura, com partes independentes, fronteiras bem definidas e objetivos de negócio claros. Times monolíticos tendem a não produzir microsserviços, mas sistemas monolíticos com características distribuídas.
Qual o melhor modelo arquitetural para modernização?
Os objetivos de negócio, atributos de qualidade e restrições do projeto devem guiar as decisões para a modernização tecnológica. Se, por exemplo, os atributos de qualidade evidenciam a necessidade de escalar partes independentes e tê-las mantidas por diferentes times, então há um indício para fragmentar a aplicação em mais serviços. Por outro lado, se há uma restrição no tamanho e estrutura do time, então é provável que faça mais sentido uma aplicação monolítica ou baseada em serviços maiores.
Não existe uma resposta simples para definir o melhor estilo arquitetural para suportar as estratégias de modernização. Porém, caminhos muito complexos tem se mostrado comumente desnecessários quando se analisa o que realmente é importante para o negócio. Para evitar estratégias demasiadamente complexas ou simplistas demais, o mapeamento adequado dos objetivos arquiteturais no início do processo de modernização tem se mostrado o melhor antídoto para não incorrer em decisões motivadas apenas pela popularidade do estilo arquitetural.