Acalmem-se todos. Respire fundo e então caminharemos lentamente para o meio da guerra entre microsserviços e monólitos que está acontecendo na Internet.
A Amazon publicou recentemente um estudo de caso documentando sua decisão de abandonar microsserviços e adotar monólitos, citando uma redução de 90% nos custos. Esse estudo de caso fez a Internet explodir com comentários e tuítes sarcásticos , enquanto os microsserviços eram colocados no ringue de boxe técnico com os monólitos.
Para aqueles que sentem que estão sofrendo um caso grave de déjà vu técnico, vocês não estão errados. Esta é a mesma situação em que a arquitetura orientada a serviços (SOA) se encontrava por volta de 2009, quando Anne Thomas Manes declarou sua morte . O link leva a um comentário de David Linthicum sobre a postagem de Manes porque o original parece ter sido engolido pela Internet.
Agora, Manes estava sendo hiperbólico e um tanto sarcástico porque, como bem sabemos, a arquitetura orientada a serviços não morreu. Ele foi ressuscitado rapidamente como microsserviços e, pela lamentação da Internet, os designers ainda não aprenderam o quão grande é o papel que “a rede” desempenha no desempenho.
SOA ‘morreu’ por dois motivos:
Podemos ter superado o primeiro desafio, mas e o segundo? A única resposta para a segunda questão foi e continua sendo um equilíbrio delicado entre a granularidade do design do serviço e uma boa compreensão do tempo que leva para transferir dados entre os serviços.
A transferência de dados não é gratuita. Leva tempo. Não existe “custo zero” quando se trata de comunicações entre serviços. Há o tempo que leva para colocar um pacote na rede, depois transferi-lo, retirá-lo do pacote e, finalmente, processá-lo. E não se esqueça de que as comunicações de transporte também levam tempo. Abrir sockets e aceitar solicitações também não é gratuito, assim como o tempo que leva para serializar e desserializar cargas úteis em algo que o serviço possa processar.
Agora, multiplique esse custo total pelo número de serviços que você está tentando usar.
Quanto mais granular for o design do seu sistema, mais tempo levará para processar uma solicitação. Em outras palavras, o tempo total para processar uma solicitação depende do número de serviços pelos quais a solicitação deve passar.
Maior granularidade? Maior tempo de processamento. Mais serviços? Maior congestionamento na rede, o que aumenta o tempo de processamento, pois as placas de rede e os dispositivos tentam colocar os pacotes em ordem e exigem retransmissão.
Então, assim como SOA, os microsserviços podem e irão sofrer com padrões de design que dependem de muita granularidade.
A Amazon escolheu um monólito para substituir seus microsserviços. Isso significa que, para seu caso de uso, uma arquitetura monolítica era a melhor opção. Isso significa que os microsserviços estão mortos?
Não. Em vez disso, deveríamos retirar dois pontos-chave:
Arquiteturas de aplicativos não são boas nem ruins, nem são apropriadas para todos os casos de uso. As organizações precisam dar um passo para trás e considerar cuidadosamente o que estão tentando alcançar e qual arquitetura pode atender melhor a essa necessidade, em vez de escolher a arquitetura mais "moderna" porque, bem, está na moda.
Quando dizemos que o futuro é a TI híbrida, queremos dizer mais do que apenas uma mistura de implantações multinuvem e locais. Também queremos dizer que o portfólio de aplicativos empresariais permanecerá híbrido — uma mistura de tradicional e moderno — no futuro próximo. É por isso que o portfólio F5 continua a oferecer suporte a todos os aplicativos, sejam eles locais ou na nuvem pública, ou ambos.