SlideShare a Scribd company logo
1 of 31
Download to read offline
© 2019, Domain Driven Design Taiwan Community
Kim Kao ( )
Aug 01, 2019
Aggregate + Event Sourcing
© 2019, Domain Driven Design Taiwan Community
Event sourcing –
•
• :
•
© 2019, Domain Driven Design Taiwan Community
?
• ( )
• (Event Store)
:
•
•
• (pub/sub)
• RDBMS+ pub/sub
• NoSQL + pub/sub
• ...
© 2019, Domain Driven Design Taiwan Community
•
• : update ... Set vs append only logging...
• Reliability
• à .. Etc
•
© 2019, Domain Driven Design Taiwan Community
?
•
à Event Storming workshop
• à
• (2013)
•
• CQRS
• Command-Query-Responsibility-Segregation
© 2019, Domain Driven Design Taiwan Community
Application Service
1.
2.
( replay
Entity Id )
/
( )
© 2019, Domain Driven Design Taiwan Community
– EventStore, domain Service
© 2019, Domain Driven Design Taiwan Community
© 2019, Domain Driven Design Taiwan Community
-
© 2019, Domain Driven Design Taiwan Community
C#
© 2019, Domain Driven Design Taiwan Community
1. mutate
2. lock
3. Apply Event
4.
5.
6. ... looping
© 2019, Domain Driven Design Taiwan Community
•
• , class for state
• , class for behavior
© 2019, Domain Driven Design Taiwan Community
© 2019, Domain Driven Design Taiwan Community
clone
© 2019, Domain Driven Design Taiwan Community
•
• Application Service à Domain Service
• Get Aggregate root instance by Id
• Fetch corresponding event streams
• Replay to get current status ( )
•
• Aggregate
• ,
•
© 2019, Domain Driven Design Taiwan Community
...
, lambda ...
© 2019, Domain Driven Design Taiwan Community
Command Handler
© 2019, Domain Driven Design Taiwan Community
command
© 2019, Domain Driven Design Taiwan Community
command
© 2019, Domain Driven Design Taiwan Community
Command
© 2019, Domain Driven Design Taiwan Community
Queue
© 2019, Domain Driven Design Taiwan Community
© 2019, Domain Driven Design Taiwan Community
Concurrency control
• thread
:
throw EventStoreConcurrencyException
at step 4
© 2019, Domain Driven Design Taiwan Community
© 2019, Domain Driven Design Taiwan Community
• Thread2 while loop
event 1~5
• Thread2 6~7
•
•
© 2019, Domain Driven Design Taiwan Community
• à
•
•
• ( )
•
© 2019, Domain Driven Design Taiwan Community
• EventStore AWS S3 bucket.. Unlimited
capacity
•
•
© 2019, Domain Driven Design Taiwan Community
1.
2.
© 2019, Domain Driven Design Taiwan Community
EventStore
https://github.com/jimitndiaye/lokad-iddd-sample
https://github.com/abdullin/lokad-cqrs
© 2019, Domain Driven Design Taiwan Community
© 2019, Domain Driven Design Taiwan Community

More Related Content

What's hot

IBM Cloud Solution - Blue Box
IBM Cloud Solution - Blue BoxIBM Cloud Solution - Blue Box
IBM Cloud Solution - Blue BoxDaniele Bolletta
 
Multi-cloud integration architecture
Multi-cloud integration architectureMulti-cloud integration architecture
Multi-cloud integration architectureKim Clark
 
IBM Cloud Integration Platform High Availability - Integration Tech Conference
IBM Cloud Integration Platform High Availability - Integration Tech ConferenceIBM Cloud Integration Platform High Availability - Integration Tech Conference
IBM Cloud Integration Platform High Availability - Integration Tech ConferenceRobert Nicholson
 
IBM Cloud OpenStack Services
IBM Cloud OpenStack ServicesIBM Cloud OpenStack Services
IBM Cloud OpenStack ServicesOpenStack_Online
 
