SlideShare uma empresa Scribd logo
CQRS/ES Lagom
Não mais do que o suficiente
Microservices
• Mais usuários
• Dados exigidos quase a tempo real
• Dados em movimento
• Abordagem poliglota
• Ciclos de interação com usuários mais curtos
Microservices
• Programação reativa
• Responsividade - baixa latência
• Resiliência - capacidade de se recuperar de
falhas
• Elasticidade - estabilidade sob carga
• Orientado a mensagens - comunicação
assíncrona
Microservices
Antes Cada vez mais
Máquina Isolada Em clusters
Processador Núcleo único Múltiplos núcleos
RAM Cara Barata
Disco Caro Barato
Rede Lenta Rápida
Usuários simultâneos Poucos Muitos
Dados Pouca quantidade Grande quantidade
Latência Segundos Milisegundos
CQRS/ES
• Uma raiz de agregado (aggregate root) recebe uma
série de comandos; note que os comandos não
são entidades persistentes.
• Como resultado, são gerados eventos que são
persistidos em um armazém de eventos.
• Imediatamente após a persistência, os eventos são
aplicados na raiz de agregado, atualizando seu
estado - é a única maneira de modificar este
estado.
Passos
• Linguagem: Java+Scala
• Ferramental: Intellij Idea+Activator/Sbt
• Definir um serviço (descritor e métodos)
• Implementar serviço
Partes importantes
• Dependency Injection: Lagom faz uso de Google
Guice para construir ‘grafos’ de serviços.
O código
https://github.com/iservport/iservport-voter
Scala, o básico
• Simplificações da
linguagem
• Construtores
• Import tem escopo -
implícitos.
• Case classes
• Genéricos
• Options
• Pattern matching
• Funções anônimas
• Futures
CQRS/ES
• Checklist:
• Definir agregados
• Definir comandos
• Definir eventos
• Etiquetar eventos
A entidade persistente
Implementar serviço
• A interface (trait) de serviço definida pela API será
implementada, assim como cada um de seus
métodos.
Cassandra Read Side
• Não pense como em um BD relacional
• Modele a partir das perguntas (queries)
• Denormalize e duplique para melhorar o
desempenho de leitura
• Não deixe para pensar nos índices depois
• Pense na estrutura física do armazenamento
Próximas versões
• Conteiners Docker
• Orquestração com Kubernetes
• Service Location com Zookeeper
Kubernetes
• Pods
• Replication
• Labels
• Services
– Maurício Fernandes de Castro
mauricio@iservport.com
Dúvidas?

Mais conteúdo relacionado

PPTX
Persistência
PPTX
ScalaCamp Meetup - Coleções em Scala
PPTX
Estrategia digital, uma visão associativista
PPTX
Iservport recipes
PPTX
PPTX
iservport - Uma Plataforma de Monitoramento para sua empresa e sua rede de ne...
PPTX
Capital Humano no Setor de TI
Persistência
ScalaCamp Meetup - Coleções em Scala
Estrategia digital, uma visão associativista
Iservport recipes
iservport - Uma Plataforma de Monitoramento para sua empresa e sua rede de ne...
Capital Humano no Setor de TI

Semelhante a CQRS/ES com Lagom (10)

PPTX
Como o iFood usou CQRS para escalar a contabilização de +30M de pedidos por m...
PDF
PPTX
Como construir software altamente eficiente com CQRS
PDF
Introdução a Microservices com Node.JS
PDF
Arquitetura funcional em microservices, 4 anos depois
PDF
Projetando uma Arquitetura Expressiva
PDF
Arquitetura Funcional em Microservices
PDF
[DTC21] Thiago Lima - Do Zero ao 100 no Mundo de Microservices
PDF
Escalabilidade via Software no ExpressoV3
PDF
Escalando aplicações utilizando o padrão CQRS
Como o iFood usou CQRS para escalar a contabilização de +30M de pedidos por m...
Como construir software altamente eficiente com CQRS
Introdução a Microservices com Node.JS
Arquitetura funcional em microservices, 4 anos depois
Projetando uma Arquitetura Expressiva
Arquitetura Funcional em Microservices
[DTC21] Thiago Lima - Do Zero ao 100 no Mundo de Microservices
Escalabilidade via Software no ExpressoV3
Escalando aplicações utilizando o padrão CQRS
Anúncio

Mais de Mauricio Fernandes de Castro (9)

PPTX
Zio motivation to create ZIO-native http package
PPTX
Apresentação do Aplicativo de Controle de Combustíveis
PPTX
Meetup ScalaCamp Curitiba, Fevereiro de 2017, Parte II
PPTX
Meetup ScalaCamp Curitiba, Fevereiro de 2017, Parte I
PPTX
PPTX
Iservport circle-game
PPT
O efeito chaminé.
Zio motivation to create ZIO-native http package
Apresentação do Aplicativo de Controle de Combustíveis
Meetup ScalaCamp Curitiba, Fevereiro de 2017, Parte II
Meetup ScalaCamp Curitiba, Fevereiro de 2017, Parte I
Iservport circle-game
O efeito chaminé.
Anúncio

Último (12)

PDF
SLIDES - AULA 1 - APRESENTAÇÃO - Material de Cleyton Souza - IFPB
PPT
10_ slides de Reuso sommerville cap 10.ppt
PDF
SLIDES - AULA 3 - CLASSES E OBJETOS EM JAVA - Material de Cleyton Souza - IFPB
PPT
09_Evolucao de software e_Refatoracao.ppt
PDF
SLIDES - AULA 2 - INTRODUÇÃO - Material de Cleyton Souza - IFPB
PPT
03_slide de Gerenciamento de Projetos .ppt
PDF
SLIDES - AULA 7 - SWING - Cleyton Souza - IFPB
PPT
05_slide especificacao de sistemas de software e a uml UML.ppt
PPT
00_Apresentacao sobre o livro do sommerville_ES.ppt
PPT
06_slide de Arquitetura_de_Software .ppt
PPT
07_slides de Estilos_Arquiteturais sommerville.ppt
PDF
SLIDES - AULA 5 - HERANÇA - Material de Cleyton Souza - IFPB
SLIDES - AULA 1 - APRESENTAÇÃO - Material de Cleyton Souza - IFPB
10_ slides de Reuso sommerville cap 10.ppt
SLIDES - AULA 3 - CLASSES E OBJETOS EM JAVA - Material de Cleyton Souza - IFPB
09_Evolucao de software e_Refatoracao.ppt
SLIDES - AULA 2 - INTRODUÇÃO - Material de Cleyton Souza - IFPB
03_slide de Gerenciamento de Projetos .ppt
SLIDES - AULA 7 - SWING - Cleyton Souza - IFPB
05_slide especificacao de sistemas de software e a uml UML.ppt
00_Apresentacao sobre o livro do sommerville_ES.ppt
06_slide de Arquitetura_de_Software .ppt
07_slides de Estilos_Arquiteturais sommerville.ppt
SLIDES - AULA 5 - HERANÇA - Material de Cleyton Souza - IFPB

CQRS/ES com Lagom