Construindo Microsserviços Orientados a Eventos – 2ª Edição

Utilizando dados organizacionais em escala

Construindo Microsserviços Orientados a Eventos – 2ª Edição
× Construindo Microsserviços Orientados a Eventos – 2ª Edição

Construindo Microsserviços Orientados a Eventos – 2ª Edição

Autor:

ISBN impresso: 978-85-7522-992-7
ISBN ebook: 978-85-7522-993-4
Ano: 2026
Páginas: 464
Preço impresso: R$ 159,00 O ebook deste livro está disponível na Amazon.

1 opinião | Opine sobre este livro

Descrição do livro

“O guia definitivo sobre arquiteturas de streaming de dados. Leitura obrigatória para qualquer profissional que atue na área.” – Jay Kreps, cofundador e CEO da Confluent

“O segredo dos especialistas para gerenciar escala e domar a complexidade.” – K. Scott Morrison, consultor e ex-CTO da PHEMI Systems

“Este livro oferece tudo o que você precisa para compreender microsserviços orientados a eventos, desde os conceitos básicos de modelagem de dados como eventos até as questões práticas de testes e implantação em produção.” – Martin Kleppmann, professor associado na Universidade de Cambridge e autor de Designing Data-Intensive Applications

Microsserviços orientados a eventos oferecem a abordagem ideal para aproveitar fluxos de eventos, reagindo e respondendo a mudanças à medida que elas ocorrem em sua organização. Com este guia totalmente revisado e atualizado, você aprenderá a aplicar os princípios da arquitetura orientada a eventos para criar fluxos de eventos e construir aplicações poderosas baseadas em microsserviços.

O autor Adam Bellemare conduz o leitor por todo o processo de criação de arquiteturas de microsserviços orientados a eventos, desde os conceitos básicos até aplicações avançadas. Ao abordar eventos, fluxos de eventos e microsserviços, este livro apresenta padrões poderosos e reutilizáveis para compartilhar e utilizar dados importantes em toda a organização.

• A teoria e os conceitos básicos das arquiteturas orientadas a eventos.

• Como projetar e construir arquiteturas de microsserviços orientados a eventos para entregar valor excepcional ao negócio.

• Padrões de design de eventos e de fluxos de eventos, incluindo esquemas e evolução ao longo do tempo.

• Padrões de aplicações de microsserviços, tanto como serviços isolados quanto como uma coleção de múltiplos serviços.

• Ferramentas e técnicas para colocar em funcionamento o ecossistema de microsserviços orientados a eventos e pavimentar o caminho para o sucesso.

• Integração de aplicações orientadas a eventos na arquitetura existente.

Ver menos ▲

Sumário

