Arquitetura Orientada a Eventos Soluções escaláveis e em tempo real com EDA
Roberto PicançoSobre o livro
À medida que as organizações começam a ganhar maturidade em sua estratégia de transformação digital, elas passam a depender cada vez mais de soluções digitais. Elas desenvolvem essas soluções através do software para prosperar seus negócios e, consequentemente, se destacar no mercado e sair na frente da concorrência.
Uma das principais metas dessas empresas é reduzir ao máximo o tempo entre a ideia e a implantação da solução em produção, sem abrir mão da qualidade, e gerar valor para seus clientes o mais rápido possível — este é o bom e velho time-to-market.
A direção que as organizações estão seguindo para acelerar o time-to-market é dividir para conquistar, passando de um modelo centralizado para um modelo distribuído, seja de times, processos e tecnologias.
Quando criamos novas soluções ou migramos nossos sistemas monolíticos em pequenas aplicações distribuídas para ganhar velocidade e agilidade, estamos inserindo uma grande complexidade na nossa solução digital. Em vez de termos um único sistema com simples chamadas internas de métodos para atingir um objetivo de negócio, passamos a ter várias aplicações independentes se comunicando através da rede, tendo que lidar com serviços remotos indisponíveis ou com alta latência.
A arquitetura orientada a eventos veio para mitigar essa complexidade do modelo distribuído, minimizando o acoplamento entre as aplicações, adicionando assincronicidade, processamento em tempo real e flexibilidade para adaptar o negócio às mudanças de forma ágil com mínimo de impacto. As organizações estão começando a entender seus benefícios e querem implementá-la em suas soluções digitais, mas têm uma grande dificuldade devido à falta de familiaridade com os conceitos, padrões e casos de usos que cercam essa arquitetura.
Neste livro, vamos ajudar o leitor e a leitora na sua jornada de implementação da arquitetura orientada a eventos, explorando conceitos-chaves, padrões arquiteturais e as principais capacidades dos brokers de eventos, que são considerados o coração dessa arquitetura. O objetivo é responder a pergunta: Quais os padrões arquiteturais e tipos de brokers de eventos de mercado mais apropriados para o meu caso de uso? Na parte final, vamos exercitar o que aprendemos e implementar projetos orientados a eventos simulando alguns casos de uso.
Para quem é este livro?
Este livro foi escrito para pessoas de tecnologia com interesse no assunto, líderes de TI, pessoas desenvolvedoras, engenheiras e arquitetas de software, ou qualquer outro papel que precisa do conhecimento teórico e prático dessa arquitetura.
O principal objetivo do livro é fornecer uma base sólida dos conceitos que envolvem a arquitetura orientada a eventos, contribuindo para a tomada de decisão ao adotá-la.
Estrutura do livro
Este livro está dividido em quatro partes:
Parte I – Fundamentos: Entender os fundamentos da arquitetura orientada a eventos nos dará uma base de conhecimento sólida para uma tomada de decisão apropriada de acordo com o problema que queremos resolver. Nessa parte, vamos entender o porquê dessa arquitetura, explorar seus principais conceitos e padrões arquiteturais e de design, bem como seus benefícios e os desafios que vêm junto ao adotá-la.
Parte II – Broker de eventos: O broker de eventos habilita a arquitetura orientada a eventos com seu suporte ao modelo publish-subscribe. Ele possui capacidades críticas para uma EDA distribuída, confiável e gerenciável. Nesta parte, vamos entender os tipos de broker de eventos existentes no mercado e explorar suas principais características e funcionalidades, o que nos possibilitará escolher o broker de acordo com nosso caso de uso.
Parte III – Arquitetura orientada a eventos e além: Arquitetura orientada a eventos não é uma solução stand-alone. Isso significa que ela é implementada em conjunto com outras arquiteturas e plataformas, como microsserviços, serverless, processamento de streaming, Internet das Coisas (IoT), inteligência artificial, API Management (APIM), Integration Platform as a Service (iPaaS) e muitas outras. Nessa parte, vamos entender como podemos trabalhar em conjunto com outras arquiteturas e plataformas e os benefícios que são gerados por ela dentro desse contexto.
Parte IV – Execução dos projetos de EDA: Nesta última parte, nosso foco será no desenvolvimento de alguns projetos de EDA para colocar em prática o que aprendemos. Vamos definir o broker de eventos e os padrões arquiteturais que usaremos na nossa solução de acordo com o caso de uso.
Essa sequência tem uma ordem lógica de assuntos. Por esse motivo, recomendo a leitura sequencial do livro. Contudo, os capítulos também podem ser lidos isoladamente. Neste caso, recomendo pelo menos a leitura sequencial da Parte I - Fundamentos, pois ela dará uma base de conhecimento para as partes seguintes.
Prefácio por Robisson Oliveira
Ainda me lembro da primeira vez que trabalhei com uma Arquitetura Orientada a Eventos, embora nem soubesse na época que tinha esse nome. Para mim aconteceu tarde, posso dizer: dos 15 anos de experiência em desenvolvimento de software, aconteceu no meu sétimo ano.
Um usuário fazia um cadastro em um sistema, depois era necessário enviar um e-mail de notificação para dezenas (às vezes centenas) de destinatários, e lá estava o usuário esperando o cadastro e mais todos esses envios de e-mail para receber um "cadastro efetuado com sucesso!", ou pior, às vezes esperando vários segundos (ou até minutos) para receber uma mensagem de erro e ter que tentar novamente. Então, por acaso – nem me lembro ao certo como –, eu conheci um broker de eventos. Agora um pouco reformulado, o usuário fazia o mesmo cadastro, um evento era gerado, o usuário recebia sua mensagem de sucesso quase instantaneamente e um processo em paralelo orientado por esse evento fazia todos os envios de e-mail.
Para mim, isso foi um ponto de inflexão: como eu podia ter desenvolvido software todos esses anos e não ter usado esse tipo de lógica, arquitetura e implementação? O nosso mundo, fora da tecnologia que nos cerca, é totalmente orientado a eventos:
- Você pega o celular e pede um Uber porque precisa se deslocar;
- Termina uma tarefa no seu trabalho e comunica a alguém, que faz algo com essa informação;
- Ao entrar em sua casa, você acende a luz;
- Atualiza o seu perfil da rede social;
- Termina de comer em um restaurante e sinaliza o garçom de que gostaria de pagar a conta.
Todos esses casos, que, para exemplificação, são bem simplórios, são eventos que podem ou não ter uma ação ou reação relacionada. Há poucos meses, me dei conta de que meu carro, quando chega a 10 mil km, agenda automaticamente uma revisão com a concessionária. Achei uma experiência surpreendente, diferente da que eu estava acostumado.
Você já deve ter lido em centenas de lugares que o nosso mundo está cada vez mais volátil, incerto, complexo e ambíguo; que a velocidade com que as coisas mudam está cada vez mais rápida. Cada vez mais, é essencial para que os negócios prosperem a agilidade em perceber e reagir às mudanças e ao mercado – mercado este que está cada vez mais distribuído: hoje nós temos times, processos e tecnologias distribuídas, o que deixa tudo ainda mais complexo.
É neste ponto que chegamos ao objetivo deste livro: para ter um negócio ágil e flexível, é necessário que o software desse negócio seja ágil e flexível. Conhecer a arquitetura orientada a eventos é o que vai permitir que aplicações modernas possam capturar informações e responder em tempo real; que possam criar experiências de uso mais amigáveis em um mundo de negócios cada vez mais conectado e centrado no cliente.
A arquitetura orientada a eventos, embora transformadora, está longe de ser simples. Há diversos padrões, arquiteturas, tecnologias e implementações para se chegar ao mesmo resultado. Pergunte a alguém o que é a arquitetura orientada a eventos e veja a diversidade de respostas – ou a pessoa travar. Como toda decisão tecnológica tem seus pontos positivos e negativos, não há uma linha clara entre o certo e o errado. Para piorar o cenário, algumas vezes times e empresas têm que conviver por anos com a decisão que foi tomada até conseguir mudar.
Porém, quando implementada de forma assertiva, a arquitetura orientada a eventos é um poderoso diferencial nos negócios, pois permite reagir rapidamente aos clientes e criar experiências mais amigáveis. Para pessoas desenvolvedoras e arquitetas, permite maior resiliência, escalabilidade e agilidade em momentos em que é preciso mudar de direção. Para quem realmente gosta de trabalhar com tecnologia, não posso deixar de comentar que é um desafio muito satisfatório e eletrizante. No meu atual trabalho como Cloud Application Architect, gosto sempre de pensar nos desafios que aparecem e propor soluções para serem serverless first e event-driven first, por acreditar justamente que vão trazer mais agilidade para os negócios e abstrair a parte mais complexa. Foco no "first" aqui como uma tentativa, não como uma solução para tudo.
Este livro é um grande acelerador nessa jornada de conhecer e implementar a arquitetura orientada a eventos. Além de introduzir os fundamentos básicos sobre o assunto, conta com um catálogo de padrões, com seus prós e contras de quando utilizar, as principais tecnologias, casos de uso e exemplos de implementação. Gostaria de ter lido este tipo de trabalho no início da minha jornada trabalhando com esses desafios.
Tive a oportunidade e satisfação de trabalhar com o Roberto, e posso afirmar que a habilidade que mais desenvolvi trabalhando lado a lado com ele foi justamente como trabalhar com arquiteturas orientadas a eventos. Como já dito aqui, eu conheci a arquitetura orientada a eventos no meu sétimo ano de profissão, e comecei a trabalhar com o Roberto no meu décimo segundo ano. Espero que você, leitor(a), consiga extrair o máximo do que este conhecimento pode lhe proporcionar.
Robisson Oliveira — Sr. Cloud Application Architect - Amazon Web Services
Sumário
- Parte I: Fundamentos
- 1 Por que Arquitetura orientada a eventos?
- 1.1 O que é exatamente Arquitetura orientada a eventos?
- 1.2 Principais benefícios e desafios envolvidos
- 1.3 Relação com o desenvolvimento de aplicações modernas
- 1.4 Arquitetura orientada a eventos nas organizações e algumas previsões
- 2 Entendendo os principais conceitos
- 2.1 Componentes-chaves
- 2.2 Tipos de mensagem
- 2.3 Anatomia de uma mensagem
- 2.4 Formato da mensagem
- 2.5 Protocolo de mensagem
- 2.6 Destino da mensagem
- 2.7 Garantia de entrega da mensagem
- 3 Padrões de arquitetura para a Arquitetura orientada a eventos
- 3.1 Padrões de entrega de evento
- 3.2 Padrões de comunicação de mudança de estado
- 3.3 CQRS (Command Query Responsibility Segregation)
- 3.4 Dead-letter queues (DLQ)
- 3.5 First in, first out (FIFO)
- 3.6 SAGA
- 3.7 Transactional outbox
- 3.8 Change data capture (CDC)
- 3.9 Webhooks
- 3.10 Segurança
- 4 Identificando eventos de negócio e documentando nossa solução
- 4.1 EventStorming
- 4.2 AsyncAPI
- 4.3 CloudEvents
- Parte II: Broker de eventos
- 5 Broker de eventos habilita a Arquitetura orientada a eventos
- 5.1 O papel do broker de eventos na Arquitetura orientada a eventos
- 5.2 Padrões de implantação (deploy)
- 5.3 Operação e governança
- 5.4 Gerenciamento de esquema
- 6 Funcionalidades comuns de um broker no fluxo de publicação e consumo de eventos
- 6.1 Interação da aplicação consumidora com base em push e pull
- 6.2 Kit de desenvolvimento de software (SDK)
- 6.3 Envio e recebimento de eventos em lote
- 6.4 Roteamento inteligente
- 6.5 Confirmação de entrega de eventos (Ack)
- 6.6 Retenção do evento
- 6.7 Reprodução do evento
- 6.8 Visibilidade do evento
- 6.9 Agendamento da entrega do evento
- 7 Os tipos de brokers de eventos
- 7.1 Broker orientado a fila
- 7.2 Broker orientado a log
- 7.3 Broker orientado a assinatura
- 7.4 Como os fornecedores lidam com os diferentes tipos de brokers
- Parte III: Arquitetura orientada a eventos e além
- 8 Padrões arquiteturais que se beneficiam da Arquitetura orientada a eventos
- 8.1 Arquitetura de microsserviços
- 8.2 Arquitetura serverless
- 8.3 Arquitetura de streaming de dados
- 9 Arquitetura orientada a eventos no contexto de uma plataforma de integração
- 9.1 O que é uma plataforma de integração
- 9.2 O papel do gerenciamento de API
- 9.3 O papel da plataforma de integração como serviço
- 9.4 Arquitetura orientada a eventos e a plataforma de integração
- Parte IV: Execução dos projetos de EDA
- 10 Projeto 1 – Plataforma de e-commerce
- 10.1 Entendendo o problema e definindo o escopo
- 10.2 Requisitos funcionais, não funcionais e restrições
- 10.3 Etapa 1: Escolha do broker de eventos e das arquiteturas e plataformas
- 10.4 Etapa 2: Design da solução
- 10.5 Etapa 3: Teste
- 10.6 Etapa 4: Implementação
- 10.7 Sugestões de desafios extras
- 11 Projeto 2 – Envio de notificações de eventos para parceiros
- 11.1 Entendendo o problema e definindo o escopo
- 11.2 Requisitos funcionais, não funcionais e restrições
- 11.3 Etapa 1: Escolha do broker de eventos e das arquiteturas e plataformas
- 11.4 Etapa 2: Design da solução
- 11.5 Etapa 3: Teste
- 11.6 Etapa 4: Implementação
- 11.7 Sugestões de desafios extras
- 12 Projeto 3 – Rastreamento da frota de caminhões em tempo real
- 12.1 Entendendo o problema e definindo o escopo
- 12.2 Requisitos funcionais, não funcionais e restrições
- 12.3 Etapa 1: Escolha do broker de eventos e das arquiteturas e plataformas
- 12.4 Etapa 2: Design da solução
- 12.5 Etapa 3: Teste
- 12.6 Etapa 4: Implementação
- 12.7 Sugestões de desafios extras
- 13 Bibliografia
Dados do produto
- Número de páginas:
- 302
- ISBN:
- 978-85-5519-351-4
- Data publicação:
- 10/2023