Aleluia!! Consegui entender!! Só pra esclacerer, a camada de consulta(query) pode ser um cash que armazena o estado atual do banco de dados. Quando o banco de dados sofre uma alteração através da camada de comando(command), um evento é lançado com destino à camada de consulta, que é atualizado com os novos dados enviados da camada command. Por isso event sourcing e cqrs tem uma forte ligação!! Me corrijam se eu estiver errado
Esse lance com repositórios somente para comandos e queries eu esbarrei na prática. Realmente fica muito mais claro e evita que o repositório fique com funções desconexas .
MDS vey que explicação foda, sou QA e estou estudando mais sobre arquitetura e até pouco tempo atrás não fazia ideia do que era CQRS mas consegui entender o macro do que é, parabéns pela didática.
Quem bom que agora temos alguém que nos faz pensar mais criticamente sobre desenvolvimento e arquitetura de software profissionalmente, no RUclips. Continue, Elemar, por favor!
Excelente explicação, parabéns! Então se a CQRS pode nos ajudar nisso, só que isso aumenta muito a complexidade de um sistema. Precisamos ter cuidado de quando implementar. E até pela grande complexidade na separação de modelo de escrita e leitura.
Eu sempre vejo qual a relação custo benefício de implementar qualquer princípio, pois todo princípio possui situações de exceção. Por exemplo, em um método save() que persiste uma nova instância de uma Entidade, parece fazer sentido que o método retorne o ID da entidade criada.
Gostei da explicação, ao final você menciona que o Greg Young é o descobridor do CQRS, de fato. Porém também concordo com você quando menciona que podem ocorrer seus 'mixes' entre os conceitos para adaptar-se a SEUS projetos.
Elemar Jr, obrigado por compartilhar seu conhecimento. Toda a comunidade deve te agradecer muito, certamente(Peguei emprestado de suas frases) você se dedica muito para manter sua base de conhecimento e nos entregar isso tudo "de graça". Alias a qualidade do seu vídeo combinando o fundo com a camisa Polo está perfeito. =)
Uma das melhores palestras que já vi sobre CQRS é uma que o próprio Elemar fez, em um evento, em 2012. Se procurarem bem devem achar nas profundezas do RUclips haha.
Em 13:10 CQRS talvez não exista sem Event Sourcing qdo se utiliza bancos de dados segregados para commands e queries, ja qdo se utiliza um unico bd acho q pode existir sem event sourcing
Excelente explicação sobre CQRS! Agora fiquei muito interessado na parte de separação de banco de dados (um para comandos outro para consultas), daria uma discussão interessante sobre: como projetar um modelo ideal para sincronização dos bancos de dados.
Parabéns Elemar, você tem uma capacidade de transferir idéias e conhecimento de uma maneira muito fluida e de fácil entendimento. Obrigado por dividir.
Eu tive que pausar o vídeo no meio para pegar pedaços do meu cérebro que explodiu no teto. Excelente apresentação de conteúdo! Estou boquiaberto com as possibilidades.
Muito obrigado por esse conteúdo riquíssimo, você está conseguindo abrir muito a minha mente com seus vídeos. Eu tenho uma dúvida aqui. No minuto 10:42 você disse que Repositories são artefatos de domínio, logo, eles seriam serviriam somente para Command Stack. Queria saber no caso como funcionaria uma consulta, por exemplo, na Query Stack sem passar por um repositorio. Que outro artefato utilizariamos? Um forte abraço e obrigado pelo conteúdo.
Vídeo chegou em boa hora. Primeira vez que ouvir em falar sobre o assunto foi na live do Branas com sua participação, daí comecei a estudar sobre os tópicos que não conhecia. Você pretende gravar um vídeo falando sobre event sourcing ?
Duvida : Imagina um cenario que vc tem um sistema de seguros que ao passar informações do motorista, veiculos e outras informações a mais, o metodo EfetuarCotacao de uma determinada API é chamado. 1- Internamente serão efetuados alguns commands que executarão serviços de dominio para cadastrar os dados do cliente e os dados da cotação. 2- Esse metodo fará algumas consultas no banco de dados que servirão de base para fazer o calculo do seguro 3-Por fim, o seguro será calculado Se abaixo da application ja temos commands e queries separados, como fazer esses 3 itens funcionarem juntos uma vez que o calculo do seguro depende dos commands efetuados, das queries realizadas e das regras de calculo? Dentro do meu domain service que foi chamado a partir de um command eu poderia chamar um metodo de consulta do meu repositório mesmo sendo uma query? Da maneira que foi explicado no video, tenho a impressão que eu não poderia fazer isso, porem acho que fica estranho minha application orquestrar a execução dos commands para gravar informações do cliente, cotação, etc.., depois chamar as queries, e depois chamar novamente um command que irá chamar meu domainservice.efetuarcalculo()
Conceitualmente o CQRS é isso mesmo. O desafio é grande quando se pensa em duas bases de dados diferentes (as vezes usando tecnologias diferentes). Como o Elemar disse, não é um requisito obrigatório, mas em alguns cenários pode trazer bons ganhos de performance. Quanto ao Event Sourcing eu concordo com o Elemar. CQRS pode ser usando independente de Event Sourcing, que é um padrão muito interessante porém super complexo.
Fiquei pensativo sobre o que você falou sobre requisições http, já tive casos que por exemplo, na hora de registrar(post) um pedido de compra, a aplicação retorna um boleto. Para não ficar transitando várias vezes na rede, o mesmo endpoint tanto realiza o registro do pedido, como realiza um retorno(get), de um boleto, código de barras, enfim e as vezes até registra em uma fila o envio de um e-mail, etc. O que você pensa sobre isso?
Sei que sua pergunta foi para ele. Porém quero opinar. Acho que o ideal seria você implementar esse processo em uma fila, avisando o usuário que o processo será realizado em segundo plano, ao ser finalizado você envia uma notificação para ele, pode até mesmo ser enviado o link para que ele já possa visualizar o boleto. Dessa forma você consegue escalar, desacoplar e talvez até poupar com recursos de máquinas
Olá gostei muito da aula, mas até onde entendi após diversas pesquisas é que o CQRS não necessariamente depende de um message bus, uma fila ou algo semelhante. Estou certo?
Elemar, neste video de 2014 o Greg Young diz: "You can use CQRS without Event Sourcing but with Event Sourcing you must use CQRS". ruclips.net/video/JHGkaShoyNs/видео.html&t=60 Sabe dizer se o Greg mudou de opinião de lá pra cá? Senão vocês tem a mesma visão 👍 🙂 E parabéns. Seus conteúdos são excelentes e uma referencia pra mim.
Que explicação incrivel e rica em detalhes, muito obrigado.
Melhor explicação que vi até agora.
Aleluia!! Consegui entender!! Só pra esclacerer, a camada de consulta(query) pode ser um cash que armazena o estado atual do banco de dados. Quando o banco de dados sofre uma alteração através da camada de comando(command), um evento é lançado com destino à camada de consulta, que é atualizado com os novos dados enviados da camada command. Por isso event sourcing e cqrs tem uma forte ligação!! Me corrijam se eu estiver errado
Simples e direto. Parabéns 👏👏👏
Explicação melhor que essa, nunca vi! Parabéns Elemar! Cada conteúdo que nossa senhora.
Continua sendo a melhor explicação que vi!
Ótimo vídeo, desvendou em pouco tempo o que eu demorei meses para aprender, parabéns Elemar!
Parabéns, excelente didática.
Mandei pro grupo do trabalho. rsrs
Gostei muito. Foi bem for Dummies mesmo...e pra mim isso é excencial
Não sou de ficar comentando nos vídeos, mas a didática e material que você utilizou para explicar o conceito foi sensacional. Parabéns mesmo
Excelente, didática muito boa. Eu sou iniciante e consegui compreender tranquilamente, achei show!
Obrigado e bons estudos!
Excellent !!
Muito boa a explicação! Obrigado pelo vídeo.
Ótimo conteúdo!
Muito bom mesmo!! Eu gostei bastante da explicação. Elemar Jr é brabo demais!
Parabéns pela explicação!
Explicação de alto nível, gosto muito de seus videos e recomendo muito.
Simples e objetivo, obrigado!
Parabéns pelo conteúdo!
Obrigado pelo conteúdo, me ajudou bastante.
Gratidão Elemar. Simples, direto e sem complicações.
Esse lance com repositórios somente para comandos e queries eu esbarrei na prática. Realmente fica muito mais claro e evita que o repositório fique com funções desconexas
.
gostei muito da explicação, objetiva sem ser superficial, e sem ser verboso demais tbm, parabéns!
Que didática e explicação incrível...
Em nenhum momento fiquei disperso ou perdi a atenção. Parabéns!
MDS vey que explicação foda, sou QA e estou estudando mais sobre arquitetura e até pouco tempo atrás não fazia ideia do que era CQRS mas consegui entender o macro do que é, parabéns pela didática.
Excelente explicação! Parabéns!
Explicado de forma muito simples e em um vídeo curto! Conteúdo muito bom!
Que aula sensacional!
Excelente explicação.
Muito bom!! Conheci pela última live do Branas!! Sensacional Elemar, muito obrigado por compartilhar todo esse conhecimento.
Sensacional, acompanho desde a palestra da qcon sobre rust. Depois disso me apaixonei por esse tipo de conteúdo e didática.
Quem bom que agora temos alguém que nos faz pensar mais criticamente sobre desenvolvimento e arquitetura de software profissionalmente, no RUclips. Continue, Elemar, por favor!
Olá Elemar, muito legal você ter tocado no pontos da sincronização e a relacionação com os caches. Ótimo video, simples e objetivo.
Excelente! obrigado.
Excelente explicação, parabéns!
Então se a CQRS pode nos ajudar nisso, só que isso aumenta muito a complexidade de um sistema. Precisamos ter cuidado de quando implementar. E até pela grande complexidade na separação de modelo de escrita e leitura.
Eu sempre vejo qual a relação custo benefício de implementar qualquer princípio, pois todo princípio possui situações de exceção.
Por exemplo, em um método save() que persiste uma nova instância de uma Entidade, parece fazer sentido que o método retorne o ID da entidade criada.
Olha o nível de clareza e didática... sensacional.
Like 43º.
Ótimo te conhecer do canal do Rodrigo Branas.
Show...
Rapaz como e bom seu canal. Show
Obrigado pelo elogio!!!
Melhor explicação Elemar. Obrigado!!
Muito bom Elemar!
Sensacional, muito bem explicado, aula nota 1000000
Gostei da explicação, ao final você menciona que o Greg Young é o descobridor do CQRS, de fato. Porém também concordo com você quando menciona que podem ocorrer seus 'mixes' entre os conceitos para adaptar-se a SEUS projetos.
Que didática excepcional!
Elemar Jr, obrigado por compartilhar seu conhecimento. Toda a comunidade deve te agradecer muito, certamente(Peguei emprestado de suas frases) você se dedica muito para manter sua base de conhecimento e nos entregar isso tudo "de graça". Alias a qualidade do seu vídeo combinando o fundo com a camisa Polo está perfeito. =)
Uma das melhores palestras que já vi sobre CQRS é uma que o próprio Elemar fez, em um evento, em 2012. Se procurarem bem devem achar nas profundezas do RUclips haha.
Seria este? ruclips.net/video/lBr1DCfM90U/видео.html
Cara!!! Meu!!! essa explicação foi direto ao ponto! É muito raro encontrar um conteúdo tão top como este. Muito obrigado!
A inscrição no canal já se pagou neste vídeo, que explicação.
Em 13:10 CQRS talvez não exista sem Event Sourcing qdo se utiliza bancos de dados segregados para commands e queries, ja qdo se utiliza um unico bd acho q pode existir sem event sourcing
Sensacional, como todo conteúdo do Elemar.
Que didática incrível. Não conheci o canal, parabéns pelo conteúdo!
Excelente explicação sobre CQRS! Agora fiquei muito interessado na parte de separação de banco de dados (um para comandos outro para consultas), daria uma discussão interessante sobre: como projetar um modelo ideal para sincronização dos bancos de dados.
acho que server até pra um TCC hehehe
Parabéns Elemar, você tem uma capacidade de transferir idéias e conhecimento de uma maneira muito fluida e de fácil entendimento. Obrigado por dividir.
Eu tive que pausar o vídeo no meio para pegar pedaços do meu cérebro que explodiu no teto.
Excelente apresentação de conteúdo! Estou boquiaberto com as possibilidades.
Tendo um banco de escrita e um de leitura, dá pra escalar os de leitura com N maquinas para leitura, sincronia seria unidirecional.
Conteúdo de alta qualidade! Ótima e muito didática explicação.
Excelente didática Elemar. Parabéns pelo excelente trabalho!!!
Elemar, estou adorando seus vídeos sobre arquitetura, por favor, continue com este ótimo trabalho
Excelente conteúdo
òtima explicação
Muito obrigado por esse conteúdo riquíssimo, você está conseguindo abrir muito a minha mente com seus vídeos. Eu tenho uma dúvida aqui.
No minuto 10:42 você disse que Repositories são artefatos de domínio, logo, eles seriam serviriam somente para Command Stack. Queria saber no caso como funcionaria uma consulta, por exemplo, na Query Stack sem passar por um repositorio. Que outro artefato utilizariamos?
Um forte abraço e obrigado pelo conteúdo.
Excelente explicação!
Excelente explicacão!!!
Obrigado 😃
Cara, seu canal está sensacional, parabéns pelo conteúdo e por transmitir esse conhecimento, minha equipe inteira está te acompanhando
Muito bem explicado! Parabéns!
Ótima explicação!
Vídeo chegou em boa hora. Primeira vez que ouvir em falar sobre o assunto foi na live do Branas com sua participação, daí comecei a estudar sobre os tópicos que não conhecia. Você pretende gravar um vídeo falando sobre event sourcing ?
Seu desejo é uma ordem. :)
ruclips.net/video/f4GolIiNIvc/видео.html
Que conteúdo rico e que didática incrível. Muito obrigado por compartilhar o conhecimento!
Elemar, obrigado por compartilhar !
Indicaria algum material complementar para aprofundar no assunto ?
👏👏👏👏
Abriu minha mente ainda mais. Eu até uso CQRS porém, para uma consulta a um "Cliente" por exemplo, eu recorro ao repositório. Melhor separar né?
Já vi esse padrão implementado em JavaScript e SGBD Redis, interessante.
Duvida : Imagina um cenario que vc tem um sistema de seguros que ao passar informações do motorista, veiculos e outras informações a mais, o metodo EfetuarCotacao de uma determinada API é chamado.
1- Internamente serão efetuados alguns commands que executarão serviços de dominio para cadastrar os dados do cliente e os dados da cotação.
2- Esse metodo fará algumas consultas no banco de dados que servirão de base para fazer o calculo do seguro
3-Por fim, o seguro será calculado
Se abaixo da application ja temos commands e queries separados, como fazer esses 3 itens funcionarem juntos uma vez que o calculo do seguro depende dos commands efetuados, das queries realizadas e das regras de calculo?
Dentro do meu domain service que foi chamado a partir de um command eu poderia chamar um metodo de consulta do meu repositório mesmo sendo uma query?
Da maneira que foi explicado no video, tenho a impressão que eu não poderia fazer isso, porem acho que fica estranho minha application orquestrar a execução dos commands para gravar informações do cliente, cotação, etc.., depois chamar as queries, e depois chamar novamente um command que irá chamar meu domainservice.efetuarcalculo()
Conceitualmente o CQRS é isso mesmo. O desafio é grande quando se pensa em duas bases de dados diferentes (as vezes usando tecnologias diferentes). Como o Elemar disse, não é um requisito obrigatório, mas em alguns cenários pode trazer bons ganhos de performance.
Quanto ao Event Sourcing eu concordo com o Elemar. CQRS pode ser usando independente de Event Sourcing, que é um padrão muito interessante porém super complexo.
Fiquei pensativo sobre o que você falou sobre requisições http,
já tive casos que por exemplo, na hora de registrar(post) um pedido de compra, a aplicação retorna um boleto.
Para não ficar transitando várias vezes na rede, o mesmo endpoint tanto realiza o registro do pedido, como realiza um retorno(get), de um boleto, código de barras, enfim e as vezes até registra em uma fila o envio de um e-mail, etc.
O que você pensa sobre isso?
Sei que sua pergunta foi para ele. Porém quero opinar. Acho que o ideal seria você implementar esse processo em uma fila, avisando o usuário que o processo será realizado em segundo plano, ao ser finalizado você envia uma notificação para ele, pode até mesmo ser enviado o link para que ele já possa visualizar o boleto.
Dessa forma você consegue escalar, desacoplar e talvez até poupar com recursos de máquinas
gostei muito
Frequentemente há comandos que necessitam de queries para serem validados. Num único "serviço"
👍🏼
Olá gostei muito da aula, mas até onde entendi após diversas pesquisas é que o CQRS não necessariamente depende de um message bus, uma fila ou algo semelhante. Estou certo?
Ah Elemar, ele pode até ser o cara que criou olho conceito, mas se vc conseguiu usar sem o Event Sourcing em campo, eu aceito...
Elemar, neste video de 2014 o Greg Young diz: "You can use CQRS without Event Sourcing but with Event Sourcing you must use CQRS".
ruclips.net/video/JHGkaShoyNs/видео.html&t=60
Sabe dizer se o Greg mudou de opinião de lá pra cá? Senão vocês tem a mesma visão 👍 🙂
E parabéns. Seus conteúdos são excelentes e uma referencia pra mim.
Devemos gravar com ele em alguns dias. Vamos ver o que ele diz.
@@EximiaCo Que top!
Bom, fica a questão. O que é que o Elemar faz, que não fica bem feito. Até deixar coisas complexas de entender ficam de forma simples
toma baixovoto e por mendigar inscrição, eu teria me inscrito se n tivesse mendigado.