O que é arquitetura monolítica?

Engenheiros de software trabalhando em projeto e programação para encontrar solução para o problema

Autores

Phill Powell

Staff Writer

IBM Think

Ian Smalley

Staff Editor

IBM Think

O que é arquitetura monolítica?

Arquitetura monolítica é um modelo tradicional de desenvolvimento de software no qual uma única base de código executa várias funções de negócios. Em um sistema operacional monolítico, o kernel direciona toda a funcionalidade. A arquitetura monolítica é frequentemente comparada com microsserviços, que prestam serviços semelhantes, mas empregam uma arquitetura diferente.

Uma maneira de pensar na arquitetura monolítica é visualizar o outro significado do termo. Ao considerar o projeto de edifícios reais, nos referimos à arquitetura monolítica para descrever estruturas que são talhadas em formações rochosas maciças. Um significado associado da palavra central "monólito" está relacionado ao fato de que sua substância é inteira de uma só peça, tornando sua composição completamente uniforme. Vários edifícios coligados podem ser criados a partir de uma formação — todos eles compartilhando a mesma base de rocha.

Essa analogia se traduz bem em nossa discussão sobre engenharia de software. Dentro desse contexto, uma arquitetura monolítica cumpre as funções de negócios (ou seja, cria diferentes edifícios) que variam, mas compartilham uma única base de código (ou base de rocha).

Durante décadas, a arquitetura monolítica dominou completamente o desenvolvimento de software como seu modelo de software tradicional. Agora, no entanto, qualquer discussão relevante sobre a arquitetura monolítica deve contemplar sua grande alternativa, os microsserviços, que estão sendo usados em número cada vez maior.

Como funciona a arquitetura monolítica?

No software monolítico, todo o código necessário para uma aplicação é mantido em um local central. Isso proporciona um benefício adicional de simplificação para os desenvolvedores, pois o sistema está preparado para aceitar apenas comunicações em um formato. O sistema não tem o ônus de traduzir as comunicações de diferentes serviços. Isso facilita a execução de processos de desenvolvimento como DevOps.

Componentes da arquitetura monolítica

As aplicações monolíticas geralmente contêm os seguintes componentes:

  • Interface do usuário (IU) do lado do cliente: neste contexto, "lado do cliente" está associado ao que é exibido no dispositivo de computação do usuário. A IU gerencia o que é visto pelo usuário, incluindo imagens, texto e qualquer outra coisa que possa ser transmitida pela tela da IU, como informações relacionadas às ações do navegador.
  • Aplicação do lado do servidor: uma aplicação do lado do servidor lida de alguma forma com os recursos do servidor, com acesso aos recursos do servidor, como memória, CPU e armazenamento.

Vantagens da arquitetura monolítica

Examinando a arquitetura monolítica com mais detalhes, podemos ver que ela oferece várias vantagens significativas:

  • Desenvolvimento de aplicações mais fácil: aplicações construídas com uma base de código são mais fáceis de construir.
  • Implementação simples: a arquitetura monolítica funciona com um único arquivo executável ou diretório, o que facilita a implementação. Além disso, uma arquitetura monolítica é mais fácil de manter porque usa menos componentes.
  • Depuração sem complicações: as operações de teste e depuração são consideravelmente menos intensivas com arquiteturas monolíticas. Essas operações de teste de ponta a ponta podem ser executadas a partir de um sistema de registro central.
  • Maior segurança: como uma arquitetura monolítica é um sistema fechado, suas atividades de processamento de dados são totalmente contidas e, portanto, mais protegidas contra ameaças cibernéticas.

Desvantagens da arquitetura monolítica

Com o uso da arquitetura monolítica, vemos que o que parece ser um ponto forte (sua rigidez) também pode ser visto como uma fraqueza:

  • Resistência a novas tecnologias: como as aplicações monolíticas normalmente estão fortemente acopladas, pode ser difícil integrar novas tecnologias a elas. Na verdade, o que geralmente acontece é que a aplicação monolítica precisa ser completamente reestruturada para aceitar a nova adição.
  • Escalabilidade reduzida: a escalabilidade é o maior desafio que as arquiteturas monolíticas enfrentam. Mesmo que a quantidade de dimensionamento necessária seja relativamente pequena (como ajustar uma única função), talvez seja necessário desmontar efetivamente o sistema e reconstruí-lo para que ele reflita a nova mudança. Isso pode ser demorado e trabalhoso.
Vista aérea de rodovias com trânsito

Fique por dentro da nuvem 


Receba o boletim informativo semanal do Think para ver orientações especializadas sobre a otimização das configurações multinuvem na era da IA.

O que são microsserviços?

