SlideShare uma empresa Scribd logo
1 de 18
Baixar para ler offline
COMO UMA APLICAÇÃO
BASEADA EM FLUXO DE
DADOS PODE AMPLIAR A
SEGURANÇA EM CRECHES
Semana Nacional de Ciência e Tecnologia 2017 - SNTC
Centro Universitário de Belo Horizonte - UNIBH
27 de Outubro de 2017
SOBRE OS AUTORES
• Ivan Paulovich Pinheiro Gomes
Graduando em Ciência da Computação
Centro Universitário de Belo Horizonte – UNI-BH
ivan@100loop.com
• Diva de Souza e Silva Rodrigues
Doutora em Informática, PUC-Rio, 2006.
Professor do Centro Universitário de Belo Horizonte – UNI-BH
diva.rodrigues@prof.unibh.br
INTRODUÇÃO
• Conhecer uma maneira diferente de armazenar dados
• Apresentar os benefícios desse novo modelo
• Avaliar as dificuldades
COMO OS DADOS SÃO ARMAZENADOS
ATUALMENTE?
Código
Funcionário
Nome Salário Código
Departamento
42 André Gomes R$5000,00 12
70 Vinícius Lima R$4500,00 29
77 Luciano Reis R$5200,00 17
Tabela de Funcionários em 17 de agosto
COMO OS DADOS SÃO ARMAZENADOS
ATUALMENTE?
Código
Funcionário
Nome Salário Código
Departamento
42 André Gomes R$5000,00 12
70 Vinícius Lima R$4500,00 29
77 Luciano Reis R$5200,00 17
Tabela de Funcionários em 17 de agosto
Código
Funcionário
Nome Salário Código
Departamento
42 André Gomes R$6000,00 12
70 Vinícius Lima R$4500,00 29
77 Luciano Reis R$5200,00 17
Tabela de Funcionários em 18 de agosto
Por quê?
Quem?
Quando?
COMO OS DADOS SÃO ARMAZENADOS
ATUALMENTE?
• Bancos de Dados Relacionais
• Informações mais antigas são destruídas a cada UPDATE e DELETE.
• Não armazena o usuário, a motivação e o horário da alteração.
(A não ser que faça parte do modelo)
• Existe concorrência entre escrita e leitura.
ARMAZENAMENTO EM FLUXO DE DADOS
C/C Saldo
2010-0 R$ 200,00
4030-1 R$ 300,00
Tabela de Saldos por C/C
1 Depositado
C/C: 4030-1
Data: 17/08/2017
Valor: R$ 500,00
2 Depositado
C/C: 2010-0
Data: 20/08/2017
Valor: R$ 300,00
3 Sacado
C/C: 2010-0
Data: 23/08/2017
Valor: R$ 100,00
4 Sacado
C/C: 4030-1
Data: 25/08/2017
Valor: R$ 200,00
Extrato das Contas Correntes
Sabemos o porquê,
o quem, e o quando de
cada alteração
ProjeçãoPublicação
A METODOLOGIA
1. Estudar o negócio de uma Escola Infantil
2. Definir o Domínio
3. Modelar o Domínio utilizando Domain-Driven Design
4. Construir uma linguagem ubíqua entre o Negócio e o Desenvolvimento
5. Implementar a solução com as melhores práticas arquiteturais
O DOMÍNIO DE UMA ESCOLA INFANTIL
Professor
Familiar
Criança
Receber Criança Escola
Entregar Criança
Abrir Expediente
Fechar Expediente
Deixar Criança
Buscar Criança
Definir Responsável
Iniciar ano letivo
Adicionar Criança
PRODUÇÃO DE EVENTOS
Adicionar
Criança
Command
Adicionar
Criança
Command
Handler
Criança
Adicionada
Domain
Event
Armazenamento Permanente de
Eventos do Domínio em um Stream
CONSUMO E PROJEÇÃO DE EVENTOS
Criança
Adicionada
Domain
Event
Criança
Adicionada
Domain
Event
Handler
Código Criança Nome Data de Nascimento Código Família
992 Marina Gomes 17/junho/2010 19
Projeção dos Eventos de Domínio em
um banco de dados SQL ou NoSQL
OS DESAFIOS TÉCNICOS SUPERADOS
• Arquitetura para Microserviços
• Domain-Driven Design (DDD)
• Aggregates
• Event Sourcing
• Command-Query-Responsibility-Segregation (CQRS)
AS DIFICULDADES
• O desenvolvimento com DDD exige um profundo conhecimento do Domínio
e dos princípios de OO para a sua correta modelagem
• Necessário manter dois sistemas de armazenamento
(Stream e banco de dados)
OS BENEFÍCIOS
1. O sistema nasce com Auditoria de todas as operações.
2. Alta performance de escrita em Stream.
3. Evita o “Ponto único de falha” ao armazenar dados distribuídos.
4. Permite implementar funcionalidades não previstas no começo do projeto.
5. É possível voltar no tempo e descobrir a origem de qualquer mudança.
6. Pronto para Big Data!
ONDE AS TÉCNICAS PODEM SER
APLICADAS?
• Mercado Financeiro, Contabilidade
• Bancos
• Saúde
• Redes Sociais
• Aplicações Reativas a Eventos
CÓDIGOS E RESULTADOS
MFA
Microserviço para Gerenciamento de
Entrada e Saída de Crianças
com implementação de Event Sourcing
https://github.com/ivanpaulovich/mfa
Jambo
Microserviço para Gerenciamento de Conteúdo de
blogs pessoais com implementação de
Event Sourcing
https://github.com/ivanpaulovich/jambo
ONDE APRENDER MAIS?
• VERNON, V. Implementing Domain-Driven Design 1st Edition.
United States: Addison-Wesley Professional, 2013. 656 p.
• HALL, G. M. Adaptive Code via C#: Agile coding with design patterns and
SOLID principles (Developer Reference) 1st Edition.
United States: Addison-Wesley, 2014. 416 p.
PERGUNTAS

