SlideShare a Scribd company logo
Event-Sourcing your
AngularJS applications
MAURICE DE BEIJER - @MAURICEDB
Who am I?
Maurice de Beijer
The Problem Solver
Microsoft Integration MVP
Freelance developer
DevelopMentor instructor
Twitter:@mauricedb
Blog: http://msmvps.com/blogs/TheProblemSolver/
Web: http://www.TheProblemSolver.nl
E-mail: maurice.de.beijer@gmail.com
Event sourcing your AngularJS applications
Data Storage Maturity Model
3 - Event Sourcing
2 - CQRS
1 - Structured storage
0 – Data Dump
Data Storage Maturity Model
3 - Event Sourcing
2 - CQRS
1 - Structured storage
0 – Data Dump
Event sourcing your AngularJS applications
Event sourcing your AngularJS applications
Event sourcing your AngularJS applications
(Semi) Structured storage
Database CRUD Server HTTP Browser
Event sourcing your AngularJS applications
Event sourcing your AngularJS applications
Data Storage Maturity Model
3 - Event Sourcing
2 - CQRS
1 - Structured storage
0 – Data Dump
Command Query Responsibility Segregation
Command Query Responsibility Segregation
Database
Query Service
Browser
Command Service
Read
Update
Event sourcing your AngularJS applications
Event sourcing your AngularJS applications
Data Storage Maturity Model
3 - Event Sourcing
2 - CQRS
1 - Structured storage
0 – Data Dump
Event sourcing your AngularJS applications
Event sourcing your AngularJS applications
Event Sourcing
Projections
Database
Query Service
Browser
Command
Service
Read
UpdateEvents
Database
Projector
Service
Event sourcing your AngularJS applications
Event sourcing your AngularJS applications
Event sourcing your AngularJS applications
Event sourcing your AngularJS applications
Event sourcing your AngularJS applications
Event sourcing your AngularJS applications

More Related Content

What's hot (10)

PPTX
Event-Sourcing your React-Redux applications
Maurice De Beijer [MVP]
 
PPTX
The Azure API-ness Factory
Mike Martin
 
PPTX
Protecting your online and on premises assets “Cloud Style”
Mike Martin
 
PPTX
Serverless with azure functions the rebel service
Christos Matskas
 
PDF
Build 2014 Azure 的まとめ
Sunao Tomita
 
PPTX
Building Event Driven Integration Architectures
Daniel Toomey
 
PPTX
Introduction to Backbone.js
Pragnesh Vaghela
 
PPTX
Building Serverless Event-Driven Apps with Azure Event Grid
Daniel Toomey
 
PDF
Eventbus Library and How Does it Work?
InnovationM
 
PDF
Azure Event Grid Primer
Hesham Amin
 
Event-Sourcing your React-Redux applications
Maurice De Beijer [MVP]
 
The Azure API-ness Factory
Mike Martin
 
Protecting your online and on premises assets “Cloud Style”
Mike Martin
 
Serverless with azure functions the rebel service
Christos Matskas
 
Build 2014 Azure 的まとめ
Sunao Tomita
 
Building Event Driven Integration Architectures
Daniel Toomey
 
Introduction to Backbone.js
Pragnesh Vaghela
 
Building Serverless Event-Driven Apps with Azure Event Grid
Daniel Toomey
 
Eventbus Library and How Does it Work?
InnovationM
 
Azure Event Grid Primer
Hesham Amin
 

Viewers also liked (13)

PDF
Finally… reliable software!
nextbuild
 
PDF
Microservices in the real world
nextbuild
 
PDF
How invariants help writing loops
nextbuild
 
PPTX
Architecting for the cloud
nextbuild
 
PDF
Cucumber spec - a tool takes your bdd to the next level
nextbuild
 
DOCX
Thị thảo
Thảo Michicô
 
PDF
A first taste of integration with Apache Camel
nextbuild
 
PDF
Cqrs from the trenches
nextbuild
 
