O que são microsserviços?

O que são microsserviços?

Os microsserviços são uma abordagem de desenvolvimento de software em que as aplicações são divididas em serviços independentes que se comunicam entre si por meio de APIs. Cada microsserviço é responsável por uma funcionalidade específica de negócios e pode ser desenvolvido, implantado e escalado de forma independente. Essa arquitetura oferece mais agilidade, escalabilidade e resiliência em comparação com as aplicações monolíticas tradicionais.

O termo “microsserviços” se refere a um modelo de entrega de software que divide uma aplicação em componentes menores e autossuficientes. Isso ajuda a aprimorar a funcionalidade e a confiabilidade da aplicação. Também permite que os desenvolvedores criem e mantenham aplicações com mais facilidade.

Diagrama ilustrando como os microsserviços funcionam.

Os microsserviços são uma parte essencial da entrega moderna de aplicações. De redes sociais a varejo on-line e serviços de streaming, quase todas as principais aplicações de software atuais são desenvolvidas com microsserviços. Mas o que são eles? E como exatamente eles melhoram o software? Vamos analisar seus benefícios práticos e também discutir as possíveis desvantagens do uso dessa arquitetura.

O que é SOA (arquitetura orientada a serviços)?

A SOA (arquitetura orientada a serviços) é a evolução da arquitetura monolítica no desenvolvimento de aplicações. As SOAs precedem as arquiteturas de microsserviços e dividem a aplicação em partes menores e mais fáceis de gerenciar. Essas partes são chamadas de serviços e foram projetadas para se comunicar entre si por meio de mensagens. Os serviços também são criados para funcionar de forma independente, o que permite substituí-los ou atualizá-los sem afetar o restante da aplicação.

As SOAs são frequentemente usadas em aplicações baseadas na web, pois permitem separar a lógica de negócios da lógica de apresentação, além de isolar o acesso a dados do armazenamento de dados.

A arquitetura orientada a serviços pode ser usada para criar aplicações mais fáceis de manter e dimensionar. Ela também contribui para a criação de aplicações mais modulares e flexíveis.

As principais vantagens do uso de uma arquitetura orientada a serviços incluem:

  • Manutenção e escalabilidade mais fáceis

  • Aplicações mais modulares e flexíveis

  • Redução do tempo de desenvolvimento

O que é um ESB (barramento de serviços corporativo)?

Um barramento de serviços corporativo (ESB) é uma aplicação de software que fornece um ponto central para a comunicação entre processos. Ele é frequentemente usado no contexto de uma SOA para oferecer serviços a outras aplicações.

O ESB permite que uma organização crie, implante e gerencie soluções de SOA com facilidade. Ele administra, monitora e coordena todos os serviços na infraestrutura de TI da organização.

Esse tipo de tecnologia tem ganhado popularidade porque pode ser usado tanto para comunicação interna quanto externa. Alguns exemplos de casos de uso incluem:

  • Integração de dados
  • Descoberta e registro de serviços
  • Orquestração de serviços
  • Notificação de eventos e registro de logs

Arquitetura de microsserviços em comparação com SOA

As arquiteturas de microsserviços são as mais recentes no desenvolvimento de aplicações. Embora muito semelhantes à SOA, a arquitetura de microsserviços foi criada para preencher lacunas deixadas por sua antecessora. Isso não significa que uma seja inferior à outra, mas que cada uma atende a diferentes casos de uso. As SOAs foram projetadas para atender às necessidades de empresas, o que significa que, embora os serviços sejam separados, os sistemas ainda são interdependentes. A ideia é permitir a reutilização de serviços em outras áreas do negócio.

Os microsserviços, por outro lado, são totalmente independentes. Uma arquitetura de microsserviços adota a duplicação de dados em vez do compartilhamento, o que evita impactos de desempenho. Os microsserviços também eliminam a necessidade de um ESB.

Benefícios do uso de microsserviços

O crescimento dos aplicativos de software como serviço (SaaS) e a ampla adoção de contêineres criaram uma demanda crescente por métodos de desenvolvimento mais eficientes. Em resposta, as próprias aplicações estão mudando: de sistemas monolíticos que executam várias funções para coleções distribuídas de serviços independentes que atendem a funções específicas.

Alguns dos principais benefícios oferecidos pelos microsserviços incluem:

1. Maior confiabilidade

Cada microsserviço executa uma função lógica única dentro da aplicação principal. Por esse motivo, os desenvolvedores fornecem atualizações isoladas apenas para o serviço que precisa das alterações. Normalmente, há uma interface bem definida entre os microsserviços de uma aplicação. Enquanto essa interface permanecer intacta, a aplicação continua funcional mesmo durante as mudanças em tempo real.

2. Redução do tempo de desenvolvimento