Mais conteúdo relacionado

Semelhante a Como uma aplicação de fluxo de dados pode ampliar a segurança em creches

SBESEdu2019_Fabio-BDD.pdf
SBESEdu2019_Fabio-BDD.pdfSBESEdu2019_Fabio-BDD.pdf
SBESEdu2019_Fabio-BDD.pdfssuserf131f8
 
Governança de Dados como meio para o incremento da Produtividade Organizacional
Governança de Dados como meio para o incremento da Produtividade OrganizacionalGovernança de Dados como meio para o incremento da Produtividade Organizacional
Governança de Dados como meio para o incremento da Produtividade OrganizacionalIvan Luizio Magalhães
 
Reconstrução do Portal Institucional da UFVJM
Reconstrução do Portal Institucional da UFVJMReconstrução do Portal Institucional da UFVJM
Reconstrução do Portal Institucional da UFVJMElias Alves
 
Apresentação sense4i
Apresentação sense4iApresentação sense4i
Apresentação sense4isense4i
 
MIT DevOps IaC - Infra como Código
MIT DevOps IaC - Infra como CódigoMIT DevOps IaC - Infra como Código
MIT DevOps IaC - Infra como CódigoCaio Candido
 
Novos cenários para a Educação a Distância: como ampliar possibilidades de in...
Novos cenários para a Educação a Distância: como ampliar possibilidades de in...Novos cenários para a Educação a Distância: como ampliar possibilidades de in...
Novos cenários para a Educação a Distância: como ampliar possibilidades de in...Marcos Arrais
 
Aplicando conceitos gerais de gerenciamento de projetos à engenharia de software
Aplicando conceitos gerais de gerenciamento de projetos à engenharia de softwareAplicando conceitos gerais de gerenciamento de projetos à engenharia de software
Aplicando conceitos gerais de gerenciamento de projetos à engenharia de softwareNatanael Simões
 
fluig Webinar - Agronegócio
fluig Webinar - Agronegócio fluig Webinar - Agronegócio
fluig Webinar - Agronegócio Fluig
 
Plano de Ensino - Gerencia de Projetos - UFS - 2017-2
Plano de Ensino - Gerencia de Projetos - UFS - 2017-2Plano de Ensino - Gerencia de Projetos - UFS - 2017-2
Plano de Ensino - Gerencia de Projetos - UFS - 2017-2Rogerio P C do Nascimento
 
