Bounded Context e CQRS na evolução de aplicações .NET legadas
-
Upload
yan-justino -
Category
Technology
-
view
1.202 -
download
2
Transcript of Bounded Context e CQRS na evolução de aplicações .NET legadas
![Page 1: Bounded Context e CQRS na evolução de aplicações .NET legadas](https://reader034.fdocuments.net/reader034/viewer/2022051502/58efdecf1a28ab616b8b463d/html5/thumbnails/1.jpg)
Bounded Context e CQRSEvolução de aplicações .NET legadas
![Page 2: Bounded Context e CQRS na evolução de aplicações .NET legadas](https://reader034.fdocuments.net/reader034/viewer/2022051502/58efdecf1a28ab616b8b463d/html5/thumbnails/2.jpg)
ARQUITETO DE SOFTWAREBACHAREL EM ANÁLISE DE SISTEMAS
MESTRANDO NO CURSO DE ENG. DE SOFTWARE PELA UFRN
Há 15 anos se dedicando a construção de sistemas corporativos.
@yanjustino
facebook/yanjustino
youtube/academia .net para zumbis
youtube/aspnet cast
![Page 3: Bounded Context e CQRS na evolução de aplicações .NET legadas](https://reader034.fdocuments.net/reader034/viewer/2022051502/58efdecf1a28ab616b8b463d/html5/thumbnails/3.jpg)
2 0 A n o s d e A T I V I D A D Ee m p r e s a d e t e c n o l o g i af o c a d a e m p e s s o a sd i v e r s o s s e r v i ç o s r e a l i z a d o s4 2 0 i v i a n o s e m a ç ã o !
![Page 4: Bounded Context e CQRS na evolução de aplicações .NET legadas](https://reader034.fdocuments.net/reader034/viewer/2022051502/58efdecf1a28ab616b8b463d/html5/thumbnails/4.jpg)
![Page 5: Bounded Context e CQRS na evolução de aplicações .NET legadas](https://reader034.fdocuments.net/reader034/viewer/2022051502/58efdecf1a28ab616b8b463d/html5/thumbnails/5.jpg)
Secretaria de estado da tributação do RN
SET
Cidadão
Auditores
Gestão
Contribuinte
A Secretaria de Estado da Tributação do Rio Grande do Nor te - SET/RN - é uma administração tributária cuja finalidade é a ar recadação de tributos estaduais e a fiscalização das operações que os geram.
Para que a SET/RN possa atender as necessidades relacionadas às atividades fins, em cumprimento as suas obrigações, se faz necessário manter funcionando cerca de 70 (setenta) sistemas e subsistemas que abrangem a área tributária envolvendo os impostos de sua competência, assim como as ofer tas de serviços aos contribuintes e cidadãos através da internet.
![Page 6: Bounded Context e CQRS na evolução de aplicações .NET legadas](https://reader034.fdocuments.net/reader034/viewer/2022051502/58efdecf1a28ab616b8b463d/html5/thumbnails/6.jpg)
![Page 7: Bounded Context e CQRS na evolução de aplicações .NET legadas](https://reader034.fdocuments.net/reader034/viewer/2022051502/58efdecf1a28ab616b8b463d/html5/thumbnails/7.jpg)
evolução de sistemas : Adaptação
![Page 8: Bounded Context e CQRS na evolução de aplicações .NET legadas](https://reader034.fdocuments.net/reader034/viewer/2022051502/58efdecf1a28ab616b8b463d/html5/thumbnails/8.jpg)
evolução de sistemas: especiação
![Page 9: Bounded Context e CQRS na evolução de aplicações .NET legadas](https://reader034.fdocuments.net/reader034/viewer/2022051502/58efdecf1a28ab616b8b463d/html5/thumbnails/9.jpg)
evolução de sistemas : extinção
![Page 10: Bounded Context e CQRS na evolução de aplicações .NET legadas](https://reader034.fdocuments.net/reader034/viewer/2022051502/58efdecf1a28ab616b8b463d/html5/thumbnails/10.jpg)
Lugar comum do código LEGADO
♻ Modelo implícito estabelecido♻ Tipicamente não possui uma API pública programável
♻ Escrito pra funcionar, nem sempre para o reuso
♻ Escrito anos atrás com alguma prática agora obsoleta
![Page 11: Bounded Context e CQRS na evolução de aplicações .NET legadas](https://reader034.fdocuments.net/reader034/viewer/2022051502/58efdecf1a28ab616b8b463d/html5/thumbnails/11.jpg)
Ferramenta da evolução de sistemas LEGADOs
♻ arquitetura de software
Conjunto de estruturas necessárias para analisar um dado sistema, composta por elementos de software, relações entre eles,
e propriedades de ambos
⚠ ponte entre os objetivos de negocio do sistema e o sistema resultante final.
⚠ as decisões de projeto realizadas no desenvolvimento de um sistema para atender atributos de qualidade.
![Page 12: Bounded Context e CQRS na evolução de aplicações .NET legadas](https://reader034.fdocuments.net/reader034/viewer/2022051502/58efdecf1a28ab616b8b463d/html5/thumbnails/12.jpg)
Evoluindo sistemas LEGADOs
![Page 13: Bounded Context e CQRS na evolução de aplicações .NET legadas](https://reader034.fdocuments.net/reader034/viewer/2022051502/58efdecf1a28ab616b8b463d/html5/thumbnails/13.jpg)
evoluindo sistemas LEGADOs
![Page 14: Bounded Context e CQRS na evolução de aplicações .NET legadas](https://reader034.fdocuments.net/reader034/viewer/2022051502/58efdecf1a28ab616b8b463d/html5/thumbnails/14.jpg)
Evoluindo sistemas LEGADOs
![Page 15: Bounded Context e CQRS na evolução de aplicações .NET legadas](https://reader034.fdocuments.net/reader034/viewer/2022051502/58efdecf1a28ab616b8b463d/html5/thumbnails/15.jpg)
DOMAIN-DRIVEN DESIGN
O VALOR AGREGADO PELO DDD
Domain-Driven Design é uma abordagemparticular sobre designe desenvolvimento de software!
DDD é sobre “mastigar” conhecimento de um dado domínio de negócio e produção de um modelo de
software que o espelhe.
![Page 16: Bounded Context e CQRS na evolução de aplicações .NET legadas](https://reader034.fdocuments.net/reader034/viewer/2022051502/58efdecf1a28ab616b8b463d/html5/thumbnails/16.jpg)
DOMAIN-DRIVEN DESIGN
Os dois grandes erros
Adotar Domain-Driven Design sóporque isso lhe
soa legal
Ou simplesmente ignorá-lo por acreditar que seusistema é um pouco mais complexo que
um simples CRUD
![Page 17: Bounded Context e CQRS na evolução de aplicações .NET legadas](https://reader034.fdocuments.net/reader034/viewer/2022051502/58efdecf1a28ab616b8b463d/html5/thumbnails/17.jpg)
DOMAIN-DRIVEN DESIGN
em duas partes distintas
Domain-Driven Design
Visão analítica
Domain-Driven Design
Visão estratégica
![Page 18: Bounded Context e CQRS na evolução de aplicações .NET legadas](https://reader034.fdocuments.net/reader034/viewer/2022051502/58efdecf1a28ab616b8b463d/html5/thumbnails/18.jpg)
DOMAIN-DRIVEN DESIGN
visão analítica
![Page 19: Bounded Context e CQRS na evolução de aplicações .NET legadas](https://reader034.fdocuments.net/reader034/viewer/2022051502/58efdecf1a28ab616b8b463d/html5/thumbnails/19.jpg)
DOMAIN-DRIVEN DESIGN
visão analítica
Que práticas e técnicas de processo você e suaempresa adota para garantir uma boa
arquitetura?
![Page 20: Bounded Context e CQRS na evolução de aplicações .NET legadas](https://reader034.fdocuments.net/reader034/viewer/2022051502/58efdecf1a28ab616b8b463d/html5/thumbnails/20.jpg)
DOMAIN-DRIVEN DESIGN
visão analítica
![Page 21: Bounded Context e CQRS na evolução de aplicações .NET legadas](https://reader034.fdocuments.net/reader034/viewer/2022051502/58efdecf1a28ab616b8b463d/html5/thumbnails/21.jpg)
DOMAIN-DRIVEN DESIGN
ubiquitous language
![Page 22: Bounded Context e CQRS na evolução de aplicações .NET legadas](https://reader034.fdocuments.net/reader034/viewer/2022051502/58efdecf1a28ab616b8b463d/html5/thumbnails/22.jpg)
DOMAIN-DRIVEN DESIGN
ubiquitous language
![Page 23: Bounded Context e CQRS na evolução de aplicações .NET legadas](https://reader034.fdocuments.net/reader034/viewer/2022051502/58efdecf1a28ab616b8b463d/html5/thumbnails/23.jpg)
DOMAIN-DRIVEN DESIGN
ubiquitous language
![Page 24: Bounded Context e CQRS na evolução de aplicações .NET legadas](https://reader034.fdocuments.net/reader034/viewer/2022051502/58efdecf1a28ab616b8b463d/html5/thumbnails/24.jpg)
DOMAIN-DRIVEN DESIGN
ubiquitous language
DDD é sobre a
Redução de complexidade
No softwareEric Evans
Arquitetura é sobre intençãoRobert C. Martin
![Page 25: Bounded Context e CQRS na evolução de aplicações .NET legadas](https://reader034.fdocuments.net/reader034/viewer/2022051502/58efdecf1a28ab616b8b463d/html5/thumbnails/25.jpg)
DOMAIN-DRIVEN DESIGN
visão estratégica
![Page 26: Bounded Context e CQRS na evolução de aplicações .NET legadas](https://reader034.fdocuments.net/reader034/viewer/2022051502/58efdecf1a28ab616b8b463d/html5/thumbnails/26.jpg)
DOMAIN-DRIVEN DESIGN
visão estratégica
Que práticas e técnicas de produto você e suaempresa adota para garantir uma boa
arquitetura?
![Page 27: Bounded Context e CQRS na evolução de aplicações .NET legadas](https://reader034.fdocuments.net/reader034/viewer/2022051502/58efdecf1a28ab616b8b463d/html5/thumbnails/27.jpg)
DOMAIN-DRIVEN DESIGN
visão estratégica
![Page 28: Bounded Context e CQRS na evolução de aplicações .NET legadas](https://reader034.fdocuments.net/reader034/viewer/2022051502/58efdecf1a28ab616b8b463d/html5/thumbnails/28.jpg)
DOMAIN-DRIVEN DESIGN
bounded context
![Page 29: Bounded Context e CQRS na evolução de aplicações .NET legadas](https://reader034.fdocuments.net/reader034/viewer/2022051502/58efdecf1a28ab616b8b463d/html5/thumbnails/29.jpg)
DOMAIN-DRIVEN DESIGN
bounded context: UMA VISÃO CLÁSSICA
![Page 30: Bounded Context e CQRS na evolução de aplicações .NET legadas](https://reader034.fdocuments.net/reader034/viewer/2022051502/58efdecf1a28ab616b8b463d/html5/thumbnails/30.jpg)
DOMAIN-DRIVEN DESIGN
bounded context: UMA VISÃO CLÁSSICA
![Page 31: Bounded Context e CQRS na evolução de aplicações .NET legadas](https://reader034.fdocuments.net/reader034/viewer/2022051502/58efdecf1a28ab616b8b463d/html5/thumbnails/31.jpg)
DOMAIN-DRIVEN DESIGN
bounded context: UMA VISÃO CLÁSSICA
uma utopia maravilhosa
![Page 32: Bounded Context e CQRS na evolução de aplicações .NET legadas](https://reader034.fdocuments.net/reader034/viewer/2022051502/58efdecf1a28ab616b8b463d/html5/thumbnails/32.jpg)
DOMAIN-DRIVEN DESIGN
bounded context: UMA VISÃO CLÁSSICA
uma ilusão de ótica
![Page 33: Bounded Context e CQRS na evolução de aplicações .NET legadas](https://reader034.fdocuments.net/reader034/viewer/2022051502/58efdecf1a28ab616b8b463d/html5/thumbnails/33.jpg)
DOMAIN-DRIVEN DESIGN
bounded context: UMA VISÃO CLÁSSICA
![Page 34: Bounded Context e CQRS na evolução de aplicações .NET legadas](https://reader034.fdocuments.net/reader034/viewer/2022051502/58efdecf1a28ab616b8b463d/html5/thumbnails/34.jpg)
DOMAIN-DRIVEN DESIGN
bounded context: UMA VISÃO CLÁSSICA
![Page 35: Bounded Context e CQRS na evolução de aplicações .NET legadas](https://reader034.fdocuments.net/reader034/viewer/2022051502/58efdecf1a28ab616b8b463d/html5/thumbnails/35.jpg)
DOMAIN-DRIVEN DESIGN
bounded context: UMA VISÃO MODERNA
![Page 36: Bounded Context e CQRS na evolução de aplicações .NET legadas](https://reader034.fdocuments.net/reader034/viewer/2022051502/58efdecf1a28ab616b8b463d/html5/thumbnails/36.jpg)
DOMAIN-DRIVEN DESIGN
bounded context: UMA VISÃO MODERNA
![Page 37: Bounded Context e CQRS na evolução de aplicações .NET legadas](https://reader034.fdocuments.net/reader034/viewer/2022051502/58efdecf1a28ab616b8b463d/html5/thumbnails/37.jpg)
DOMAIN-DRIVEN DESIGN
dividindo bounded context
![Page 38: Bounded Context e CQRS na evolução de aplicações .NET legadas](https://reader034.fdocuments.net/reader034/viewer/2022051502/58efdecf1a28ab616b8b463d/html5/thumbnails/38.jpg)
DOMAIN-DRIVEN DESIGN
dividindo bounded context
![Page 39: Bounded Context e CQRS na evolução de aplicações .NET legadas](https://reader034.fdocuments.net/reader034/viewer/2022051502/58efdecf1a28ab616b8b463d/html5/thumbnails/39.jpg)
DOMAIN-DRIVEN DESIGN
dividindo bounded context
CADASTROS FISCAISContextoparacadastrodoscontribuintesdoRioGrandedoNorte
parcelamentosContextoparaparcelamentodosdébitos doscontribuintesdoRioGrandedoNorte
segurançaContextosuporte paracontrolar todos osAcessos decontribuintes ecidadão doRN
* A RedeSIM (Rede Nacional para a Simplificação do Registro e da Legalização de Empresas e Negócios) foicriada pela lei nº 11.598 de 2007 para permitir que o cidadão abra ou regularize sua pessoa jurídica de forma simplificada e sem burocracia
![Page 40: Bounded Context e CQRS na evolução de aplicações .NET legadas](https://reader034.fdocuments.net/reader034/viewer/2022051502/58efdecf1a28ab616b8b463d/html5/thumbnails/40.jpg)
DOMAIN-DRIVEN DESIGN
bounded context: EXPLORANDO ARQUITETURAS
![Page 41: Bounded Context e CQRS na evolução de aplicações .NET legadas](https://reader034.fdocuments.net/reader034/viewer/2022051502/58efdecf1a28ab616b8b463d/html5/thumbnails/41.jpg)
DOMAIN-DRIVEN DESIGN
bounded context: EXPLORANDO ARQUITETURAS
QueryComponentedepesquisaDecadastrosfiscais
commandComponentedepersitênciaDecadastrosfiscais
Arquit. hexagonalComponentedesegurançaDaSec.Tributação
![Page 42: Bounded Context e CQRS na evolução de aplicações .NET legadas](https://reader034.fdocuments.net/reader034/viewer/2022051502/58efdecf1a28ab616b8b463d/html5/thumbnails/42.jpg)
DOMAIN-DRIVEN DESIGN
bounded context : extrAINdo api
CADASTROS FISCAISContextoparacadastrodoscontribuintesdoRioGrandedoNorte
![Page 43: Bounded Context e CQRS na evolução de aplicações .NET legadas](https://reader034.fdocuments.net/reader034/viewer/2022051502/58efdecf1a28ab616b8b463d/html5/thumbnails/43.jpg)
DOMAIN-DRIVEN DESIGN
bounded context: EVOLUINDO LEGADO
![Page 44: Bounded Context e CQRS na evolução de aplicações .NET legadas](https://reader034.fdocuments.net/reader034/viewer/2022051502/58efdecf1a28ab616b8b463d/html5/thumbnails/44.jpg)
DOMAIN-DRIVEN DESIGN
bounded context: COMUNICAÇÃO
![Page 45: Bounded Context e CQRS na evolução de aplicações .NET legadas](https://reader034.fdocuments.net/reader034/viewer/2022051502/58efdecf1a28ab616b8b463d/html5/thumbnails/45.jpg)
DOMAIN-DRIVEN DESIGN
bounded context: COMUNICAÇÃO
![Page 46: Bounded Context e CQRS na evolução de aplicações .NET legadas](https://reader034.fdocuments.net/reader034/viewer/2022051502/58efdecf1a28ab616b8b463d/html5/thumbnails/46.jpg)
DOMAIN-DRIVEN DESIGN
bounded context: COMUNICAÇÃO
Shared kernel/
Values objects Share submodel
Anti-corruption
layer
![Page 47: Bounded Context e CQRS na evolução de aplicações .NET legadas](https://reader034.fdocuments.net/reader034/viewer/2022051502/58efdecf1a28ab616b8b463d/html5/thumbnails/47.jpg)
cqrs
command/query responsibility segregation
![Page 48: Bounded Context e CQRS na evolução de aplicações .NET legadas](https://reader034.fdocuments.net/reader034/viewer/2022051502/58efdecf1a28ab616b8b463d/html5/thumbnails/48.jpg)
limitações DA MODELAGEM DE DOMÍNIO
![Page 49: Bounded Context e CQRS na evolução de aplicações .NET legadas](https://reader034.fdocuments.net/reader034/viewer/2022051502/58efdecf1a28ab616b8b463d/html5/thumbnails/49.jpg)
Da MODELAGEM DE DOMÍNIO para cqrs
Query
command
![Page 50: Bounded Context e CQRS na evolução de aplicações .NET legadas](https://reader034.fdocuments.net/reader034/viewer/2022051502/58efdecf1a28ab616b8b463d/html5/thumbnails/50.jpg)
Cqrs não é uma arquitetura top-level
CQRS é simplesmente um padrão que lhe orienta na arquitetura de um contexto limitado de um sistema de grande escala
Uma análise baseada em uma linguagem ubíqua e que
tem como objetivo identificar contextos limitados
continua a ser um passo preliminar recomendado
contudo
![Page 51: Bounded Context e CQRS na evolução de aplicações .NET legadas](https://reader034.fdocuments.net/reader034/viewer/2022051502/58efdecf1a28ab616b8b463d/html5/thumbnails/51.jpg)
Alguns benefícios do cQRS
⚠ Simplificação do design
⚠ Potencial para uma performance e escalabilidade melhorada
⚠ Efeitos colaterais minimizado
![Page 52: Bounded Context e CQRS na evolução de aplicações .NET legadas](https://reader034.fdocuments.net/reader034/viewer/2022051502/58efdecf1a28ab616b8b463d/html5/thumbnails/52.jpg)
Amadurecendo aplicação com cqrs
![Page 53: Bounded Context e CQRS na evolução de aplicações .NET legadas](https://reader034.fdocuments.net/reader034/viewer/2022051502/58efdecf1a28ab616b8b463d/html5/thumbnails/53.jpg)
Antes de software poder ser reutilizável
ele primeiro tem de ser utilizável
![Page 54: Bounded Context e CQRS na evolução de aplicações .NET legadas](https://reader034.fdocuments.net/reader034/viewer/2022051502/58efdecf1a28ab616b8b463d/html5/thumbnails/54.jpg)
REFERÊNCIAS : livros
Implementing
Domain-Driven Design
VaughnVernonISBN-13: 860-1404568893ISBN-10: 0321834577
Domain-Driven Design: Tackling
Complexity in the Heart of Software
EricEvansISBN-13: 978-0321125217ISBN-10: 0321125215
Patterns, Principles, and Practices
of Domain-Driven Design
ScottMillettISBN-13: 978-1118714706ISBN-10: 1118714709
Microsoft .NET - Architecting
Applications for the Enterprise
DinoEspositoISBN-13: 978-0735685352ISBN-10: 0735685355
![Page 55: Bounded Context e CQRS na evolução de aplicações .NET legadas](https://reader034.fdocuments.net/reader034/viewer/2022051502/58efdecf1a28ab616b8b463d/html5/thumbnails/55.jpg)
REFERÊNCIAS acadêmicas
KULESZA, UArquitetura de Software: Mestrado Profissional em Engenharia de Software; 127 slidesBolsista deProdutividade em Pesquisa 2- CACC | Orientador deMestrado | Orientador deDoutoradoDoutorado em Informática pelaPontifícia Universidade Católica doRiodeJaneiro,Brasil(2007)ProfessorAdjunto IdaUniversidade FederaldoRioGrandedoNorte,Brasilhttp://buscatextual.cnpq.br/buscatextual/visualizacv.jsp?id=K4769232P2