Sumário

  • Apresentação
  • Prefácio
  • PARTE I: Introdução a microsserviços orientados a eventos
  • CAPÍTULO 1: Por que microsserviços orientados a eventos?
  • O que são microsserviços orientados a eventos?
  • Introdução ao design orientado a domínio e contextos delimitados
  • Microsserviços, fronteiras e estruturas de comunicação
    • Estruturas de comunicação de negócio
    • Estruturas de comunicação de implementação
    • Estruturas de comunicação de dados
    • Lei de Conway e estruturas de comunicação
  • Estruturas de comunicação na computação tradicional
    • Opção 1: Criar um novo serviço
    • Opção 2: Adicioná-lo ao serviço existente
    • Vantagens e desvantagens de cada opção
    • Cenário da equipe (continuação)
  • Comunicação de dados orientada a eventos
  • Exemplo de equipe utilizando microsserviços orientados a eventos
  • Microsserviços de solicitação-resposta
    • Desvantagens dos microsserviços de solicitação-resposta
    • Vantagens dos microsserviços de solicitação-resposta
  • Resumo
  • CAPÍTULO 2: Fundamentos de eventos e fluxos de eventos
  • O que é um evento?
  • O que é um fluxo de eventos?
    • Sistemas de mensageria efêmeros
    • Enfileiramento
    • Filas por meio de brokers de filas modernos
    • Filas via Apache Kafka
  • Estrutura de um evento
    • Eventos sem chave
    • Eventos com chave
    • Eventos de entidade
  • Reparticionamento de fluxos de eventos
  • Coparticionamento de fluxos de eventos
  • Agregando estado a partir de eventos com chave
  • Materializando o estado a partir de eventos de entidade
  • Exclusão de eventos e compactação de fluxos de eventos
  • Arquitetura kappa
  • Arquitetura lambda
  • Definições de dados de eventos e esquemas
  • Impulsionando microsserviços com o broker de eventos
  • Escolhendo um broker de eventos
    • Ferramentas de suporte
    • Serviços hospedados
    • Bibliotecas de cliente e frameworks de processamento
    • Suporte da comunidade
    • Armazenamento indefinido e em camadas
  • Resumo
  • CAPÍTULO 3: Fundamentos de microsserviços orientados a eventos
  • Conceitos básicos de microsserviços orientados a eventos
  • Produtor/consumidor básico
  • Microsserviço orientado a eventos baseado em processamento de fluxo
  • Consulta SQL em streaming
  • Aplicação legada
  • Topologias e microsserviços orientados a eventos
    • Topologia de microsserviço
    • Topologia de negócio
  • Responsabilidades de microsserviços orientados a eventos
  • Qual deve ser o tamanho de um microsserviço?
  • Gerenciando microsserviços em escala
    • Colocando microsserviços em contêineres
    • Colocando microsserviços em máquinas virtuais
    • Gerenciando contêineres e máquinas virtuais
  • Arcando com o custo estrutural dos microsserviços
  • Contratos de serviço
  • Resumo
  • PARTE II: Eventos e fluxos de eventos
  • CAPÍTULO 4: Esquemas e contratos de dados
  • Breve introdução sobre serialização e desserialização
  • O que é um esquema?
  • Quais são as opções de tecnologia de esquemas?
    • Protocol Buffers do Google, também conhecido como Protobuf
    • Apache Avro
    • JSON Schema
  • Evolução de esquemas: alterando esquemas ao longo do tempo
  • O que é um contratos de dados?
  • Negociando uma mudança drástica de esquema
    • 1ª Etapa: Projetar o novo esquema
    • 2ª Etapa: Consultar os consumidores existentes e obter aprovação
    • 3ª Etapa: Planejar o lançamento, a migração e a descontinuação
    • 4ª Etapa: Disponibilizar os novos fluxos de eventos
  • Papel do registro de esquemas
  • Criptografia em nível de campo
  • Integração com catálogos de dados
  • Resumo
  • CAPÍTULO 5: Projetando eventos
  • Introdução a tipos de eventos
  • Eventos de estado e transferência de estado transportada por eventos
    • Eventos de estado atual
    • Eventos de estado antes/depois
  • Eventos delta
    • Eventos delta para event sourcing
    • Problemas com eventos delta
    • Em que contextos utilizar eventos delta e eventos de estado?
  • Eventos híbridos: eventos de estado com um pouco de delta
  • Eventos de medição
    • Eventos de medição viabilizam agregações
    • Fontes de eventos de medição podem ser suscetíveis a perdas
    • Eventos de medição podem sustentar aplicações sensíveis ao tempo
  • Eventos de notificação
  • Design de eventos para privacidade de dados e o direito ao esquecimento
  • Resumo
  • CAPÍTULO 6: Integrando arquiteturas orientadas a eventos com sistemas existentes
  • O que é liberação de dados?
  • Antipadrão de escrita dupla
  • Padrões de liberação de dados
  • Frameworks de liberação de dados
  • Liberação de dados utilizando captura de dados de mudança (CDC)
    • Criando um snapshot do estado inicial do conjunto de dados
    • Vantagens da captura de dados de mudança utilizando logs do repositório de dados
    • Desvantagens da captura de dados de mudança utilizando logs do repositório de dados
  • Liberação de dados com consulta por meio de polling
    • Atualização incremental
    • Vantagens da atualização baseada em consultas
    • Desvantagens da atualização baseada em consultas
  • Liberação de dados utilizando tabelas outbox transacionais
    • Considerações de desempenho
    • Isolando modelos de dados internos
    • Garantindo compatibilidade de esquemas
    • Capturando dados de mudança utilizando triggers
  • Realizando mudanças de definição de dados em conjuntos de dados sob captura
  • Concessões na liberação de dados
  • Destinando dados de eventos para repositórios de dados
  • Impactos da destinação e da extração em um negócio
  • Resumo
  • CAPÍTULO 7: Desnormalização e eventificação
  • Eventificação na tabela outbox transacional
  • Eventificação em um serviço dedicado
  • O que deve entrar no evento? E o que deve ficar de fora?
  • Dimensões de mudança lenta
    • Tipo 1: Sobrescreve com o novo valor
    • Tipo 2: Adiciona o novo valor
  • Resumo
  • CAPÍTULO 8: Microsserviços com estado orientados a eventos
  • Partições de fluxos de eventos e atribuições de consumidores
    • Reparticionamento de fluxos de eventos
    • Coparticionamento de fluxos de eventos
    • Atribuindo partições dentro de um grupo de consumidores
  • Selecionando um repositório de estado para o microsserviço
  • Materializando estado em um repositório de estado interno
    • Utilizando um fluxo de eventos de changelog para recuperação de estado
    • Materializando estado global
    • Vantagens dos repositórios de estado internos
    • Desvantagens dos repositórios de estado internos
    • Escalonamento e recuperação de estado interno
  • Materializando estado em um repositório de estado externo
    • Vantagens do estado externo
    • Desvantagens do estado externo
    • Escalonamento e recuperação com repositórios de estado externos
  • Reconstruindo o repositório de estado externo
  • Transações e processamento do tipo effectively once
    • Exemplo: para um serviço de contabilidade de estoque
    • Processamento do tipo effectively once com transações cliente-broker
    • Processamento do tipo effectively once sem transações cliente-broker
  • Resumo
  • CAPÍTULO 9: Processamento determinístico de fluxos
  • Determinismo com fluxos de trabalho orientados a eventos
  • Timestamps
  • Sincronizando timestamps distribuídos
  • Agendamento de eventos e processamento determinístico
    • Agendadores de eventos personalizados
    • Processamento com base no tempo do evento, de processamento e de ingestão
    • Extração de timestamps pelo consumidor
    • Chamadas de solicitação-resposta a sistemas externos
  • Watermarks
  • Watermarks no processamento paralelo
  • Tempo do fluxo
  • Eventos fora de ordem e eventos que chegam atrasados
    • Eventos que chegam atrasados com watermarks e tempo do fluxo
    • Causas e impactos de eventos fora de ordem
    • Funções sensíveis ao tempo e janelamento
  • Tratando eventos que chegam atrasados
  • Reprocessamento versus processamento quase em tempo real
  • Falhas intermitentes e eventos que chegam atrasados
  • Problemas de conectividade entre produtor e broker de eventos
  • Resumo e leituras adicionais recomendadas
  • CAPÍTULO 10: Construindo fluxos de trabalho com microsserviços
  • Padrão de coreografia
    • Modificando um fluxo de trabalho coreografado
    • Monitorando um fluxo de trabalho coreografado
  • Padrão de orquestração
    • Exemplo simples de orquestração orientada a eventos
    • Exemplo simples de orquestração por solicitação-resposta
    • Modificando um fluxo de trabalho de orquestração
    • Monitorando um fluxo de trabalho de orquestração
    • Orquestração por solicitação-resposta versus orientada a eventos
  • Transações distribuídas e padrão saga
    • Sagas por meio de coreografia
    • Sagas por meio de orquestração
  • Padrão de fluxo de trabalho de compensação
  • Implementando orquestração por meio de um mecanismo de execução durável
    • Event sourcing por meio de log durável do tipo append-only
    • Considerações adicionais sobre execução durável
  • Resumo
  • PARTE III: Frameworks de microsserviços orientados a eventos
  • CAPÍTULO 11: Microsserviços de produtor/consumidor básico
  • Cenários em que os BPCs funcionam bem
    • Integração com sistemas existentes utilizando o padrão sidecar
    • Lógica de negócio com estado que não depende da ordem dos eventos
    • Quando o repositório de dados executa grande parte do trabalho
    • Escalonamento independente do processamento e do repositório de dados
  • Resumo
  • CAPÍTULO 12: Microsserviços com frameworks pesados
  • Evolução dos frameworks pesados
  • Exemplo: janelamento de sessão de cliques e visualizações
  • Funcionamento interno de frameworks pesados
  • Vantagens e desvantagens
  • Opções de configuração de cluster e modos de execução
    • Utilizar um serviço hospedado
    • Construir e gerenciar o próprio cluster
  • Modos de submissão de aplicações
    • Modo driver
    • Modo cluster
  • Tratando estado e utilizando checkpoints
  • Escalonando aplicações e tratando partições de fluxo de eventos
    • Escalonando uma aplicação por meio de reinicialização
    • Escalonando uma aplicação enquanto ela está em execução
    • Escalonamento automático de aplicações
  • Recuperando-se de falhas
  • Considerações sobre multitenancy
  • Linguagens e sintaxe
  • Escolhendo um framework
  • Resumo
  • CAPÍTULO 13: Microsserviços com frameworks leves
  • Exemplo: join de dados de Product com dados de Brand utilizando uma chave estrangeira
  • Funcionalidades internas dos frameworks leves
    • Shuffle e reparticionamento de eventos
    • Tratando estado e utilizando changelogs
    • Escalonando e recuperando-se de falhas
    • Atribuição de estado
    • Replicação de estado e réplicas quentes
  • Resumo
  • CAPÍTULO 14: SQL em streaming
  • Conceitos básicos de consulta contínua
  • Transformando fluxos em tabelas para consultas SQL em streaming
  • Exemplo: enriquecimento de dados com Flink SQL
  • Executando código SQL em streaming
    • Executando código SQL pela interface de linha de comando
    • Executando código SQL dentro da aplicação
    • Executando código SQL a partir de um notebook
    • Executando código SQL por meio de um gateway
    • SQL como sidecar
  • Chamadas a funções definidas pelo usuário
  • Resumo
  • CAPÍTULO 15: Microsserviços utilizando funções como serviço (FaaS)
  • Por que utilizar funções como serviço?
  • Construindo microsserviços com funções
  • Inicializações a frio e inicializações a quente
  • Encerramento e desligamento
  • Escolhendo um provedor de FaaS
  • Iniciando funções com triggers
    • Acionamento baseado em novos eventos: o listener de fluxo de eventos
    • Acionamento baseado no lag do grupo de consumidores
    • Acionamento baseado em agendamento
    • Acionamento utilizando webhooks
    • Acionamento baseado em eventos de recursos
  • Escalonando soluções de FaaS
  • Mantendo estado
  • Funções chamando outras funções
    • Padrão de comunicação assíncrona orientada a eventos
    • Padrão de chamada direta
  • Tratando falhas de funções de FaaS
  • Orquestradores de funções duráveis
    • Codificando o orquestrador em um documento proprietário
    • Codificando o orquestrador em um código-fonte
  • Resumo
  • PARTE IV: Consistência, dados incorretos e ferramentas de apoio
  • CAPÍTULO 16: Consistência eventual
  • Convergindo para a consistência, um evento por vez
  • Estratégias para lidar com a consistência eventual
    • Utilizar tipos de eventos de estado
    • Expor a consistência eventual na resposta do servidor
    • Utilizar comunicação orientada a eventos em vez de solicitação-resposta
    • Prevenir falhas para evitar inconsistências
  • Resumo
  • CAPÍTULO 17: Integrando microsserviços orientados a eventos e de solicitação-resposta
  • Transformando solicitações em eventos
  • Transformando solicitações em eventos utilizando um proxy REST
  • Integrando APIs de solicitação-resposta de terceiros
  • Disponibilizando dados por meio de uma API de solicitação-resposta
    • Atendendo a solicitações com repositórios de estado internos
    • Atendendo a solicitações com repositórios de estado externos
  • Tratando solicitações em um fluxo orientado a eventos
  • Processando eventos para interfaces de usuário
    • Exemplo: fluxo de trabalho de publicação de um jornal
    • Exemplo: separando serviços de aprovação do editor e do anunciante
  • Micro-frontends para aplicações de solicitação-resposta
    • Exemplo: aplicação de busca e avaliação de atrações
    • Vantagens dos micro-frontends
    • Desvantagens dos micro-frontends
  • Resumo
  • CAPÍTULO 18: Lidando com dados incorretos em fluxos de eventos
  • Principais tipos de dados incorretos em fluxos de eventos
    • Tipo 1: Dados corrompidos
    • Tipo 2: Evento sem esquema
    • Tipo 3: Evento com esquema inválido
    • Tipo 4: Evolução de esquema incompatível
    • Tipo 5: Valor logicamente inválido em um campo
    • Tipo 6: Valor logicamente válido, mas semanticamente incorreto
    • Tipo 7: Eventos ausentes
    • Tipo 8: Eventos que não deveriam ter sido produzidos
  • Prevenindo dados incorretos com esquemas, validação e testes
    • Prevenindo dados incorretos dos Tipos 1 a 5 com esquemas e evolução de esquemas
      • semanticamente incorreto)
      • deveriam ter sido produzidos)
  • Papel do design de eventos na correção de dados incorretos
  • Corrija uma vez e corrija corretamente com eventos de estado
  • Construir para frente: desfazendo deltas incorretos com novos deltas
  • Último recurso: retroceder, reconstruir e tentar novamente
    • Retroceder, reconstruir e tentar novamente a partir de fonte externa
    • Retroceder, reconstruir e tentar novamente com o tópico como fonte
  • Resumo
  • CAPÍTULO 19: Ferramentas de suporte
  • Escolhendo a infraestrutura: construir versus comprar
  • Infraestrutura como código para clusters e serviços
  • Gerenciamento de identidade e acesso
  • Sistema de atribuição de microsserviços para equipes
  • Criação e modificação de fluxos de eventos
  • Marcação de metadados de fluxos de eventos e microsserviços
  • Cotas
  • Registro de esquemas
  • Gerenciando permissões de fluxos de eventos
  • Notificações de criação e modificação de esquemas
  • Gerenciamento de offsets de consumidores
  • Gerenciamento de estado e redefinição da aplicação
  • Monitoramento de lag de offset do consumidor
  • Simplificando o processo de criação de microsserviços
  • Controles de gerenciamento de contêineres
  • Implantações multicluster e replicação de fluxos de eventos
  • Rastreamento de dependências e visualização de topologia
  • Resumo
  • CAPÍTULO 20: Realizando testes em microsserviços orientados a eventos
  • Princípios gerais de realização de testes
  • Realizando testes unitários em funções de microsserviços
    • Realizando testes unitários em funções sem estado
    • Realizando testes unitários em funções com estado
  • Realizando testes na topologia completa orientada a eventos
  • Realizando testes de evolução e compatibilidade de esquemas
  • Realizando testes de integração em microsserviços orientados a eventos
  • Realizando testes de integração local
    • Criando um ambiente de teste dentro do tempo de execução do código de teste
    • Criando um ambiente de teste com contêineres
    • Integrando serviços hospedados, gerenciados e SaaS
  • Testes utilizando serviços de nuvem totalmente remotos
    • Criar de forma programática um ambiente temporário de testes single-tenant
    • Realizando testes em um ambiente multitenant durável
    • Realizando testes utilizando o ambiente de produção
  • Escolhendo uma estratégia de testes de integração totalmente remota
  • Resumo
  • CAPÍTULO 21: Implantando microsserviços orientados a eventos
  • Princípios da implantação de microsserviços
  • Componentes arquiteturais da implantação de microsserviços
    • Sistemas de integração contínua, entrega contínua e implantação contínua
    • Sistemas de gerenciamento de contêineres e hardware de commodity
  • Padrão básico de implantação com parada total
  • Padrão Rolling Update
  • Padrão de mudança drástica de esquema
    • Variante 1: Gravar os eventos com mudança drástica no mesmo fluxo antigo
    • Variante 2: Gravar os eventos com mudança drástica em um novo fluxo
    • Variante 3: Gravar os eventos antigos e novos em paralelo
    • Reprocessando dados históricos para mudanças drásticas de esquema
  • Padrão de implantação azul-verde
  • Resumo
  • CAPÍTULO 22: Conclusão
  • Estrutura de comunicação de dados
  • Domínios de negócio e contextos delimitados
  • Ferramentas, infraestrutura e custo estrutural dos microsserviços
  • Design de eventos
  • Eventos esquematizados
  • Liberação de dados é a única fonte da verdade
  • Microsserviços
  • Opções de implementação de microsserviços
  • Realização de testes
  • Implantação
  • Considerações finais
  • Índice remissivo