Curso PMIP - Project Management Information Professional em Alphaville - Unil...
Curso PMIP - Project Management Information Professional em Alphaville - Unil...Curso PMIP - Project Management Information Professional em Alphaville - Unil...
Curso PMIP - Project Management Information Professional em Alphaville - Unil...Grupo Treinar
 
Curso PMIP - Project Management Information Professional em Sao Paulo - Unilo...
Curso PMIP - Project Management Information Professional em Sao Paulo - Unilo...Curso PMIP - Project Management Information Professional em Sao Paulo - Unilo...
Curso PMIP - Project Management Information Professional em Sao Paulo - Unilo...Grupo Treinar
 
RIVED - Rede Interativa Virtual de Educação
RIVED - Rede Interativa Virtual de EducaçãoRIVED - Rede Interativa Virtual de Educação
RIVED - Rede Interativa Virtual de EducaçãoRobson Santos da Silva
 
CV - Silvio Custodio - Português - Janeiro-2017
CV - Silvio Custodio - Português - Janeiro-2017CV - Silvio Custodio - Português - Janeiro-2017
CV - Silvio Custodio - Português - Janeiro-2017Silvio Custodio
 
Microsoft & Openness - Contruindo Pontes entre Tecnologias
Microsoft & Openness - Contruindo Pontes entre TecnologiasMicrosoft & Openness - Contruindo Pontes entre Tecnologias
Microsoft & Openness - Contruindo Pontes entre TecnologiasVinícius Batista de Souza
 
Palestra CONITECH 2012 - Avaliação de Riscos de Segurança em Cloud Computing
Palestra CONITECH 2012 - Avaliação de Riscos de Segurança em Cloud ComputingPalestra CONITECH 2012 - Avaliação de Riscos de Segurança em Cloud Computing
Palestra CONITECH 2012 - Avaliação de Riscos de Segurança em Cloud ComputingMarcelo Veloso
 
Soyuz - Open Web Platform & Business Intelligence
Soyuz - Open Web Platform & Business IntelligenceSoyuz - Open Web Platform & Business Intelligence
Soyuz - Open Web Platform & Business IntelligenceSoyuz Sistemas Ltda
 

Semelhante a Como uma aplicação de fluxo de dados pode ampliar a segurança em creches (20)

SBESEdu2019_Fabio-BDD.pdf
SBESEdu2019_Fabio-BDD.pdfSBESEdu2019_Fabio-BDD.pdf
SBESEdu2019_Fabio-BDD.pdf
 
Carlos Fernando
Carlos FernandoCarlos Fernando
Carlos Fernando
 
Governança de Dados como meio para o incremento da Produtividade Organizacional
Governança de Dados como meio para o incremento da Produtividade OrganizacionalGovernança de Dados como meio para o incremento da Produtividade Organizacional
Governança de Dados como meio para o incremento da Produtividade Organizacional
 
Reconstrução do Portal Institucional da UFVJM
Reconstrução do Portal Institucional da UFVJMReconstrução do Portal Institucional da UFVJM
Reconstrução do Portal Institucional da UFVJM
 
Apresentação sense4i
Apresentação sense4iApresentação sense4i
Apresentação sense4i
 
MIT DevOps IaC - Infra como Código
MIT DevOps IaC - Infra como CódigoMIT DevOps IaC - Infra como Código
MIT DevOps IaC - Infra como Código
 
Novos cenários para a Educação a Distância: como ampliar possibilidades de in...
Novos cenários para a Educação a Distância: como ampliar possibilidades de in...Novos cenários para a Educação a Distância: como ampliar possibilidades de in...
Novos cenários para a Educação a Distância: como ampliar possibilidades de in...
 
Aplicando conceitos gerais de gerenciamento de projetos à engenharia de software
Aplicando conceitos gerais de gerenciamento de projetos à engenharia de softwareAplicando conceitos gerais de gerenciamento de projetos à engenharia de software
Aplicando conceitos gerais de gerenciamento de projetos à engenharia de software
 
fluig Webinar - Agronegócio
fluig Webinar - Agronegócio fluig Webinar - Agronegócio
fluig Webinar - Agronegócio
 