SoftLayer Cloud Services
SoftLayer Cloud ServicesSoftLayer Cloud Services
SoftLayer Cloud ServicesAnna Landolfi
 
Tap into a Private Cloud as a Service to Accelerate Hybrid Success
Tap into a Private Cloud as a Service to Accelerate Hybrid SuccessTap into a Private Cloud as a Service to Accelerate Hybrid Success
Tap into a Private Cloud as a Service to Accelerate Hybrid SuccessDenny Muktar
 
[Migrating Fox’s Media Supply Chain to the Cloud]: Migrating Fox’s Media Supp...
[Migrating Fox’s Media Supply Chain to the Cloud]: Migrating Fox’s Media Supp...[Migrating Fox’s Media Supply Chain to the Cloud]: Migrating Fox’s Media Supp...
[Migrating Fox’s Media Supply Chain to the Cloud]: Migrating Fox’s Media Supp...Amazon Web Services
 
Smart Cloud Webinar 2014-02-13 Introduction to Softlayer IaaS MDB
Smart Cloud Webinar 2014-02-13 Introduction to Softlayer IaaS MDBSmart Cloud Webinar 2014-02-13 Introduction to Softlayer IaaS MDB
Smart Cloud Webinar 2014-02-13 Introduction to Softlayer IaaS MDBManuel Daza
 
Enterprise Cloud Strategy: 7 Areas You Need to Re-Think
Enterprise Cloud Strategy: 7 Areas You Need to Re-ThinkEnterprise Cloud Strategy: 7 Areas You Need to Re-Think
Enterprise Cloud Strategy: 7 Areas You Need to Re-ThinkRightScale
 
Building Serverless Apps with Kafka (Dale Lane, IBM) Kafka Summit London 2019
Building Serverless Apps with Kafka (Dale Lane, IBM) Kafka Summit London 2019Building Serverless Apps with Kafka (Dale Lane, IBM) Kafka Summit London 2019
Building Serverless Apps with Kafka (Dale Lane, IBM) Kafka Summit London 2019confluent
 
Creating Microservices Application with IBM Cloud Private (ICP) - Container a...
Creating Microservices Application with IBM Cloud Private (ICP) - Container a...Creating Microservices Application with IBM Cloud Private (ICP) - Container a...
Creating Microservices Application with IBM Cloud Private (ICP) - Container a...PT Datacomm Diangraha
 
2019 03-13-implementing microservices by ddd
2019 03-13-implementing microservices by ddd2019 03-13-implementing microservices by ddd
2019 03-13-implementing microservices by dddKim Kao
 
Continuous Delivery on IBM Bluemix: Manage Cloud Native Services with Cloud N...
Continuous Delivery on IBM Bluemix: Manage Cloud Native Services with Cloud N...Continuous Delivery on IBM Bluemix: Manage Cloud Native Services with Cloud N...
Continuous Delivery on IBM Bluemix: Manage Cloud Native Services with Cloud N...Michael Elder
 
DEVNET-1008 Private or Public or Hybrid ? Which Cloud Should I choose?
DEVNET-1008 Private or Public or Hybrid ? Which Cloud Should I choose?DEVNET-1008 Private or Public or Hybrid ? Which Cloud Should I choose?
DEVNET-1008 Private or Public or Hybrid ? Which Cloud Should I choose?Cisco DevNet
 
CNCF in Japan: Keynote, Open Source Summit Japan, Tokyo
CNCF in Japan: Keynote, Open Source Summit Japan, TokyoCNCF in Japan: Keynote, Open Source Summit Japan, Tokyo
CNCF in Japan: Keynote, Open Source Summit Japan, TokyoCheryl Hung
 
Cloud Migration and Portability Best Practices
Cloud Migration and Portability Best PracticesCloud Migration and Portability Best Practices
Cloud Migration and Portability Best PracticesRightScale
 

What's hot (18)