A arquitetura de microsserviços é um estilo arquitetônico nativo da nuvem em que uma aplicação é composta por inúmeros componentes ou serviços menores vagamente acoplados. As aplicações de microsserviços têm seu próprio stack de tecnologia (uma coleção de tecnologias que unem forças para realizar um determinado trabalho).

Uma das principais vantagens comerciais oferecidas pelos microsserviços é a maneira como o sistema pode ser facilmente atualizado para refletir novas partes da aplicação sem afetar a aplicação toda. Isso pode se traduzir em grandes economias de tempo e mão de obra.

Uma alternativa próxima à arquitetura de microsserviços é a arquitetura baseada em eventos (EDA), que às vezes é usada em conjunto com microsserviços. Na EDA, as mudanças de estado são representadas como eventos e são programadas dentro do sistema. A EDA oferece acoplamento vago e processamento em tempo real, tornando-a uma opção atraente.

Vantagens da arquitetura de microsserviços

Os microsserviços estão preparados para o crescimento constante e aceitam mudanças tecnológicas. Veja aqui os principais benefícios que eles proporcionam:

  • Escalabilidade imediata: os microsserviços oferecem escalabilidade significativamente maior quando comparados às arquiteturas monolíticas. Como os serviços individuais são divididos em módulos, uma instrução para escalar pode ser entregue a vários serviços simultaneamente. Além disso, os microsserviços são mais adequados para lidar com grandes aplicações.
  • Operação independente: a arquitetura de microsserviços divide cada serviço em sua própria célula de operaçōes. Ao permitir a operação independente, não há perigo de os fluxos de trabalho de um serviço se interferirem nos fluxos de trabalho de outro.

Desvantagens da arquitetura de microsserviços

Embora os microsserviços ofereçam inúmeras vantagens, sua complexidade geral está por trás de alguns dos problemas que seu uso cria:

  • Testes complicados: com os microsserviços, as operações de depuração não podem nem começar até que as várias partes de uma aplicação tenham sido totalmente testadas. Isso inclui a verificação das dependências, as atividades de cache e acesso a dados. Tudo deve funcionar e todos devem trabalhar juntos.
  • Problemas de segurança: a comunicação que ocorre entre vários processos dentro de um sistema de microsserviços usa um API gateway. Isso pode criar uma exposição à segurança quando se trata de autenticação e outros processos críticos.
  • Aumento de latência: os microsserviços são especialmente talentosos na expansão de aplicação, mas há um preço a ser pago em atraso e latência. Cada nuance de aumento de escala aumenta a complexidade e a quantidade de dados, o que pode retardar os esforços de processamento.

Arquitetura monolítica versus arquitetura de microsserviço

A chegada dos microsserviços transformou o desenvolvimento de software em uma corrida de dois cavalos entre a arquitetura de microsserviços iniciante e a abordagem tradicional monolítica da arquitetura de software.

Uma rápida olhada nessa corrida pode sugerir que os microsserviços são a arquitetura superior, uma vez que foram o desenvolvimento posterior. No entanto, essa suposição se mostraria imprudente. Ainda há inúmeras situações de computação que têm benefício da simplicidade do modelo de arquitetura monolítica.

Além disso, ambas as arquiteturas de software têm suas vantagens e desvantagens, e as organizações fariam bem em analisar ambos os tipos e considerar suas necessidades projetadas de desenvolvimento de aplicações antes de adotar um sistema ou outro.

Em termos de áreas diretas de comparação, a arquitetura monolítica e os microsserviços diferem em vários aspectos importantes:

  • Estrutura: uma aplicação monolítica é construída como uma unidade, enquanto a arquitetura de microsserviços reflete uma abordagem diferente, por meio de uma coleção de serviços implementáveis menores que operam de forma independente.
  • Criação: um sistema monolítico é mais fácil de construir do que um baseado em arquitetura de microsserviços, graças ao fato de ele ter um design geral mais básico. A arquitetura de microsserviços exige o uso de um projeto consideravelmente mais complexo para planejar e construir.
  • Complexidade: á medida que a complexidade de um sistema cresce, mais ela se torna mais adequada para o modelo de arquitetura de microsserviços, que oferece uma base de programação dinâmica que acomoda a adição futura de outros recursos e novas funcionalidades.
  • Escalabilidade: a arquitetura de microsserviços baseia-se em serviços individuais bem definidos que são facilmente compartimentados em formas modulares com acoplamento vago e que podem se comunicar entre si por meio de APIs. A arquitetura monolítica possui menos adaptabilidade em virtude de sua estrutura central densamente composta e software fortemente acoplado.
  • Depuração: o processo de depuração (ou uso de software para detectar problemas de programação) é uma parte importante das operações responsáveis. Embora se possa pensar que essa era uma área em que os microsserviços têm uma vantagem definida, o oposto é verdadeiro. A depuração funciona melhor em um contexto mais direto, que é exatamente o que as arquiteturas monolíticas oferecem.
  • Time to market: o time to market é uma métrica fundamental no mundo do comércio, que mede a rapidez com que os produtos podem ser fabricados e colocados nos canais de distribuição. Aplicações monolíticas usam apenas uma base de código, o que libera os desenvolvedores de terem que incorporar software de vários serviços, resultando em um time to market mais rápido.
  • Recursos de negócios: qualquer arquitetura pode ser eficaz o suficiente quando uma organização começa a usá-la. O desafio vem com a aparência de crescimento dos negócios e quando essas empresas desenvolvem necessidades corporativas que exigem um estágio maior de operações. É nesse momento que os microsserviços realmente estabelecem seu valor, oferecendo mais formas para escalar operações do que as arquiteturas monolíticas podem.