Plano de Ensino - Gerencia de Projetos - UFS - 2017-2
Plano de Ensino - Gerencia de Projetos - UFS - 2017-2Plano de Ensino - Gerencia de Projetos - UFS - 2017-2
Plano de Ensino - Gerencia de Projetos - UFS - 2017-2
 
Projeto final (1)
Projeto final (1)Projeto final (1)
Projeto final (1)
 
Curso PMIP - Project Management Information Professional em Alphaville - Unil...
Curso PMIP - Project Management Information Professional em Alphaville - Unil...Curso PMIP - Project Management Information Professional em Alphaville - Unil...
Curso PMIP - Project Management Information Professional em Alphaville - Unil...
 
Curso PMIP - Project Management Information Professional em Sao Paulo - Unilo...
Curso PMIP - Project Management Information Professional em Sao Paulo - Unilo...Curso PMIP - Project Management Information Professional em Sao Paulo - Unilo...
Curso PMIP - Project Management Information Professional em Sao Paulo - Unilo...
 
RIVED - Rede Interativa Virtual de Educação
RIVED - Rede Interativa Virtual de EducaçãoRIVED - Rede Interativa Virtual de Educação
RIVED - Rede Interativa Virtual de Educação
 
CV - Silvio Custodio - Português - Janeiro-2017
CV - Silvio Custodio - Português - Janeiro-2017CV - Silvio Custodio - Português - Janeiro-2017
CV - Silvio Custodio - Português - Janeiro-2017
 
Microsoft & Openness - Contruindo Pontes entre Tecnologias
Microsoft & Openness - Contruindo Pontes entre TecnologiasMicrosoft & Openness - Contruindo Pontes entre Tecnologias
Microsoft & Openness - Contruindo Pontes entre Tecnologias
 
Banco de Dados Orientado a Objetos para Aplicações Android - ORMLite
Banco de Dados Orientado a Objetos para Aplicações Android - ORMLiteBanco de Dados Orientado a Objetos para Aplicações Android - ORMLite
Banco de Dados Orientado a Objetos para Aplicações Android - ORMLite
 
Palestra CONITECH 2012 - Avaliação de Riscos de Segurança em Cloud Computing
Palestra CONITECH 2012 - Avaliação de Riscos de Segurança em Cloud ComputingPalestra CONITECH 2012 - Avaliação de Riscos de Segurança em Cloud Computing
Palestra CONITECH 2012 - Avaliação de Riscos de Segurança em Cloud Computing
 
Cursos a3
Cursos a3Cursos a3
Cursos a3
 
Soyuz - Open Web Platform & Business Intelligence
Soyuz - Open Web Platform & Business IntelligenceSoyuz - Open Web Platform & Business Intelligence
Soyuz - Open Web Platform & Business Intelligence
 

Mais de Ivan Paulovich

DDD Tactical Design with Clean Architecture - Ivan Paulovich
DDD Tactical Design with Clean Architecture - Ivan PaulovichDDD Tactical Design with Clean Architecture - Ivan Paulovich
DDD Tactical Design with Clean Architecture - Ivan PaulovichIvan Paulovich
 
Clean Architecture Essentials - Stockholm Software Craftsmanship
Clean Architecture Essentials - Stockholm Software CraftsmanshipClean Architecture Essentials - Stockholm Software Craftsmanship
Clean Architecture Essentials - Stockholm Software CraftsmanshipIvan Paulovich
 
Clean Architecture Essentials @ivanpaulovich
Clean Architecture Essentials @ivanpaulovichClean Architecture Essentials @ivanpaulovich
Clean Architecture Essentials @ivanpaulovichIvan Paulovich
 
Building rich domain models with ddd and tdd ivan paulovich - betsson
Building rich domain models with ddd and tdd   ivan paulovich - betssonBuilding rich domain models with ddd and tdd   ivan paulovich - betsson
Building rich domain models with ddd and tdd ivan paulovich - betssonIvan Paulovich
 
Moving to Microservices
Moving to MicroservicesMoving to Microservices
Moving to MicroservicesIvan Paulovich
 
Produzindo e consumindo um stream de eventos
Produzindo e consumindo um stream de eventosProduzindo e consumindo um stream de eventos
Produzindo e consumindo um stream de eventosIvan Paulovich
 