IBM Cloud Solution - Blue Box
IBM Cloud Solution - Blue BoxIBM Cloud Solution - Blue Box
IBM Cloud Solution - Blue Box
 
Multi-cloud integration architecture
Multi-cloud integration architectureMulti-cloud integration architecture
Multi-cloud integration architecture
 
IBM Cloud Integration Platform High Availability - Integration Tech Conference
IBM Cloud Integration Platform High Availability - Integration Tech ConferenceIBM Cloud Integration Platform High Availability - Integration Tech Conference
IBM Cloud Integration Platform High Availability - Integration Tech Conference
 
Cloud Migration: A How-To Guide
Cloud Migration: A How-To GuideCloud Migration: A How-To Guide
Cloud Migration: A How-To Guide
 
IBM Cloud OpenStack Services
IBM Cloud OpenStack ServicesIBM Cloud OpenStack Services
IBM Cloud OpenStack Services
 
SoftLayer Cloud Services
SoftLayer Cloud ServicesSoftLayer Cloud Services
SoftLayer Cloud Services
 
Tap into a Private Cloud as a Service to Accelerate Hybrid Success
Tap into a Private Cloud as a Service to Accelerate Hybrid SuccessTap into a Private Cloud as a Service to Accelerate Hybrid Success
Tap into a Private Cloud as a Service to Accelerate Hybrid Success
 
[Migrating Fox’s Media Supply Chain to the Cloud]: Migrating Fox’s Media Supp...
[Migrating Fox’s Media Supply Chain to the Cloud]: Migrating Fox’s Media Supp...[Migrating Fox’s Media Supply Chain to the Cloud]: Migrating Fox’s Media Supp...
[Migrating Fox’s Media Supply Chain to the Cloud]: Migrating Fox’s Media Supp...
 
Smart Cloud Webinar 2014-02-13 Introduction to Softlayer IaaS MDB
Smart Cloud Webinar 2014-02-13 Introduction to Softlayer IaaS MDBSmart Cloud Webinar 2014-02-13 Introduction to Softlayer IaaS MDB
Smart Cloud Webinar 2014-02-13 Introduction to Softlayer IaaS MDB
 
Vidispine
VidispineVidispine
Vidispine
 
Enterprise Cloud Strategy: 7 Areas You Need to Re-Think
Enterprise Cloud Strategy: 7 Areas You Need to Re-ThinkEnterprise Cloud Strategy: 7 Areas You Need to Re-Think
Enterprise Cloud Strategy: 7 Areas You Need to Re-Think
 
Building Serverless Apps with Kafka (Dale Lane, IBM) Kafka Summit London 2019
Building Serverless Apps with Kafka (Dale Lane, IBM) Kafka Summit London 2019Building Serverless Apps with Kafka (Dale Lane, IBM) Kafka Summit London 2019
Building Serverless Apps with Kafka (Dale Lane, IBM) Kafka Summit London 2019
 
Creating Microservices Application with IBM Cloud Private (ICP) - Container a...
Creating Microservices Application with IBM Cloud Private (ICP) - Container a...Creating Microservices Application with IBM Cloud Private (ICP) - Container a...
Creating Microservices Application with IBM Cloud Private (ICP) - Container a...
 
2019 03-13-implementing microservices by ddd
2019 03-13-implementing microservices by ddd2019 03-13-implementing microservices by ddd
2019 03-13-implementing microservices by ddd
 
Continuous Delivery on IBM Bluemix: Manage Cloud Native Services with Cloud N...
Continuous Delivery on IBM Bluemix: Manage Cloud Native Services with Cloud N...Continuous Delivery on IBM Bluemix: Manage Cloud Native Services with Cloud N...
Continuous Delivery on IBM Bluemix: Manage Cloud Native Services with Cloud N...
 
DEVNET-1008 Private or Public or Hybrid ? Which Cloud Should I choose?
DEVNET-1008 Private or Public or Hybrid ? Which Cloud Should I choose?DEVNET-1008 Private or Public or Hybrid ? Which Cloud Should I choose?
DEVNET-1008 Private or Public or Hybrid ? Which Cloud Should I choose?
 
