Event-driven architecture
-
Upload
andrew-easter -
Category
Technology
-
view
50 -
download
3
Transcript of Event-driven architecture
![Page 1: Event-driven architecture](https://reader030.fdocuments.net/reader030/viewer/2022032619/55c10815bb61ebc2568b4770/html5/thumbnails/1.jpg)
Event Driven ArchitectureA short overview of
Andrew Easter
![Page 2: Event-driven architecture](https://reader030.fdocuments.net/reader030/viewer/2022032619/55c10815bb61ebc2568b4770/html5/thumbnails/2.jpg)
Who am I?
● Former Platform Architect at Gumtree.com● Specialise in JVM (Java/Scala) development● Currently contracting/freelancing/consulting
whilst validating startup ideas● CTC Tech Specialist● CTC Agile & Scrum Workshop Facilitator
![Page 3: Event-driven architecture](https://reader030.fdocuments.net/reader030/viewer/2022032619/55c10815bb61ebc2568b4770/html5/thumbnails/3.jpg)
“Event-driven architecture (EDA) is a software architecture pattern promoting the production, detection,consumption of, and reaction to events”
Wikipedia says...
![Page 4: Event-driven architecture](https://reader030.fdocuments.net/reader030/viewer/2022032619/55c10815bb61ebc2568b4770/html5/thumbnails/4.jpg)
“The art of designing a system around the principle of using events – concise descriptions of state changes or significant occurrences in the system – to drive behaviour both within and between the applications that make up an entire system”
Andrew Easter says...
![Page 5: Event-driven architecture](https://reader030.fdocuments.net/reader030/viewer/2022032619/55c10815bb61ebc2568b4770/html5/thumbnails/5.jpg)
Pub/Sub Pattern Revisited
Model View2
View1
View3
![Page 6: Event-driven architecture](https://reader030.fdocuments.net/reader030/viewer/2022032619/55c10815bb61ebc2568b4770/html5/thumbnails/6.jpg)
“To be successful with EDA, it needs to become a fundamental mindset that drives all design decisions, rather than just a pattern that is used in some isolated parts of a wider system”
![Page 7: Event-driven architecture](https://reader030.fdocuments.net/reader030/viewer/2022032619/55c10815bb61ebc2568b4770/html5/thumbnails/7.jpg)
Example: Entity changes as events
BankAccount
DepositMade
AccountCreated
WithdrawalMade
![Page 8: Event-driven architecture](https://reader030.fdocuments.net/reader030/viewer/2022032619/55c10815bb61ebc2568b4770/html5/thumbnails/8.jpg)
AccountCreated
Send Bank Card
Send Welcome
UpsellReminder
![Page 9: Event-driven architecture](https://reader030.fdocuments.net/reader030/viewer/2022032619/55c10815bb61ebc2568b4770/html5/thumbnails/9.jpg)
Why do this?(other than it just being cool)
![Page 10: Event-driven architecture](https://reader030.fdocuments.net/reader030/viewer/2022032619/55c10815bb61ebc2568b4770/html5/thumbnails/10.jpg)
Separation of concerns
Single responsibility principle
Extensibility
![Page 11: Event-driven architecture](https://reader030.fdocuments.net/reader030/viewer/2022032619/55c10815bb61ebc2568b4770/html5/thumbnails/11.jpg)
...what does this enable?
But...
![Page 12: Event-driven architecture](https://reader030.fdocuments.net/reader030/viewer/2022032619/55c10815bb61ebc2568b4770/html5/thumbnails/12.jpg)
aka webhooks
The Evented Web
![Page 13: Event-driven architecture](https://reader030.fdocuments.net/reader030/viewer/2022032619/55c10815bb61ebc2568b4770/html5/thumbnails/13.jpg)
Business intelligence
Big Data (yuck)
![Page 14: Event-driven architecture](https://reader030.fdocuments.net/reader030/viewer/2022032619/55c10815bb61ebc2568b4770/html5/thumbnails/14.jpg)
Sexy dashboards
System Monitoring
![Page 16: Event-driven architecture](https://reader030.fdocuments.net/reader030/viewer/2022032619/55c10815bb61ebc2568b4770/html5/thumbnails/16.jpg)
Given, When, Then
Behaviour-driven Development (BDD)
![Page 17: Event-driven architecture](https://reader030.fdocuments.net/reader030/viewer/2022032619/55c10815bb61ebc2568b4770/html5/thumbnails/17.jpg)
And finally...
![Page 18: Event-driven architecture](https://reader030.fdocuments.net/reader030/viewer/2022032619/55c10815bb61ebc2568b4770/html5/thumbnails/18.jpg)
Eventsourcing
![Page 19: Event-driven architecture](https://reader030.fdocuments.net/reader030/viewer/2022032619/55c10815bb61ebc2568b4770/html5/thumbnails/19.jpg)
Eventsourcing is an approach to persistence that means the state of an entity is made up
of all the events (state changes) it has emitted over time
![Page 20: Event-driven architecture](https://reader030.fdocuments.net/reader030/viewer/2022032619/55c10815bb61ebc2568b4770/html5/thumbnails/20.jpg)
AccountCreated
DepositMade
DepositMade
DepositMade
WithdrawalMade
InterestCredited
Time Replay BankAccount(current state)
![Page 21: Event-driven architecture](https://reader030.fdocuments.net/reader030/viewer/2022032619/55c10815bb61ebc2568b4770/html5/thumbnails/21.jpg)
● Very scalable. An event store can be as simple as an append only log file
● Full history of every state change - great for auditing and debugging
● Very BDD compatible● Plays real nice with the CQRS pattern
Benefits
![Page 22: Event-driven architecture](https://reader030.fdocuments.net/reader030/viewer/2022032619/55c10815bb61ebc2568b4770/html5/thumbnails/22.jpg)
Any questions?
![Page 23: Event-driven architecture](https://reader030.fdocuments.net/reader030/viewer/2022032619/55c10815bb61ebc2568b4770/html5/thumbnails/23.jpg)
Contact me@DrewEaster
http://www.dreweaster.com