Aggregates com Event Sourcing
Aggregates com Event SourcingAggregates com Event Sourcing
Aggregates com Event SourcingIvan Paulovich
 
Estudo do eShopOnContainers
Estudo do eShopOnContainersEstudo do eShopOnContainers
Estudo do eShopOnContainersIvan Paulovich
 
Introdução ao Domain-Driven-Design (DDD)
Introdução ao Domain-Driven-Design (DDD)Introdução ao Domain-Driven-Design (DDD)
Introdução ao Domain-Driven-Design (DDD)Ivan Paulovich
 
Princípios SOLID de OO usando .NET
Princípios SOLID de OO usando .NETPrincípios SOLID de OO usando .NET
Princípios SOLID de OO usando .NETIvan Paulovich
 
Utilize o vso e publique imagens docker Global Azure Bootcamp - BH
Utilize o vso e publique imagens docker Global Azure Bootcamp - BHUtilize o vso e publique imagens docker Global Azure Bootcamp - BH
Utilize o vso e publique imagens docker Global Azure Bootcamp - BHIvan Paulovich
 
Windows Azure Mobile Services InfoTech 2014
Windows Azure Mobile Services InfoTech 2014Windows Azure Mobile Services InfoTech 2014
Windows Azure Mobile Services InfoTech 2014Ivan Paulovich
 
Mercado de ti e suas oportunidades
Mercado de ti e suas oportunidadesMercado de ti e suas oportunidades
Mercado de ti e suas oportunidadesIvan Paulovich
 
Construindo Apps Com SignalR
Construindo Apps Com SignalRConstruindo Apps Com SignalR
Construindo Apps Com SignalRIvan Paulovich
 
Construindo apps de tempo real com SignalR
Construindo apps de tempo real com SignalRConstruindo apps de tempo real com SignalR
Construindo apps de tempo real com SignalRIvan Paulovich
 
Construindo Apps com ASP.NET SignalR
Construindo Apps com ASP.NET SignalRConstruindo Apps com ASP.NET SignalR
Construindo Apps com ASP.NET SignalRIvan Paulovich
 
Levando sua aplicação para a nuvem
Levando sua aplicação para a nuvemLevando sua aplicação para a nuvem
Levando sua aplicação para a nuvemIvan Paulovich
 
Conhecendo os recursos do ASP.NET Web API
Conhecendo os recursos do ASP.NET Web APIConhecendo os recursos do ASP.NET Web API
Conhecendo os recursos do ASP.NET Web APIIvan Paulovich
 
Criando aplicativos para Windows 8 usando apenas HTML5 e Javascript
Criando aplicativos para Windows 8 usando apenas HTML5 e JavascriptCriando aplicativos para Windows 8 usando apenas HTML5 e Javascript
Criando aplicativos para Windows 8 usando apenas HTML5 e JavascriptIvan Paulovich
 

Mais de Ivan Paulovich (19)

DDD Tactical Design with Clean Architecture - Ivan Paulovich
DDD Tactical Design with Clean Architecture - Ivan PaulovichDDD Tactical Design with Clean Architecture - Ivan Paulovich
DDD Tactical Design with Clean Architecture - Ivan Paulovich
 
Clean Architecture Essentials - Stockholm Software Craftsmanship
Clean Architecture Essentials - Stockholm Software CraftsmanshipClean Architecture Essentials - Stockholm Software Craftsmanship
Clean Architecture Essentials - Stockholm Software Craftsmanship
 
Clean Architecture Essentials @ivanpaulovich
Clean Architecture Essentials @ivanpaulovichClean Architecture Essentials @ivanpaulovich
Clean Architecture Essentials @ivanpaulovich
 
Building rich domain models with ddd and tdd ivan paulovich - betsson
Building rich domain models with ddd and tdd   ivan paulovich - betssonBuilding rich domain models with ddd and tdd   ivan paulovich - betsson
Building rich domain models with ddd and tdd ivan paulovich - betsson
 
Moving to Microservices
Moving to MicroservicesMoving to Microservices
Moving to Microservices
 