Ver sumário completo ▼

Sobre o autor

Adam Bellemare

Adam Bellemare é líder técnico sênior na Confluent. Além de Construindo Microsserviços Orientados a Eventos, é autor do livro Building an Event-Driven Data Mesh. Antes disso, trabalhou com engenheiro de plataformas de dados e streaming de dados na Shopify e na Flipp, construindo, desenvolvendo e promovendo arquiteturas e microsserviços orientados… Ver perfil completo ▶

Opinião dos leitores

Ailton T

O livro “Construindo Microsserviços Orientados a Eventos – 2ª Edição” apresenta uma abordagem muito prática sobre arquiteturas distribuídas e comunicação assíncrona entre serviços. O conteúdo mostra bem os benefícios e desafios de sistemas orientados a eventos, principalmente em cenários que exigem escalabilidade, desacoplamento e maior resiliência. Achei interessante como o livro explora não apenas a parte técnica da implementação, mas também questões relacionadas a consistência, rastreabilidade, observabilidade e governança dos eventos. Isso ajuda bastante a entender os impactos arquiteturais desse modelo no dia a dia de sistemas corporativos. A leitura é bastante relevante para quem trabalha com microsserviços, mensageria e integrações modernas, trazendo exemplos e discussões alinhadas com problemas reais enfrentados em ambientes distribuídos. No geral, considero um material muito útil para profissionais que desejam aprofundar conhecimentos em arquiteturas orientadas a eventos e entender melhor as boas práticas envolvidas nesse tipo de solução.

Ver todas ▼

Títulos relacionados