55
Bounded Context e CQRS Evolução de aplicações .NET legadas

Bounded Context e CQRS na evolução de aplicações .NET legadas

Embed Size (px)

Citation preview

Page 1: Bounded Context e CQRS na evolução de aplicações .NET legadas

Bounded Context e CQRSEvolução de aplicações .NET legadas

Page 2: Bounded Context e CQRS na evolução de aplicações .NET legadas

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

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
Page 5: Bounded Context e CQRS na evolução de aplicações .NET legadas

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
Page 7: Bounded Context e CQRS na evolução de aplicações .NET legadas

evolução de sistemas : Adaptação

Page 8: Bounded Context e CQRS na evolução de aplicações .NET legadas

evolução de sistemas: especiação

Page 9: Bounded Context e CQRS na evolução de aplicações .NET legadas

evolução de sistemas : extinção

Page 10: Bounded Context e CQRS na evolução de aplicações .NET legadas

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

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

Evoluindo sistemas LEGADOs

Page 13: Bounded Context e CQRS na evolução de aplicações .NET legadas

evoluindo sistemas LEGADOs

Page 14: Bounded Context e CQRS na evolução de aplicações .NET legadas

Evoluindo sistemas LEGADOs

Page 15: Bounded Context e CQRS na evolução de aplicações .NET legadas

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

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

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

DOMAIN-DRIVEN DESIGN

visão analítica

Page 19: Bounded Context e CQRS na evolução de aplicações .NET legadas

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

DOMAIN-DRIVEN DESIGN

visão analítica

Page 21: Bounded Context e CQRS na evolução de aplicações .NET legadas

DOMAIN-DRIVEN DESIGN

ubiquitous language

Page 22: Bounded Context e CQRS na evolução de aplicações .NET legadas

DOMAIN-DRIVEN DESIGN

ubiquitous language

Page 23: Bounded Context e CQRS na evolução de aplicações .NET legadas

DOMAIN-DRIVEN DESIGN

ubiquitous language

Page 24: Bounded Context e CQRS na evolução de aplicações .NET legadas

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

DOMAIN-DRIVEN DESIGN

visão estratégica

Page 26: Bounded Context e CQRS na evolução de aplicações .NET legadas

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

DOMAIN-DRIVEN DESIGN

visão estratégica

Page 28: Bounded Context e CQRS na evolução de aplicações .NET legadas

DOMAIN-DRIVEN DESIGN

bounded context

Page 29: Bounded Context e CQRS na evolução de aplicações .NET legadas

DOMAIN-DRIVEN DESIGN

bounded context: UMA VISÃO CLÁSSICA

Page 30: Bounded Context e CQRS na evolução de aplicações .NET legadas

DOMAIN-DRIVEN DESIGN

bounded context: UMA VISÃO CLÁSSICA

Page 31: Bounded Context e CQRS na evolução de aplicações .NET legadas

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

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

DOMAIN-DRIVEN DESIGN

bounded context: UMA VISÃO CLÁSSICA

Page 34: Bounded Context e CQRS na evolução de aplicações .NET legadas

DOMAIN-DRIVEN DESIGN

bounded context: UMA VISÃO CLÁSSICA

Page 35: Bounded Context e CQRS na evolução de aplicações .NET legadas

DOMAIN-DRIVEN DESIGN

bounded context: UMA VISÃO MODERNA

Page 36: Bounded Context e CQRS na evolução de aplicações .NET legadas

DOMAIN-DRIVEN DESIGN

bounded context: UMA VISÃO MODERNA

Page 37: Bounded Context e CQRS na evolução de aplicações .NET legadas

DOMAIN-DRIVEN DESIGN

dividindo bounded context

Page 38: Bounded Context e CQRS na evolução de aplicações .NET legadas

DOMAIN-DRIVEN DESIGN

dividindo bounded context

Page 39: Bounded Context e CQRS na evolução de aplicações .NET legadas

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

DOMAIN-DRIVEN DESIGN

bounded context: EXPLORANDO ARQUITETURAS

Page 41: Bounded Context e CQRS na evolução de aplicações .NET legadas

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

DOMAIN-DRIVEN DESIGN

bounded context : extrAINdo api

CADASTROS FISCAISContextoparacadastrodoscontribuintesdoRioGrandedoNorte

Page 43: Bounded Context e CQRS na evolução de aplicações .NET legadas

DOMAIN-DRIVEN DESIGN

bounded context: EVOLUINDO LEGADO

Page 44: Bounded Context e CQRS na evolução de aplicações .NET legadas

DOMAIN-DRIVEN DESIGN

bounded context: COMUNICAÇÃO

Page 45: Bounded Context e CQRS na evolução de aplicações .NET legadas

DOMAIN-DRIVEN DESIGN

bounded context: COMUNICAÇÃO

Page 46: Bounded Context e CQRS na evolução de aplicações .NET legadas

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

cqrs

command/query responsibility segregation

Page 48: Bounded Context e CQRS na evolução de aplicações .NET legadas

limitações DA MODELAGEM DE DOMÍNIO

Page 49: Bounded Context e CQRS na evolução de aplicações .NET legadas

Da MODELAGEM DE DOMÍNIO para cqrs

Query

command

Page 50: Bounded Context e CQRS na evolução de aplicações .NET legadas

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

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

Amadurecendo aplicação com cqrs

Page 53: Bounded Context e CQRS na evolução de aplicações .NET legadas

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

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

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