CNCF in Japan: Keynote, Open Source Summit Japan, Tokyo
CNCF in Japan: Keynote, Open Source Summit Japan, TokyoCNCF in Japan: Keynote, Open Source Summit Japan, Tokyo
CNCF in Japan: Keynote, Open Source Summit Japan, Tokyo
 
Cloud Migration and Portability Best Practices
Cloud Migration and Portability Best PracticesCloud Migration and Portability Best Practices
Cloud Migration and Portability Best Practices
 

Similar to 2019 08-01-i ddd-studygroup-appendix

2019 04-25-agile communitymeetup-essentialcapabilitiesbehindmicroservices
2019 04-25-agile communitymeetup-essentialcapabilitiesbehindmicroservices2019 04-25-agile communitymeetup-essentialcapabilitiesbehindmicroservices
2019 04-25-agile communitymeetup-essentialcapabilitiesbehindmicroservicesKim Kao
 
DDD Taiwan Community 2019 01-26-1st-meetup-why ddd matters
DDD Taiwan Community 2019 01-26-1st-meetup-why ddd mattersDDD Taiwan Community 2019 01-26-1st-meetup-why ddd matters
DDD Taiwan Community 2019 01-26-1st-meetup-why ddd mattersKim Kao
 
End-to-End CI/CD at scale with Infrastructure-as-Code on AWS
End-to-End CI/CD at scale with Infrastructure-as-Code on AWSEnd-to-End CI/CD at scale with Infrastructure-as-Code on AWS
End-to-End CI/CD at scale with Infrastructure-as-Code on AWSBhuvaneswari Subramani
 
CI CD using AWS Developer Tools @ AWS Community Day Chennai 2019
CI CD using AWS Developer Tools @ AWS Community Day Chennai 2019CI CD using AWS Developer Tools @ AWS Community Day Chennai 2019
CI CD using AWS Developer Tools @ AWS Community Day Chennai 2019Bhuvaneswari Subramani
 
AWS Greengrass, Containers, and Your Dev Process for Edge Apps (GPSWS404) - A...
AWS Greengrass, Containers, and Your Dev Process for Edge Apps (GPSWS404) - A...AWS Greengrass, Containers, and Your Dev Process for Edge Apps (GPSWS404) - A...
AWS Greengrass, Containers, and Your Dev Process for Edge Apps (GPSWS404) - A...Amazon Web Services
 
DevOps Spain 2019. Pedro Mendoza-AWS
DevOps Spain 2019. Pedro Mendoza-AWSDevOps Spain 2019. Pedro Mendoza-AWS
DevOps Spain 2019. Pedro Mendoza-AWSatSistemas
 
Docker Birthday #3 - Intro to Docker Slides
Docker Birthday #3 - Intro to Docker SlidesDocker Birthday #3 - Intro to Docker Slides
Docker Birthday #3 - Intro to Docker SlidesDocker, Inc.
 
Docker Birthday #3 Slides - Overview
Docker Birthday #3 Slides - OverviewDocker Birthday #3 Slides - Overview
Docker Birthday #3 Slides - OverviewChris Ciborowski
 
AWS DevDay Cologne - CI/CD for modern applications
AWS DevDay Cologne - CI/CD for modern applicationsAWS DevDay Cologne - CI/CD for modern applications
AWS DevDay Cologne - CI/CD for modern applicationsCobus Bernard
 
Building Node.js applications for Microsoft Azure cloud
Building Node.js applications for Microsoft Azure cloudBuilding Node.js applications for Microsoft Azure cloud
Building Node.js applications for Microsoft Azure cloud Faculty of Computer Science
 
The Kubernetes WebLogic revival (part 2)
The Kubernetes WebLogic revival (part 2)The Kubernetes WebLogic revival (part 2)
The Kubernetes WebLogic revival (part 2)Simon Haslam
 