Os serviços individuais fornecem um conjunto definido de funcionalidades para cada componente, que pode ser desenvolvido de acordo com requisitos específicos. Isso simplifica o dimensionamento horizontal dos esforços de desenvolvimento entre várias equipes. E facilita a atualização ou a adição rápida de novos recursos.

3. Maior funcionalidade das aplicações

As equipes de desenvolvimento podem criar componentes individuais reutilizáveis em diferentes contextos. Dessa forma, é possível desenvolver novas aplicações que atendem a um público mais amplo e oferecem maior profundidade de recursos sem duplicar esforços.

4. Recursos fracamente acoplados

Esse estilo de arquitetura permite que cada microsserviço atenda a várias aplicações e interfaces, reduzindo o número de implementações personalizadas. O design independente também garante que alterações em um microsserviço não afetem os demais. Por outro lado, isso exige balanceamento de carga para gerenciar as solicitações, tanto no lado do cliente quanto no do servidor.

No fim, os microsserviços permitem que os desenvolvedores se concentrem em funcionalidades específicas das aplicações e evitem problemas decorrentes do acoplamento de vários sistemas. Ao dividir uma aplicação em partes gerenciáveis, os desenvolvedores podem aproveitar técnicas modernas de desenvolvimento, como testes automatizados, para entregar resultados de alta qualidade de forma mais rápida.

Os microsserviços também são mais fáceis de manter, pois cada serviço é autossuficiente. Todos os serviços dependentes são executados em sua própria plataforma com ferramentas de gerenciamento separadas, proporcionando mais consistência. Ele também facilita o gerenciamento de toda a coleção de componentes relacionados mais do que se estivessem incorporados em uma aplicação monolítica maior.

Desvantagens dos microsserviços

Ao desenvolver aplicações corporativas, adotar uma arquitetura de microsserviços é claramente mais vantajoso do que uma arquitetura monolítica. No entanto, isso não ocorre sem possíveis problemas. Há algumas desvantagens importantes em usar microsserviços.

1. Potenciais limites indefinidos de microsserviços

Se a documentação e os requisitos não forem bem definidos, pode ser difícil gerenciar as dependências entre serviços e a funcionalidade geral da aplicação. No entanto, os padrões de projeto, também chamados de padrões de arquitetura, são soluções reutilizáveis que podem ser usadas para contornar problemas comuns.

2. Vulnerabilidades de segurança

A segurança de rede também pode ser uma possível desvantagem com os microsserviços. Cada serviço é implantado de forma independente e geralmente possui seu próprio conjunto de controles de segurança. Como resultado, nem sempre fica claro quem tem acesso a cada componente, o que aumenta o risco de atividades maliciosas.

As chamadas entre microsserviços geralmente são baseadas em API, por isso são feitas por meio de transporte de rede. A forma como esses serviços se comunicam pode se tornar um vetor de ataque para cibercriminosos. Os desenvolvedores devem escolher cuidadosamente as plataformas e estruturas que utilizarão para implantar seus microsserviços. Isso também inclui as configurações que serão usadas para protegê-los.

3. Complexidade e dificuldade para manter o código

A principal desvantagem é que eles são difíceis de dimensionar e manter. Isso ocorre porque cada serviço precisa ser gerenciado separadamente e independentemente dos outros serviços no sistema.

4. Erros que podem ser difíceis de corrigir

Devido à natureza granular e distribuída dos microsserviços, a correção de erros pode ser complexa. Ao contrário das arquiteturas orientadas a serviços ou monolíticas, ajustes em uma área não afetam o restante da aplicação. Isso pode levar as equipes a gastar mais tempo na identificação e na resolução de problemas.

Ferramentas e opções de implantação para microsserviços

Há várias opções de implantação diferentes para microsserviços. Normalmente, os desenvolvedores optam por implantar seus microsserviços como serviços baseados em contêineres em um host dedicado. Outra alternativa é o uso de um provedor de plataforma como serviço (PaaS), como o Akamai Cloud.

O uso de um provedor PaaS oferece vários benefícios nativos da nuvem, como escalabilidade facilitada e eliminação da necessidade de manter o host. No entanto, os desenvolvedores devem considerar os riscos associados à dependência de um provedor externo de serviços em nuvem. Essa opção traz mais riscos do que implantar sua própria infraestrutura.

Como proteger microsserviços

Para garantir a segurança dos microsserviços, os desenvolvedores devem:

  • Usar HTTPS para transmissão criptografada de dados
  • Implementar firewalls para proteger os serviços
  • Adotar mecanismos de registro para monitorar atividades suspeitas
  • Proteger a comunicação via API, já que as APIs geralmente lidam com a interação entre microsserviços e serviços de back-end

O papel dos microsserviços em sistemas distribuídos e na automação

Sistemas distribuídos: os microsserviços são projetados de forma nativa para sistemas distribuídos, nos quais cada serviço pode ser hospedado e dimensionado de maneira independente em diferentes servidores ou até em diferentes data centers. Essa descentralização garante que os serviços continuem operando mesmo que um componente falhe, aumentando a resiliência.

