image

Accede a bootcamps ilimitados y a más de 650 cursos

50
%OFF
Article image
Roberto Melo
Roberto Melo14/03/2025 11:02
Compartir

O que seriam Arquiteturas Orientadas a Serviços e Eventos (SOA/EDA)?

    Estive analisando uma vaga que solicitava ter conhecimento em SOA e EDA, então decidi investigar sobre o assunto dando origem a esse artigo.

    Arquiteturas Orientadas a Serviços (SOA - Service-Oriented Architecture) e Arquiteturas Orientadas a Eventos (EDA - Event-Driven Architecture) são dois paradigmas distintos, mas complementares, para projetar sistemas distribuídos.

    image

    1. SOA (Service-Oriented Architecture)

    A SOA se baseia na criação de serviços independentes e reutilizáveis, que expõem funcionalidades específicas por meio de interfaces bem definidas. Esses serviços podem ser acessados por outros componentes do sistema, geralmente por meio de protocolos como REST ou SOAP.

    Características da SOA:

    • Desacoplamento: Os serviços são independentes e podem ser modificados sem impactar diretamente outros serviços.
    • Reutilização: Um mesmo serviço pode ser utilizado por diferentes aplicações.
    • Interoperabilidade: Serviços podem ser consumidos por diferentes tecnologias e plataformas.
    • Orquestração: O fluxo de trabalho pode ser controlado por um orquestrador (ex.: um API Gateway ou um ESB - Enterprise Service Bus).

    Exemplo de SOA:

    Um sistema de e-commerce pode ter serviços como:

    • UserService para gerenciar usuários
    • OrderService para processar pedidos
    • PaymentService para lidar com pagamentos

    Cada serviço expõe endpoints que permitem outras partes do sistema interagir com ele.

    2. EDA (Event-Driven Architecture)

    A EDA se baseia na comunicação assíncrona entre componentes através de eventos. Em vez de chamar diretamente um serviço (como na SOA), um componente publica um evento, e outros componentes interessados nesse evento podem consumi-lo e reagir a ele.

    Características da EDA:

    • Assincronismo: Eventos são publicados e processados de forma assíncrona.
    • Baixo acoplamento: Os serviços não precisam conhecer uns aos outros, apenas os eventos que processam.
    • Escalabilidade: Como os eventos são processados de forma independente, o sistema pode escalar melhor.
    • Reatividade: Permite construir sistemas reativos que respondem a mudanças rapidamente.

    Exemplo de EDA:

    No mesmo sistema de e-commerce:

    1. O OrderService cria um pedido e publica um evento "OrderCreated".
    2. O PaymentService escuta esse evento e processa o pagamento.
    3. O ShippingService escuta o evento "PaymentConfirmed" e agenda a entrega.

    Esses serviços não interagem diretamente; eles apenas ouvem e reagem a eventos.

    Quando usar SOA?

    • Quando os serviços precisam se comunicar de forma direta e síncrona.
    • Para sistemas que exigem respostas imediatas (ex.: APIs REST para consulta de dados).

    Quando usar EDA?

    • Para sistemas altamente escaláveis e distribuídos.
    • Quando há necessidade de processar eventos em tempo real (ex.: sistemas de monitoramento, e-commerce, IoT).
    Compartir
    Recomendado para ti
    Microsoft 50 Anos - Prompts Inteligentes
    Microsoft 50 Anos - GitHub Copilot
    Microsoft 50 Anos - Computação em Nuvem com Azure
    Comentarios (4)

    JC

    Jefferson Campos - 17/03/2025 08:27

    O artigo cita SOA e EDA como excludentes, porém pela minha experiência com integrações posso dizer com certeza que na vida real um Sistema Orientado a Serviços não é síncrono, geralmente é assíncrono e o fato de um serviço conhecer ou não o outro não define o conceito pois o que muda é se vc tem um API Manager ou não no meio ou como citado se utilizar um barramento (Azure Service Bus) vc já encapsula e abstrai os serviços, outro ponto é que é sim possível ter um SOA e EDA na mesma arquitetura, seria o que eu chamaria de SEDA (Service and Event Driven Architecture), ou seja uma arquitetura orientada a serviço e a eventos, no final das contas isso é uma forma de se fazer computação distribuída e repare que o que atualmente se chama de microserviço já vem dos conceitos de SOA e o que temos hoje em computação serverless já vem dos conceitos de EDA.

    William Silva
    William Silva - 15/03/2025 09:42

    👏👏👏

    DIO Community
    DIO Community - 14/03/2025 14:54

    Roberto, excelente artigo! Você trouxe uma explicação clara e objetiva sobre as diferenças entre SOA e EDA, mostrando como cada abordagem se encaixa em diferentes cenários. A arquitetura orientada a eventos, em especial, tem se destacado na construção de sistemas escaláveis e reativos, enquanto a SOA continua sendo essencial para integrações robustas e reutilização de serviços.

    Na DIO, incentivamos o aprendizado contínuo dessas arquiteturas para que desenvolvedores possam projetar sistemas modernos e eficientes. A aplicação prática dessas estratégias pode fazer toda a diferença na construção de microsserviços resilientes. Na sua visão, qual dos dois modelos apresenta o maior desafio para implementação em ambientes corporativos já estabelecidos?

    Alessandra Santos
    Alessandra Santos - 14/03/2025 11:35

    Excelente explicação!