2018 07 aws windsor user group - fall project planning v1
2018 07 aws windsor user group - fall project planning v12018 07 aws windsor user group - fall project planning v1
2018 07 aws windsor user group - fall project planning v1Paul Camilleri, PMP
 
20191201 kubernetes managed weblogic revival - part 2
20191201 kubernetes managed weblogic revival - part 220191201 kubernetes managed weblogic revival - part 2
20191201 kubernetes managed weblogic revival - part 2makker_nl
 
What's new in App Engine and intro to App Engine for Business
What's new in App Engine and intro to App Engine for BusinessWhat's new in App Engine and intro to App Engine for Business
What's new in App Engine and intro to App Engine for BusinessChris Schalk
 
A Tale of Two Pizzas: Accelerating Software Delivery with AWS Developer Tools
A Tale of Two Pizzas: Accelerating Software Delivery with AWS Developer ToolsA Tale of Two Pizzas: Accelerating Software Delivery with AWS Developer Tools
A Tale of Two Pizzas: Accelerating Software Delivery with AWS Developer ToolsAmazon Web Services
 
Http Services in Rust on Containers
Http Services in Rust on ContainersHttp Services in Rust on Containers
Http Services in Rust on ContainersAnton Whalley
 
#SPFestSea azr302 The SharePoint Framework and the #MicrosoftGraph under ster...
#SPFestSea azr302 The SharePoint Framework and the #MicrosoftGraph under ster...#SPFestSea azr302 The SharePoint Framework and the #MicrosoftGraph under ster...
#SPFestSea azr302 The SharePoint Framework and the #MicrosoftGraph under ster...Vincent Biret
 

Similar to 2019 08-01-i ddd-studygroup-appendix (20)

2019 04-25-agile communitymeetup-essentialcapabilitiesbehindmicroservices
2019 04-25-agile communitymeetup-essentialcapabilitiesbehindmicroservices2019 04-25-agile communitymeetup-essentialcapabilitiesbehindmicroservices
2019 04-25-agile communitymeetup-essentialcapabilitiesbehindmicroservices
 
DDD Taiwan Community 2019 01-26-1st-meetup-why ddd matters
DDD Taiwan Community 2019 01-26-1st-meetup-why ddd mattersDDD Taiwan Community 2019 01-26-1st-meetup-why ddd matters
DDD Taiwan Community 2019 01-26-1st-meetup-why ddd matters
 
End-to-End CI/CD at scale with Infrastructure-as-Code on AWS
End-to-End CI/CD at scale with Infrastructure-as-Code on AWSEnd-to-End CI/CD at scale with Infrastructure-as-Code on AWS
End-to-End CI/CD at scale with Infrastructure-as-Code on AWS
 
CI CD using AWS Developer Tools @ AWS Community Day Chennai 2019
CI CD using AWS Developer Tools @ AWS Community Day Chennai 2019CI CD using AWS Developer Tools @ AWS Community Day Chennai 2019
CI CD using AWS Developer Tools @ AWS Community Day Chennai 2019
 
Bringing swift to cloud
Bringing swift to cloudBringing swift to cloud
Bringing swift to cloud
 
AWS Greengrass, Containers, and Your Dev Process for Edge Apps (GPSWS404) - A...
AWS Greengrass, Containers, and Your Dev Process for Edge Apps (GPSWS404) - A...AWS Greengrass, Containers, and Your Dev Process for Edge Apps (GPSWS404) - A...
AWS Greengrass, Containers, and Your Dev Process for Edge Apps (GPSWS404) - A...
 
DevOps Spain 2019. Pedro Mendoza-AWS
DevOps Spain 2019. Pedro Mendoza-AWSDevOps Spain 2019. Pedro Mendoza-AWS
DevOps Spain 2019. Pedro Mendoza-AWS
 
Docker Birthday #3 - Intro to Docker Slides
Docker Birthday #3 - Intro to Docker SlidesDocker Birthday #3 - Intro to Docker Slides
Docker Birthday #3 - Intro to Docker Slides
 
