bounded context e cqrs na evolução de aplicações .net legadas

Post on 14-Apr-2017

1.199 Views

Category:

Technology

2 Downloads

Preview:

Click to see full reader

TRANSCRIPT

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

top related