Casos de uso de arquitetura monolítica

Saber quando usar um estilo arquitetônico é essencial, assim como entender o sistema mais adequado com base nos usos necessários. Estes são os melhores usos de um sistema monolítico:

  • Startups: as equipes de startups precisam migrar rapidamente nos negócios, mas também precisam conservar os preciosos fundos iniciais. Por essas razões, um modelo de arquitetura monolítica faz todo o sentido para novas empresas. Um sistema monolítico pode ser fácil de aprender e rápido e barato de usar, enquanto a adaptação ao uso da arquitetura de microsserviços pode ser uma tarefa cara e demorada.
  • Projetos básicos: a arquitetura monolítica é perfeitamente adequada para lidar com o desenvolvimento de aplicações ou protótipos, desde que o aplicativo ou protótipo em questão seja de natureza simples. Isso se deve à facilidade de usar uma única base de código. O software pode ser totalmente desenvolvido sem a necessidade de integrar dados de várias fontes, facilitando o uso.

Casos de uso da arquitetura de microsserviços

Os microsserviços se prestam a muitos projetos, incluindo as aplicações mais complexas:

  • Comércio eletrônico: o comércio eletrônico percorreu um caminho notavelmente longo em um período relativamente breve, reescrevendo amplamente as estratégias de vendas de inúmeros varejistas que se livraram dos enormes custos de construção associados às operações de vendas físicas. O mercado de vendas de comércio eletrônico de 2023 subiu para impressionantes US$ 5,8 trilhões, impulsionado por varejistas onipresentes e atentos ao mercado, como a Amazon (AWS).1
  • Plataformas de entretenimento: ao operar uma plataforma de entretenimento internacional, você deve ser capaz de suportar cargas de trabalho leves e pesadas. Em 2009, a gigante de streaming de vídeo Netflix fez a transição de seu sistema de uma arquitetura monolítica para uma arquitetura de microsserviços baseada em nuvem. O backend da Netflix agora inclui aplicações do Apache, Cassandra, Chukka, Gluster, Hadoop, Hive, JavaTM, MySQL— com ampla compatibilidade com balanceamento de carga.
  • Equipes de especialistas: como mencionado anteriormente, os microsserviços simplesmente não são tão fáceis de usar quanto as arquiteturas monolíticas. Elas exigem profissionais que possam trazer conjuntos de habilidades estabelecidas para seu trabalho. Além disso, as arquiteturas de microsserviços geralmente precisam do apoio de vários técnicos, devido à complexidade geral das operações. Por esses motivos, equipes totalmente especializadas de especialistas são a combinação ideal para trabalhar em arquiteturas de microsserviço e desenvolvimento de aplicações de microsserviços.
Soluções relacionadas
IBM Enterprise Application Service for Java

Um serviço de locatário único, totalmente gerenciado, para desenvolver e entregar aplicações Java.

Explore os aplicativos em Java
Soluções de DevOps

Utilize softwares e ferramentas de DevOps para desenvolver, implementar e gerenciar aplicações nativas da nuvem em diversos dispositivos e ambientes.

Explore as soluções de DevOps
Serviços de desenvolvimento de aplicações empresariais

Com o desenvolvimento de aplicações na nuvem você só constrói uma única vez, itera rapidamente e implementa em qualquer lugar.

Serviços de desenvolvimento de aplicações
Dê o próximo passo

Os serviços de consultoria de desenvolvimento de aplicações da IBM® Cloud oferecem orientação de especialistas e soluções inovadoras para simplificar sua estratégia em relação à nuvem. Trabalhe com os especialistas em nuvem e desenvolvimento da IBM para modernizar, escalar e acelerar suas aplicações, trazendo resultados transformadores para os seus negócios.

Explore os serviços de desenvolvimento de aplicações Comece a criar com a IBM® Cloud sem custo
Notas de rodapé