Docker Birthday #3 Slides - Overview
Docker Birthday #3 Slides - OverviewDocker Birthday #3 Slides - Overview
Docker Birthday #3 Slides - Overview
 
AWS DevDay Cologne - CI/CD for modern applications
AWS DevDay Cologne - CI/CD for modern applicationsAWS DevDay Cologne - CI/CD for modern applications
AWS DevDay Cologne - CI/CD for modern applications
 
Building Node.js applications for Microsoft Azure cloud
Building Node.js applications for Microsoft Azure cloudBuilding Node.js applications for Microsoft Azure cloud
Building Node.js applications for Microsoft Azure cloud
 
The Kubernetes WebLogic revival (part 2)
The Kubernetes WebLogic revival (part 2)The Kubernetes WebLogic revival (part 2)
The Kubernetes WebLogic revival (part 2)
 
Evolve 19 | Jayan Kandathil | Running AEM Workloads on Microsoft Azure
Evolve 19 | Jayan Kandathil | Running AEM Workloads on Microsoft AzureEvolve 19 | Jayan Kandathil | Running AEM Workloads on Microsoft Azure
Evolve 19 | Jayan Kandathil | Running AEM Workloads on Microsoft Azure
 
2018 07 aws windsor user group - fall project planning v1
2018 07 aws windsor user group - fall project planning v12018 07 aws windsor user group - fall project planning v1
2018 07 aws windsor user group - fall project planning v1
 
Community day _aws_ci_cd_v0.2
Community day _aws_ci_cd_v0.2Community day _aws_ci_cd_v0.2
Community day _aws_ci_cd_v0.2
 
20191201 kubernetes managed weblogic revival - part 2
20191201 kubernetes managed weblogic revival - part 220191201 kubernetes managed weblogic revival - part 2
20191201 kubernetes managed weblogic revival - part 2
 
What's new in App Engine and intro to App Engine for Business
What's new in App Engine and intro to App Engine for BusinessWhat's new in App Engine and intro to App Engine for Business
What's new in App Engine and intro to App Engine for Business
 
A Tale of Two Pizzas: Accelerating Software Delivery with AWS Developer Tools
A Tale of Two Pizzas: Accelerating Software Delivery with AWS Developer ToolsA Tale of Two Pizzas: Accelerating Software Delivery with AWS Developer Tools
A Tale of Two Pizzas: Accelerating Software Delivery with AWS Developer Tools
 
Http Services in Rust on Containers
Http Services in Rust on ContainersHttp Services in Rust on Containers
Http Services in Rust on Containers
 
#SPFestSea azr302 The SharePoint Framework and the #MicrosoftGraph under ster...
#SPFestSea azr302 The SharePoint Framework and the #MicrosoftGraph under ster...#SPFestSea azr302 The SharePoint Framework and the #MicrosoftGraph under ster...
#SPFestSea azr302 The SharePoint Framework and the #MicrosoftGraph under ster...
 

More from Kim Kao

Enlarge influence by Participating in communities
Enlarge influence by Participating in communitiesEnlarge influence by Participating in communities
Enlarge influence by Participating in communitiesKim Kao
 
跟著Actor Model來一場與DDD的豔遇
跟著Actor Model來一場與DDD的豔遇跟著Actor Model來一場與DDD的豔遇
跟著Actor Model來一場與DDD的豔遇Kim Kao
 
2019 06-12-aws taipei summit-dev day-essential capabilities behind microservices
2019 06-12-aws taipei summit-dev day-essential capabilities behind microservices2019 06-12-aws taipei summit-dev day-essential capabilities behind microservices
2019 06-12-aws taipei summit-dev day-essential capabilities behind microservicesKim Kao
 
Ddd by-clark chou
Ddd by-clark chouDdd by-clark chou
Ddd by-clark chouKim Kao
 