Produzindo e consumindo um stream de eventos
Produzindo e consumindo um stream de eventosProduzindo e consumindo um stream de eventos
Produzindo e consumindo um stream de eventos
 
Aggregates com Event Sourcing
Aggregates com Event SourcingAggregates com Event Sourcing
Aggregates com Event Sourcing
 
Estudo do eShopOnContainers
Estudo do eShopOnContainersEstudo do eShopOnContainers
Estudo do eShopOnContainers
 
Introdução ao Domain-Driven-Design (DDD)
Introdução ao Domain-Driven-Design (DDD)Introdução ao Domain-Driven-Design (DDD)
Introdução ao Domain-Driven-Design (DDD)
 
Princípios SOLID de OO usando .NET
Princípios SOLID de OO usando .NETPrincípios SOLID de OO usando .NET
Princípios SOLID de OO usando .NET
 
Utilize o vso e publique imagens docker Global Azure Bootcamp - BH
Utilize o vso e publique imagens docker Global Azure Bootcamp - BHUtilize o vso e publique imagens docker Global Azure Bootcamp - BH
Utilize o vso e publique imagens docker Global Azure Bootcamp - BH
 
Windows Azure Mobile Services InfoTech 2014
Windows Azure Mobile Services InfoTech 2014Windows Azure Mobile Services InfoTech 2014
Windows Azure Mobile Services InfoTech 2014
 
Mercado de ti e suas oportunidades
Mercado de ti e suas oportunidadesMercado de ti e suas oportunidades
Mercado de ti e suas oportunidades
 
Construindo Apps Com SignalR
Construindo Apps Com SignalRConstruindo Apps Com SignalR
Construindo Apps Com SignalR
 
Construindo apps de tempo real com SignalR
Construindo apps de tempo real com SignalRConstruindo apps de tempo real com SignalR
Construindo apps de tempo real com SignalR
 
Construindo Apps com ASP.NET SignalR
Construindo Apps com ASP.NET SignalRConstruindo Apps com ASP.NET SignalR
Construindo Apps com ASP.NET SignalR
 
Levando sua aplicação para a nuvem
Levando sua aplicação para a nuvemLevando sua aplicação para a nuvem
Levando sua aplicação para a nuvem
 
Conhecendo os recursos do ASP.NET Web API
Conhecendo os recursos do ASP.NET Web APIConhecendo os recursos do ASP.NET Web API
Conhecendo os recursos do ASP.NET Web API
 
Criando aplicativos para Windows 8 usando apenas HTML5 e Javascript
Criando aplicativos para Windows 8 usando apenas HTML5 e JavascriptCriando aplicativos para Windows 8 usando apenas HTML5 e Javascript
Criando aplicativos para Windows 8 usando apenas HTML5 e Javascript
 

