O que é uma aplicação monolítica?
Uma aplicação monolítica combina as camadas de interface do usuário e de acesso a dados de vários recursos em uma única aplicação. Normalmente, uma aplicação monolítica consiste em uma única base de código, modificada por várias equipes de uma organização e implantada como uma única unidade que contém todas as funcionalidades mantidas por essas equipes.
Aplicações monolíticas muitas vezes podem ser mais fáceis de desenvolver e implantar graças à forte integração entre seus componentes. No entanto, à medida que o escopo da aplicação e as exigências de desempenho aumentam, um monólito pode se tornar difícil de manter e escalar.
Exemplos de arquiteturas de aplicações monolíticas
Os sistemas monolíticos podem ser uma boa opção para aplicações menores e menos complexas, que não precisam escalar rapidamente nem passar por manutenção frequente. Veja abaixo alguns exemplos de aplicações que geralmente têm bases monolíticas (embora suas funcionalidades mais recentes possam se basear em uma infraestrutura mais conteinerizada).
- Plataformas de e-commerce – Aplicações monolíticas são comuns no comércio eletrônico porque, depois que a infraestrutura é configurada (criação da loja virtual, processamento de pedidos, processamento de pagamentos e atendimento ao cliente), a arquitetura requer pouquíssimas atualizações.
- Sistemas de gerenciamento de conteúdo (CMS) – Este verbete do glossário foi criado graças a uma aplicação monolítica (WordPress). Quando implantadas, as aplicações de CMS contêm todas as funcionalidades necessárias para gerenciar conteúdo na forma de páginas da web.
- Sistemas bancários – Muitos sistemas financeiros são desenvolvidos como aplicações monolíticas porque os pontos de entrada são limitados, o que os torna mais seguros. Além disso, após a implantação, a base de código contém todas as funcionalidades que um consumidor espera de uma experiência de banco on-line: gerenciamento de transações financeiras, processamento de pagamentos e rastreamento.
Vantagens de uma arquitetura monolítica
Embora alguns aspectos das arquiteturas monolíticas tenham se tornado obsoletos, elas ainda atendem a muitas finalidades e apresentam características positivas.
Algumas vantagens dos monólitos incluem:
- Simplicidade – A arquitetura centralizada torna os monólitos mais fáceis de desenvolver, implantar e manter em comparação com arquiteturas mais complexas, como arquiteturas de microsserviços.
- Testes mais rápidos – Ao integrar todos os componentes em um único programa, uma aplicação monolítica pode ser rapidamente testada como um todo. Ao contrário das arquiteturas compostas por vários componentes menores (por exemplo, microsserviços), não são necessários testes adicionais para protocolos de comunicação complexos nem para vários repositórios de código.
- Segurança – Com menos pontos de entrada para agentes mal-intencionados, os monólitos geralmente são mais fáceis de proteger. Também é mais fácil aplicar protocolos de segurança em uma única aplicação do que gerenciar várias configurações de segurança.
- Custo – Implantados como uma única unidade, os monólitos eliminam os custos adicionais associados à implantação e à proteção de protocolos de comunicação adicionais, à criação de mais infraestrutura de conectividade e à contratação de profissionais com habilidades e treinamento mais especializados.
Desvantagens de uma arquitetura monolítica
Embora a natureza singular dos monólitos tenha suas vantagens, ela também pode causar problemas.
Algumas desvantagens dos monólitos incluem:
- Aumento gradual da complexidade – Com o tempo, o crescimento de uma aplicação e a adição de funcionalidades podem tornar uma arquitetura monolítica maior e mais complexa. Essa expansão aumenta o risco de uma atualização comprometer a base de código única que mantém todo o programa funcionando corretamente.
- Falta de escalabilidade – Quando um recurso ou uma área da aplicação precisa ser dimensionado horizontalmente, toda a aplicação de grande porte (incluindo subsistemas que não exigem recursos adicionais) precisa ser dimensionada. Isso pode tornar o dimensionamento mais lento, pois as implantações demoram mais, além de aumentar os custos, já que cada instância exigirá mais recursos de hardware para ser executada em comparação com microsserviços.
- Resiliência – Em uma arquitetura monolítica, todos os componentes da aplicação são fortemente interligados e executados a partir de uma base de código centralizada. Portanto, se um deles falhar, toda a aplicação poderá ficar indisponível.
- Reimplantação completa – Com uma única base de código representando toda a aplicação, um monólito exige uma reimplantação completa sempre que um único componente é alterado ou atualizado.
- Pilha de tecnologia – Como os desenvolvedores precisam garantir que todas as ferramentas ou linguagens utilizadas sejam compatíveis com o monólito, as opções são limitadas. Além disso, muitas aplicações monolíticas são desenvolvidas de maneiras que não são totalmente compatíveis com tecnologias mais recentes e eficientes, como computação em nuvem e conteinerização.
- Desenvolvimento mais lento – Quando várias equipes de desenvolvimento trabalham em uma única e extensa base de código, é preciso ter extremo cuidado para garantir que as interfaces e os limites dos domínios sejam respeitados e mantidos. Às vezes, o código pode introduzir um acoplamento complexo, fazendo com que as dependências entre equipes atrasem o desenvolvimento de novos recursos ou a correção de problemas críticos.
O que é uma arquitetura de microsserviços?
Em contraste com a arquitetura monolítica, existe a arquitetura de microsserviços. Microsserviços são uma abordagem de arquitetura de software que cria uma aplicação grande e complexa a partir de pequenos componentes. Cada um desses componentes pode desempenhar uma única função (por exemplo, autenticação, notificação ou processamento de pagamentos) ou funcionar em conjunto dentro de um monólito. “Microsserviços” (ou apenas “serviços”) também é o termo usado para designar esses pequenos componentes.
Enquanto os aplicativos monolíticos são fortemente acoplados (o que significa que seus componentes estão interconectados), um aplicativo de microsserviços é distribuído (o que significa que seus componentes podem funcionar de forma independente). À medida que os aplicativos se tornam maiores e mais complexos, muitas organizações consideram migrar de arquiteturas monolíticas ou desenvolver novos aplicativos no formato de microsserviços.
A NGINX tem orgulho de oferecer os seguintes recursos educacionais gratuitos para quem está explorando arquiteturas monolíticas e de microsserviços