Ddd(meetup 2) ddd with clean architecture
Ddd(meetup 2) ddd with clean architectureDdd(meetup 2) ddd with clean architecture
Ddd(meetup 2) ddd with clean architectureKim Kao
 
2018 10-19-jc conf-embrace-legacy-java-ee-by-aws-serverless
2018 10-19-jc conf-embrace-legacy-java-ee-by-aws-serverless2018 10-19-jc conf-embrace-legacy-java-ee-by-aws-serverless
2018 10-19-jc conf-embrace-legacy-java-ee-by-aws-serverlessKim Kao
 
Legacy java ee meet lambda
Legacy java ee  meet lambdaLegacy java ee  meet lambda
Legacy java ee meet lambdaKim Kao
 

More from Kim Kao (7)

Enlarge influence by Participating in communities
Enlarge influence by Participating in communitiesEnlarge influence by Participating in communities
Enlarge influence by Participating in communities
 
跟著Actor Model來一場與DDD的豔遇
跟著Actor Model來一場與DDD的豔遇跟著Actor Model來一場與DDD的豔遇
跟著Actor Model來一場與DDD的豔遇
 
2019 06-12-aws taipei summit-dev day-essential capabilities behind microservices
2019 06-12-aws taipei summit-dev day-essential capabilities behind microservices2019 06-12-aws taipei summit-dev day-essential capabilities behind microservices
2019 06-12-aws taipei summit-dev day-essential capabilities behind microservices
 
Ddd by-clark chou
Ddd by-clark chouDdd by-clark chou
Ddd by-clark chou
 
Ddd(meetup 2) ddd with clean architecture
Ddd(meetup 2) ddd with clean architectureDdd(meetup 2) ddd with clean architecture
Ddd(meetup 2) ddd with clean architecture
 
2018 10-19-jc conf-embrace-legacy-java-ee-by-aws-serverless
2018 10-19-jc conf-embrace-legacy-java-ee-by-aws-serverless2018 10-19-jc conf-embrace-legacy-java-ee-by-aws-serverless
2018 10-19-jc conf-embrace-legacy-java-ee-by-aws-serverless
 
Legacy java ee meet lambda
Legacy java ee  meet lambdaLegacy java ee  meet lambda
Legacy java ee meet lambda
 

Recently uploaded

Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024StefanoLambiase
 
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...gurkirankumar98700
 
Unveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML DiagramsUnveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML DiagramsAhmed Mohamed
 
React Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief UtamaReact Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief UtamaHanief Utama
 
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...stazi3110
 
Cloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEECloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEEVICTOR MAESTRE RAMIREZ
 
EY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityEY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityNeo4j
 
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样umasea
 
Professional Resume Template for Software Developers
Professional Resume Template for Software DevelopersProfessional Resume Template for Software Developers
Professional Resume Template for Software DevelopersVinodh Ram
 
Intelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalmIntelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalmSujith Sukumaran
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...MyIntelliSource, Inc.
 
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdfGOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdfAlina Yurenko
 
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...MyIntelliSource, Inc.
 
MYjobs Presentation Django-based project
MYjobs Presentation Django-based projectMYjobs Presentation Django-based project
MYjobs Presentation Django-based projectAnoyGreter
 
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...soniya singh
 
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio, Inc.
 
Salesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantSalesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantAxelRicardoTrocheRiq
 
What is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need ItWhat is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need ItWave PLM
 
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEBATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEOrtus Solutions, Corp
 

Recently uploaded (20)

Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
 
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
 
Unveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML DiagramsUnveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML Diagrams
 
React Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief UtamaReact Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief Utama
 
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
 
Cloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEECloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEE
 
EY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityEY_Graph Database Powered Sustainability
EY_Graph Database Powered Sustainability
 
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
 
Professional Resume Template for Software Developers
Professional Resume Template for Software DevelopersProfessional Resume Template for Software Developers
Professional Resume Template for Software Developers
 
Intelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalmIntelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalm
 