Automação em microsserviços: a automação é fundamental em arquiteturas baseadas em microsserviços. Tarefas como implantação, dimensionamento e monitoramento são frequentemente automatizadas para viabilizar integração e entrega contínuas (CI/CD). Ferramentas como Kubernetes e Docker automatizam a orquestração e o escalonamento dos microsserviços, facilitando o gerenciamento de sistemas distribuídos.

Os microsserviços também oferecem suporte à infraestrutura como código (IaC), em que a configuração e o gerenciamento da infraestrutura são automatizados por meio de código. Isso permite implantações consistentes e reproduzíveis, reduzindo as chances de erro humano.

Perguntas frequentes

Os microsserviços diferem das arquiteturas monolíticas de várias formas, incluindo:

  • Implantação: os microsserviços podem ser implantados de forma independente. Cada serviço único pode ser ajustado, adaptado e melhorado sem afetar os demais. Já a arquitetura monolítica precisa ser implantada como uma unidade única. Se algo precisar ser atualizado, toda a aplicação deve ser reimplantada. 

  • Dimensionamento: o dimensionamento em aplicações monolíticas costuma envolver a escala de toda a aplicação, o que pode gerar ineficiência e desperdício de recursos. Mas os microsserviços podem oferecer dimensionamento granular, o que significa que permitem ajustes individualizados de forma independente, conforme os requisitos de cada serviço.

  • Manutenção: os microsserviços permitem que as equipes gerenciem partes menores do sistema em vez de refazer toda a aplicação, como ocorre com uma arquitetura monolítica. Os microsserviços podem resultar em manutenção e desenvolvimento mais eficientes, seja em ajustes de segurança de API, testes gerais de segurança ou funcionalidades da aplicação.

As arquiteturas de microsserviços utilizam principalmente APIs (interfaces de programação de aplicações) para comunicação. Alguns padrões de comunicação comuns dentro da arquitetura são APIs REST, filas de mensagens e arquiteturas orientadas a eventos. Veja como eles diferem:

  • APIs REST: esse é um dos padrões de comunicação mais comuns para arquiteturas de microsserviços, pois permite implementação e comunicação simples. As APIs REST são frequentemente usadas em jornadas com gateways de API.

  • Mensagens: essa forma de comunicação pode ser usada para comunicação assíncrona dentro da arquitetura de microsserviços. 

  • Arquitetura orientada por eventos: com a arquitetura orientada a eventos, os microsserviços se comunicam produzindo e consumindo eventos. Um serviço pode reagir a eventos emitidos por outro e assim por diante. Isso permite maior dimensionamento e menor acoplamento.

Os microsserviços podem ser desenvolvidos com uma variedade de tecnologias. Tudo depende dos requisitos específicos da aplicação e das preferências da equipe de arquitetura responsável pelo desenvolvimento. As tecnologias frequentemente usadas no desenvolvimento de microsserviços são Docker, Kubernetes, malhas de serviço (como Istio), gateways de API e sistemas de mensagens (por exemplo, Kafka).

Os microsserviços influenciam práticas de integração contínua, entrega contínua, testes automatizados, infraestrutura como código e monitoramento. Portanto, os microsserviços têm impacto significativo nas práticas de DevOps. Os microsserviços podem proporcionar escalabilidade aprimorada, maior agilidade, mais resiliência e outros benefícios, tornando os microsserviços e o DevOps práticas complementares.

Por que os clientes escolhem a Akamai

A Akamai é a empresa de cibersegurança e computação em nuvem que potencializa e protege negócios online. Nossas soluções de segurança líderes de mercado, a inteligência avançada contra ameaças e a equipe de operações globais oferecem defesa completa para garantir a segurança de dados e aplicações empresariais em todos os lugares.

Publicações relacionadas do blog

Transferência, DDoS: É a era da negação de defesa distribuída (DDoD)
Ataques de DDoS sofisticados realizados por IA podem derrubar suas defesas mesmo com volume moderado. Esta é agora uma era de negação de defesa.
Violação destaca vulnerabilidades de IA e APIs nas cadeias de fornecimento de software
As cadeias de fornecimento de software enfrentam vulnerabilidades que você pode não descobrir ao selecionar seu fornecedor principal. As proteções de segurança em camadas podem ajudar você a reduzir as violações.
Segurança de API sob escrutínio federal: um alerta para CIOs
Saiba como adotar uma abordagem deliberada e estruturada para a segurança de APIs a fim de atender às crescentes regulamentações de conformidade e reduzir a exposição ao risco.

Explore todas as soluções de segurança da Akamai

Inicie sua avaliação gratuita e veja a diferença que a maior e mais confiável plataforma de entrega em nuvem do mundo pode fazer.