Bounded Context e CQRSEvoluçã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
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 !
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.
evolução de sistemas : Adaptação
evolução de sistemas: especiação
evolução de sistemas : extinção
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
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.
Evoluindo sistemas LEGADOs
evoluindo sistemas LEGADOs
Evoluindo sistemas LEGADOs
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.
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
DOMAIN-DRIVEN DESIGN
em duas partes distintas
Domain-Driven Design
Visão analítica
Domain-Driven Design
Visão estratégica
DOMAIN-DRIVEN DESIGN
visão analítica
DOMAIN-DRIVEN DESIGN
visão analítica
Que práticas e técnicas de processo você e suaempresa adota para garantir uma boa
arquitetura?
DOMAIN-DRIVEN DESIGN
visão analítica
DOMAIN-DRIVEN DESIGN
ubiquitous language
DOMAIN-DRIVEN DESIGN
ubiquitous language
DOMAIN-DRIVEN DESIGN
ubiquitous language
DOMAIN-DRIVEN DESIGN
ubiquitous language
DDD é sobre a
Redução de complexidade
No softwareEric Evans
Arquitetura é sobre intençãoRobert C. Martin
DOMAIN-DRIVEN DESIGN
visão estratégica
DOMAIN-DRIVEN DESIGN
visão estratégica
Que práticas e técnicas de produto você e suaempresa adota para garantir uma boa
arquitetura?
DOMAIN-DRIVEN DESIGN
visão estratégica
DOMAIN-DRIVEN DESIGN
bounded context
DOMAIN-DRIVEN DESIGN
bounded context: UMA VISÃO CLÁSSICA
DOMAIN-DRIVEN DESIGN
bounded context: UMA VISÃO CLÁSSICA
DOMAIN-DRIVEN DESIGN
bounded context: UMA VISÃO CLÁSSICA
uma utopia maravilhosa
DOMAIN-DRIVEN DESIGN
bounded context: UMA VISÃO CLÁSSICA
uma ilusão de ótica
DOMAIN-DRIVEN DESIGN
bounded context: UMA VISÃO CLÁSSICA
DOMAIN-DRIVEN DESIGN
bounded context: UMA VISÃO CLÁSSICA
DOMAIN-DRIVEN DESIGN
bounded context: UMA VISÃO MODERNA
DOMAIN-DRIVEN DESIGN
bounded context: UMA VISÃO MODERNA
DOMAIN-DRIVEN DESIGN
dividindo bounded context
DOMAIN-DRIVEN DESIGN
dividindo bounded context
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
DOMAIN-DRIVEN DESIGN
bounded context: EXPLORANDO ARQUITETURAS
DOMAIN-DRIVEN DESIGN
bounded context: EXPLORANDO ARQUITETURAS
QueryComponentedepesquisaDecadastrosfiscais
commandComponentedepersitênciaDecadastrosfiscais
Arquit. hexagonalComponentedesegurançaDaSec.Tributação
DOMAIN-DRIVEN DESIGN
bounded context : extrAINdo api
CADASTROS FISCAISContextoparacadastrodoscontribuintesdoRioGrandedoNorte
DOMAIN-DRIVEN DESIGN
bounded context: EVOLUINDO LEGADO
DOMAIN-DRIVEN DESIGN
bounded context: COMUNICAÇÃO
DOMAIN-DRIVEN DESIGN
bounded context: COMUNICAÇÃO
DOMAIN-DRIVEN DESIGN
bounded context: COMUNICAÇÃO
Shared kernel/
Values objects Share submodel
Anti-corruption
layer
cqrs
command/query responsibility segregation
limitações DA MODELAGEM DE DOMÍNIO
Da MODELAGEM DE DOMÍNIO para cqrs
Query
command
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
Alguns benefícios do cQRS
⚠ Simplificação do design
⚠ Potencial para uma performance e escalabilidade melhorada
⚠ Efeitos colaterais minimizado
Amadurecendo aplicação com cqrs
Antes de software poder ser reutilizável
ele primeiro tem de ser utilizável
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
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