Call Girls In Mukherjee Nagar 📱 9999965857 🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...
Call Girls In Mukherjee Nagar 📱  9999965857  🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...Call Girls In Mukherjee Nagar 📱  9999965857  🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...
Call Girls In Mukherjee Nagar 📱 9999965857 🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
 
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdfGOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
 
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
 
MYjobs Presentation Django-based project
MYjobs Presentation Django-based projectMYjobs Presentation Django-based project
MYjobs Presentation Django-based project
 
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
 
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
 
Salesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantSalesforce Certified Field Service Consultant
Salesforce Certified Field Service Consultant
 
What is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need ItWhat is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need It
 
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEBATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
 

2019 08-01-i ddd-studygroup-appendix

  • 1. © 2019, Domain Driven Design Taiwan Community Kim Kao ( ) Aug 01, 2019 Aggregate + Event Sourcing
  • 2. © 2019, Domain Driven Design Taiwan Community Event sourcing – • • : •
  • 3. © 2019, Domain Driven Design Taiwan Community ? • ( ) • (Event Store) : • • • (pub/sub) • RDBMS+ pub/sub • NoSQL + pub/sub • ...
  • 4. © 2019, Domain Driven Design Taiwan Community • • : update ... Set vs append only logging... • Reliability • à .. Etc •
  • 5. © 2019, Domain Driven Design Taiwan Community ? • à Event Storming workshop • à • (2013) • • CQRS • Command-Query-Responsibility-Segregation
  • 6. © 2019, Domain Driven Design Taiwan Community Application Service 1. 2. ( replay Entity Id ) / ( )
  • 7. © 2019, Domain Driven Design Taiwan Community – EventStore, domain Service
  • 8. © 2019, Domain Driven Design Taiwan Community
  • 9. © 2019, Domain Driven Design Taiwan Community -
  • 10. © 2019, Domain Driven Design Taiwan Community C#
  • 11. © 2019, Domain Driven Design Taiwan Community 1. mutate 2. lock 3. Apply Event 4. 5. 6. ... looping
  • 12. © 2019, Domain Driven Design Taiwan Community • • , class for state • , class for behavior
  • 13. © 2019, Domain Driven Design Taiwan Community
  • 14. © 2019, Domain Driven Design Taiwan Community clone
  • 15. © 2019, Domain Driven Design Taiwan Community • • Application Service à Domain Service • Get Aggregate root instance by Id • Fetch corresponding event streams • Replay to get current status ( ) • • Aggregate • , •
  • 16. © 2019, Domain Driven Design Taiwan Community ... , lambda ...
  • 17. © 2019, Domain Driven Design Taiwan Community Command Handler
  • 18. © 2019, Domain Driven Design Taiwan Community command
  • 19. © 2019, Domain Driven Design Taiwan Community command
  • 20. © 2019, Domain Driven Design Taiwan Community Command
  • 21. © 2019, Domain Driven Design Taiwan Community Queue
  • 22. © 2019, Domain Driven Design Taiwan Community
  • 23. © 2019, Domain Driven Design Taiwan Community Concurrency control • thread : throw EventStoreConcurrencyException at step 4
  • 24. © 2019, Domain Driven Design Taiwan Community
  • 25. © 2019, Domain Driven Design Taiwan Community • Thread2 while loop event 1~5 • Thread2 6~7 • •
  • 26. © 2019, Domain Driven Design Taiwan Community • à • • • ( ) •
  • 27. © 2019, Domain Driven Design Taiwan Community • EventStore AWS S3 bucket.. Unlimited capacity • •
  • 28. © 2019, Domain Driven Design Taiwan Community 1. 2.
  • 29. © 2019, Domain Driven Design Taiwan Community EventStore https://github.com/jimitndiaye/lokad-iddd-sample https://github.com/abdullin/lokad-cqrs
  • 30. © 2019, Domain Driven Design Taiwan Community
  • 31. © 2019, Domain Driven Design Taiwan Community