As diferenças entre a arquitetura monolítica e microsserviços são diversas e complexas. Cada uma oferece benefícios exclusivos, e não é possível afirmar que nenhuma delas é superior.
A abordagem monolítica é o modelo de software tradicional. Os microsserviços refletem mais tarde desenvolvimento de software, mas isso não tornou a arquitetura monolítica obsoleta.
Digamos que você tenha começado a trabalhar para uma startup de tecnologia e tenha sido encarregado de implementar um plano de TI para a nova empresa. Você enfrenta uma série de decisões, mas nenhuma é tão básica ou tão abrangente quanto optar por uma arquitetura monolítica ou de microsserviços. A escolha da arquitetura de software não deve ser feita no vácuo ou sem uma compreensão clara das necessidades iniciais e eventuais de processamento de dados da sua organização, pois qualquer abordagem de arquitetura escolhida terá efeitos profundos na capacidade da organização de executar de forma significativa seus objetivos de negócios.
Portanto, os riscos aqui são consideráveis. E como você é o recém-nomeado Diretor de TI, esta também é uma decisão importante para você pessoalmente — uma decisão que pode levá-lo a um caminho dourado de avanço na carreira sem precedentes, se você escolher sabiamente.
Qual você seleciona? Primeiro, vamos conhecer suas opções.
Como indicado, a arquitetura monolítica é o modelo tradicional de desenvolvimento de software. Nela, uma base de código realiza múltiplas funções (ou seja, funções de negócios). O kernel do computador controla todas as funções. Em aplicações monolíticas, todo o código necessário para essa aplicação inteira é mantido em um local central.
As aplicações monolíticas geralmente contêm os seguintes componentes:
O uso da arquitetura monolítica gera inúmeros benefícios:
O uso da arquitetura monolítica também apresenta possíveis problemas:
O outro modelo de desenvolvimento de software — microsserviços — é um estilo arquitetônico nativo da nuvem. Com os microsserviços, uma aplicação é baseada em múltiplos componentes ou serviços individuais e fracamente acoplados. As aplicações de microsserviços têm sua própria stack de tecnologia, que é uma coleção de tecnologias que trabalham juntas para realizar um determinado trabalho.
A principal vantagem dos microsserviços é como o sistema pode ser facilmente atualizado para lidar com novos recursos de negócios dentro da aplicação sem afetar todo o sistema. Isso pode se traduzir em grandes economias de tempo e mão de obra.
As vantagens dos microsserviços são inúmeras. Eles acomodam tanto o crescimento constante dos negócios quanto as novas mudanças tecnológicas:
Os microsserviços oferecem benefícios definidos, mas a complexidade deles cria certos problemas:
Antes de nossa comparação direta da arquitetura monolítica e da arquitetura de microsserviços, devemos detalhar a história com alguns detalhes históricos para fornecer um contexto mais amplo.
De certa forma, é difícil rastrear a origem da arquitetura monolítica até uma única data; quanto mais complicada a tecnologia, mais difícil pode ser identificar a entrega exata dessa tecnologia. O mesmo acontece com as arquiteturas monolíticas, que começaram a ser desenvolvidas por volta do meio do século XX.
A International Business Machines (IBM®) foi um dos principais players nesse desenvolvimento inicial crítico. De acordo com Pier-Jean Malandrino, colaborador da DZone, "... empresas como a IBM foram fundamentais na definição da arquitetura inicial de software por meio do desenvolvimento de computadores mainframe nas décadas de 1960 e 1970."1
As arquiteturas monolíticas não eram perfeitas — elas eram muitas vezes escritas em linguagens ultrabaseadas e destinadas a serem lidas por uma única máquina. Como apenas uma máquina continha todo o sistema, todos os componentes do computador estavam fortemente acoplados. O dimensionamento era inexistente ou pouco possível, geralmente exigindo a reconstrução completa de um sistema.
Alternativamente, se a arquitetura monolítica parece primitiva em retrospectiva, é em parte porque estava lá primeiro, antes de qualquer outro sistema de arquitetura de software. E ele se mostrou consistentemente útil, até mesmo resiliente, ao longo do tempo. O fato de que arquiteturas monolíticas ainda estão sendo usadas sete décadas após sua introdução diz muito em um setor em que a única coisa que geralmente permanece é a mudança incessante.
A arquitetura monolítica resistiu, mas não é mais a única ameaça, pelo menos há algum tempo. Com o avançar da década de 1980, a engenharia de software experimentou um impulso em direção à modularidade e ao uso de linguagens de programação orientadas a objetos. Na década de 1990, o cenário havia sido montado para sistemas distribuídos que poderiam aproveitar os recentes avanços na computação em rede.
Isso acabou levando ao desenvolvimento de microsserviços, que passaram a ser amplamente utilizados após o início da computação em nuvem e das tecnologias de conteinerização na década de 2000. A arquitetura de microsserviços foi criada para melhorar o modelo monolítico, preparando-o para sistemas descentralizados e de rápida escalabilidade.
Agora, na década de 2020, o desenvolvimento de software gira em torno da arquitetura monolítica ou da arquitetura de microsserviços. Com base no que esperamos das mudanças tecnológicas, nosso pensamento inicial pode ser assumir que a tecnologia que chegou mais recentemente é superior e, em algumas circunstâncias, esse é definitivamente o caso.
No entanto, fazer esse tipo de declaração genérica é perigoso, em grande parte porque simplesmente não é verdade. Ainda há inúmeras situações de computação que têm benefício da simplicidade do modelo de arquitetura monolítica.
Ambas as arquiteturas de software têm suas vantagens e desvantagens, e as empresas precisam avaliar cuidadosamente ambos os tipos e considerar suas necessidades projetadas de desenvolvimento de aplicações antes de adotar um sistema ou outro.
Como a arquitetura monolítica e a arquitetura de microsserviços se comparam quando vistas através do prisma dos principais estágios operacionais?
Existe uma oferta quase ilimitada de casos de uso que pode ser alcançada usando uma arquitetura monolítica ou uma arquitetura de microsserviços. Aqui estão algumas das mais predominantes.
Qualquer implementação em grande escala de arquitetura monolítica ou arquitetura de microsserviços será inevitavelmente mal orientada se seu projeto for concluído em um vácuo efetivo, sem primeiro considerar a parte mais importante da equação: as necessidades específicas de sua startup de tecnologia.
Como Diretor de TI, esta é a atividade mais crítica ao planejar suas decisões de infraestrutura de software. Saber quando usar um estilo arquitetônico é essencial, assim como entender o sistema mais adequado com base nos usos necessários.
O exercício de autoanálise é muito valioso porque é sua função não só selecionar o sistema arquitetônico ideal para sua organização, mas também estimar com precisão o sistema arquitetônico que sua empresa precisará nos próximos meses e anos. De certa forma, você está sendo encarregado da tarefa de prever o futuro.
Portanto, embora uma arquitetura monolítica possa parecer a ideal para a sua startup, cabe a você projetar o crescimento futuro. E se uma expansão desenfreada é esperada, pode ser mais sensato investir em uma arquitetura de microsserviços. Há inúmeras variáveis a serem consideradas:
Todos os links são externos a ibm.com.
1 “Evolution of Software Architecture: From Monoliths to Microservices and Beyond,” Pier-Jean Malandrino, DZone, 11 de novembro de 2023.
2 “Retail e-commerce sales worldwide from 2014 to 2027,” Statista, maio de 2024
Um serviço de locatário único, totalmente gerenciado, para desenvolver e entregar aplicações Java.
Utilize softwares e ferramentas de DevOps para desenvolver, implementar e gerenciar aplicações nativas da nuvem em diversos dispositivos e ambientes.
Com o desenvolvimento de aplicações na nuvem você só constrói uma única vez, itera rapidamente e implementa em qualquer lugar.