PDF
D.Bal Max
steroidreviewer
 
PDF
Asp.net in a new world
nextbuild
 
PDF
Make color schemes a no brainer with sass
nextbuild
 
PPT
Uwarunkowania prawne energetyki 2015
Leszek__Karski
 
PDF
Effective code reviews
nextbuild
 
Finally… reliable software!
nextbuild
 
Microservices in the real world
nextbuild
 
How invariants help writing loops
nextbuild
 
Architecting for the cloud
nextbuild
 
Cucumber spec - a tool takes your bdd to the next level
nextbuild
 
Thị thảo
Thảo Michicô
 
A first taste of integration with Apache Camel
nextbuild
 
Cqrs from the trenches
nextbuild
 
D.Bal Max
steroidreviewer
 
Asp.net in a new world
nextbuild
 
Make color schemes a no brainer with sass
nextbuild
 
Uwarunkowania prawne energetyki 2015
Leszek__Karski
 
Effective code reviews
nextbuild
 
Ad

Similar to Event sourcing your AngularJS applications (20)

PPTX
Event Sourcing your AngularJS applications
Maurice De Beijer [MVP]
 
PDF
fram^ TechTalk #1 - CQRS and Event Sourcing (ES)
Fram^ - IT Engineering & Venture Building
 
PPTX
Event-Sourcing your React-Redux applications - Maurice de Beijer - Codemotion...
Codemotion
 
PPTX
Event sourcing your React-Redux applications
Maurice De Beijer [MVP]
 
PPTX
Event sourcing the best ubiquitous pattern you have never heard off
Joe Drumgoole
 
PDF
CQRS and Event Sourcing with MongoDB and PHP
Davide Bellettini
 
PPTX
CQRS and Event Sourcing with Axon Framework
João Rafael Campos da Silva
 