Como uma aplicação de fluxo de dados pode ampliar a segurança em creches

  • 1. COMO UMA APLICAÇÃO BASEADA EM FLUXO DE DADOS PODE AMPLIAR A SEGURANÇA EM CRECHES Semana Nacional de Ciência e Tecnologia 2017 - SNTC Centro Universitário de Belo Horizonte - UNIBH 27 de Outubro de 2017
  • 2. SOBRE OS AUTORES • Ivan Paulovich Pinheiro Gomes Graduando em Ciência da Computação Centro Universitário de Belo Horizonte – UNI-BH ivan@100loop.com • Diva de Souza e Silva Rodrigues Doutora em Informática, PUC-Rio, 2006. Professor do Centro Universitário de Belo Horizonte – UNI-BH diva.rodrigues@prof.unibh.br
  • 3. INTRODUÇÃO • Conhecer uma maneira diferente de armazenar dados • Apresentar os benefícios desse novo modelo • Avaliar as dificuldades
  • 4. COMO OS DADOS SÃO ARMAZENADOS ATUALMENTE? Código Funcionário Nome Salário Código Departamento 42 André Gomes R$5000,00 12 70 Vinícius Lima R$4500,00 29 77 Luciano Reis R$5200,00 17 Tabela de Funcionários em 17 de agosto
  • 5. COMO OS DADOS SÃO ARMAZENADOS ATUALMENTE? Código Funcionário Nome Salário Código Departamento 42 André Gomes R$5000,00 12 70 Vinícius Lima R$4500,00 29 77 Luciano Reis R$5200,00 17 Tabela de Funcionários em 17 de agosto Código Funcionário Nome Salário Código Departamento 42 André Gomes R$6000,00 12 70 Vinícius Lima R$4500,00 29 77 Luciano Reis R$5200,00 17 Tabela de Funcionários em 18 de agosto Por quê? Quem? Quando?
  • 6. COMO OS DADOS SÃO ARMAZENADOS ATUALMENTE? • Bancos de Dados Relacionais • Informações mais antigas são destruídas a cada UPDATE e DELETE. • Não armazena o usuário, a motivação e o horário da alteração. (A não ser que faça parte do modelo) • Existe concorrência entre escrita e leitura.
  • 7. ARMAZENAMENTO EM FLUXO DE DADOS C/C Saldo 2010-0 R$ 200,00 4030-1 R$ 300,00 Tabela de Saldos por C/C 1 Depositado C/C: 4030-1 Data: 17/08/2017 Valor: R$ 500,00 2 Depositado C/C: 2010-0 Data: 20/08/2017 Valor: R$ 300,00 3 Sacado C/C: 2010-0 Data: 23/08/2017 Valor: R$ 100,00 4 Sacado C/C: 4030-1 Data: 25/08/2017 Valor: R$ 200,00 Extrato das Contas Correntes Sabemos o porquê, o quem, e o quando de cada alteração ProjeçãoPublicação
  • 8. A METODOLOGIA 1. Estudar o negócio de uma Escola Infantil 2. Definir o Domínio 3. Modelar o Domínio utilizando Domain-Driven Design 4. Construir uma linguagem ubíqua entre o Negócio e o Desenvolvimento 5. Implementar a solução com as melhores práticas arquiteturais
  • 9. O DOMÍNIO DE UMA ESCOLA INFANTIL Professor Familiar Criança Receber Criança Escola Entregar Criança Abrir Expediente Fechar Expediente Deixar Criança Buscar Criança Definir Responsável Iniciar ano letivo Adicionar Criança
  • 11. CONSUMO E PROJEÇÃO DE EVENTOS Criança Adicionada Domain Event Criança Adicionada Domain Event Handler Código Criança Nome Data de Nascimento Código Família 992 Marina Gomes 17/junho/2010 19 Projeção dos Eventos de Domínio em um banco de dados SQL ou NoSQL
  • 12. OS DESAFIOS TÉCNICOS SUPERADOS • Arquitetura para Microserviços • Domain-Driven Design (DDD) • Aggregates • Event Sourcing • Command-Query-Responsibility-Segregation (CQRS)
  • 13. AS DIFICULDADES • O desenvolvimento com DDD exige um profundo conhecimento do Domínio e dos princípios de OO para a sua correta modelagem • Necessário manter dois sistemas de armazenamento (Stream e banco de dados)
  • 14. OS BENEFÍCIOS 1. O sistema nasce com Auditoria de todas as operações. 2. Alta performance de escrita em Stream. 3. Evita o “Ponto único de falha” ao armazenar dados distribuídos. 4. Permite implementar funcionalidades não previstas no começo do projeto. 5. É possível voltar no tempo e descobrir a origem de qualquer mudança. 6. Pronto para Big Data!
  • 15. ONDE AS TÉCNICAS PODEM SER APLICADAS? • Mercado Financeiro, Contabilidade • Bancos • Saúde • Redes Sociais • Aplicações Reativas a Eventos
  • 16. CÓDIGOS E RESULTADOS MFA Microserviço para Gerenciamento de Entrada e Saída de Crianças com implementação de Event Sourcing https://github.com/ivanpaulovich/mfa Jambo Microserviço para Gerenciamento de Conteúdo de blogs pessoais com implementação de Event Sourcing https://github.com/ivanpaulovich/jambo
  • 17. ONDE APRENDER MAIS? • VERNON, V. Implementing Domain-Driven Design 1st Edition. United States: Addison-Wesley Professional, 2013. 656 p. • HALL, G. M. Adaptive Code via C#: Agile coding with design patterns and SOLID principles (Developer Reference) 1st Edition. United States: Addison-Wesley, 2014. 416 p.