PDF
Developing event-driven microservices with event sourcing and CQRS (svcc, sv...
Chris Richardson
 
PDF
CQRS and Event Sourcing with PHP
Marcelo Santos
 
PPTX
Event sourcing your React-Flux applications
Maurice De Beijer [MVP]
 
PPTX
Maurice de Beijer
CodeFest
 
PDF
CQRS and Event Sourcing with PHP - shorter version
Marcelo Santos
 
PPTX
Introduction to Event Sourcing
Jeffrey T. Fritz
 
PDF
A year with event sourcing and CQRS
Steve Pember
 
PDF
Events on the outside, on the inside and at the core (jaxlondon)
Chris Richardson
 
PDF
Events on the outside, on the inside and at the core - Chris Richardson
JAXLondon_Conference
 
PDF
Event Sourcing
Bucharest Java User Group
 
PDF
Event Sourcing - Greg Young
JAXLondon2014
 
PPTX
Richer data-history-event-sourcing
Steve Pember
 
PDF
Introduction to Event Sourcing in PHP
Evan McMahon
 
Event Sourcing your AngularJS applications
Maurice De Beijer [MVP]
 
fram^ TechTalk #1 - CQRS and Event Sourcing (ES)
Fram^ - IT Engineering & Venture Building
 
Event-Sourcing your React-Redux applications - Maurice de Beijer - Codemotion...
Codemotion
 
Event sourcing your React-Redux applications
Maurice De Beijer [MVP]
 
Event sourcing the best ubiquitous pattern you have never heard off
Joe Drumgoole
 
CQRS and Event Sourcing with MongoDB and PHP
Davide Bellettini
 
CQRS and Event Sourcing with Axon Framework
João Rafael Campos da Silva
 
Developing event-driven microservices with event sourcing and CQRS (svcc, sv...
Chris Richardson
 
CQRS and Event Sourcing with PHP
Marcelo Santos
 
Event sourcing your React-Flux applications
Maurice De Beijer [MVP]
 
Maurice de Beijer
CodeFest
 
CQRS and Event Sourcing with PHP - shorter version
Marcelo Santos
 
Introduction to Event Sourcing
Jeffrey T. Fritz
 
A year with event sourcing and CQRS
Steve Pember
 
Events on the outside, on the inside and at the core (jaxlondon)
Chris Richardson
 
Events on the outside, on the inside and at the core - Chris Richardson
JAXLondon_Conference
 
Event Sourcing - Greg Young
JAXLondon2014
 
Richer data-history-event-sourcing
Steve Pember
 
Introduction to Event Sourcing in PHP
Evan McMahon
 
Ad

Recently uploaded (20)

PDF
[Newgen] NewgenONE Marvin Brochure 1.pdf
darshakparmar
 
PPTX
WooCommerce Workshop: Bring Your Laptop
Laura Hartwig
 
PDF
CIFDAQ Weekly Market Wrap for 11th July 2025
CIFDAQ
 
PDF
Using FME to Develop Self-Service CAD Applications for a Major UK Police Force
Safe Software
 
PDF
Building Real-Time Digital Twins with IBM Maximo & ArcGIS Indoors
Safe Software
 
PDF
Smart Trailers 2025 Update with History and Overview
Paul Menig
 
PDF
"AI Transformation: Directions and Challenges", Pavlo Shaternik
Fwdays
 
PDF
Reverse Engineering of Security Products: Developing an Advanced Microsoft De...
nwbxhhcyjv
 
PDF
"Beyond English: Navigating the Challenges of Building a Ukrainian-language R...
Fwdays
 
PPT
Interview paper part 3, It is based on Interview Prep
SoumyadeepGhosh39
 
PDF
Exolore The Essential AI Tools in 2025.pdf
Srinivasan M
 
PDF
Newgen 2022-Forrester Newgen TEI_13 05 2022-The-Total-Economic-Impact-Newgen-...
darshakparmar
 
PDF
Newgen Beyond Frankenstein_Build vs Buy_Digital_version.pdf
darshakparmar
 
PDF
How Startups Are Growing Faster with App Developers in Australia.pdf
India App Developer
 
PDF
The Builder’s Playbook - 2025 State of AI Report.pdf
jeroen339954
 
PDF
Presentation - Vibe Coding The Future of Tech
yanuarsinggih1
 
PDF
Chris Elwell Woburn, MA - Passionate About IT Innovation
Chris Elwell Woburn, MA
 
PDF
CIFDAQ Market Insights for July 7th 2025
CIFDAQ
 
PDF
Blockchain Transactions Explained For Everyone
CIFDAQ
 
PDF
Jak MŚP w Europie Środkowo-Wschodniej odnajdują się w świecie AI
dominikamizerska1
 
[Newgen] NewgenONE Marvin Brochure 1.pdf
darshakparmar
 
WooCommerce Workshop: Bring Your Laptop
Laura Hartwig
 
CIFDAQ Weekly Market Wrap for 11th July 2025
CIFDAQ
 
Using FME to Develop Self-Service CAD Applications for a Major UK Police Force
Safe Software
 
Building Real-Time Digital Twins with IBM Maximo & ArcGIS Indoors
Safe Software
 
Smart Trailers 2025 Update with History and Overview
Paul Menig
 
"AI Transformation: Directions and Challenges", Pavlo Shaternik
Fwdays
 
Reverse Engineering of Security Products: Developing an Advanced Microsoft De...
nwbxhhcyjv
 
"Beyond English: Navigating the Challenges of Building a Ukrainian-language R...
Fwdays
 
Interview paper part 3, It is based on Interview Prep
SoumyadeepGhosh39
 
Exolore The Essential AI Tools in 2025.pdf
Srinivasan M
 
Newgen 2022-Forrester Newgen TEI_13 05 2022-The-Total-Economic-Impact-Newgen-...
darshakparmar
 
Newgen Beyond Frankenstein_Build vs Buy_Digital_version.pdf
darshakparmar
 
How Startups Are Growing Faster with App Developers in Australia.pdf
India App Developer
 
The Builder’s Playbook - 2025 State of AI Report.pdf
jeroen339954
 
Presentation - Vibe Coding The Future of Tech
yanuarsinggih1
 
Chris Elwell Woburn, MA - Passionate About IT Innovation
Chris Elwell Woburn, MA
 
CIFDAQ Market Insights for July 7th 2025
CIFDAQ
 
Blockchain Transactions Explained For Everyone
CIFDAQ
 
Jak MŚP w Europie Środkowo-Wschodniej odnajdują się w świecie AI
dominikamizerska1
 

Event sourcing your AngularJS applications

Editor's Notes

  • #4: Why? I want to create better applications Most applications store the current state http://www.flickr.com/photos/celestinechua/9661913835
  • #5: Levels of working with data Create Read Update Delete Command Query Responsibility Segregation Event-Sourcing
  • #6: Data dumps and CRUD actions against database is very similar as seen from the front end
  • #7: Most applications store the current state If you are lucky there is an audit trail of sorts http://www.flickr.com/photos/ell-r-brown/4011702143
  • #8: http://www.flickr.com/photos/willowbl00/12459211923
  • #9: http://www.flickr.com/photos/sukiweb/10223596316
  • #10: The server is often just a simple gateway with just some validation logic
  • #11: $resource and noSQL database make CRUD applications really easy
  • #12: There is nothing wrong with a CRUD application if the problem domain is simple http://www.flickr.com/photos/juhansonin/5144239690
  • #13: Command Query Responsibility Segregation
  • #14: CQRS = Command Query Responsibility Segregation Use a different model to update information than the model you use to read information http://www.flickr.com/photos/usnavy/8220344431
  • #15: Still storing just the current state Database structure is often normalized and optimized for updating Most application read far more frequently then update
  • #16: Commands should be modeled after business actions A business user can understand command names and have a reasonable expectation of the outcome http://www.flickr.com/photos/micahdowty/4630801442
  • #17: We are stil storing only the current state No trace of how we got there http://www.flickr.com/photos/danrocha/15602018982
  • #18: Event sourcing doesn’t depend on CQRS but that structure is often used.
  • #19: Event Sourcing is a very old idea that has become popular again over recent years. Events provide insight into how the system came to be in its current state http://www.flickr.com/photos/dragontomato/5174914835
  • #20: Domain Event is something that has happened in the past The result of a Command to change something Very similar to the audit trail in a database http://www.flickr.com/photos/lendingmemo/11747440176/
  • #21: No longer storing the current state but all event leading up to it The current state is a left fold of all events The projection parts are not really part of ES but CQRS and usually combined
  • #22: Events are never erased or updated An append only model http://www.flickr.com/photos/horiavarlan/4263326117
  • #23: Events are projected out to the read model Observed facts = events Derived facts = projections http://www.flickr.com/photos/fotnmc/7172465908
  • #24: Eventual consistency both good and bad Better scalability Harder to program the UI Block until done Fake it on the client Use long polling or push notifications http://www.flickr.com/photos/epsos/5732013768
  • #25: Event Sourcing adds complexity Don’t do it where it doesn’t make sense It’s perfectly fine to use CRUD for static reference and ES for domain in the same app http://www.flickr.com/photos/10912969@N03/2046600021/
  • #26: Sample application: https://github.com/mauricedb/Movies-GES Main technologies used: https://angularjs.org/ http://geteventstore.com/ http://redis.io/ http://www.asp.net/ https://www.flickr.com/photos/kevandotorg/6229660191
  • #27: More info: Martin Fowler: http://martinfowler.com/eaaDev/EventSourcing.html Greg Young: http://goodenoughsoftware.net/ Daniel Whittaker: http://danielwhittaker.me/tag/event-sourcing/ João Bragança: https://github.com/thefringeninja/derp.inventory Damian Hickey: http://dhickey.ie/?tag=/Event-Sourcing https://www.flickr.com/photos/stevendepolo/4582437563/