"Commander: Better Distributed Applications through CQRS and Event Sourcing" by Bobby Calderwood
Have you ever hit a wall with REST? Does modeling your problem domain into CRUD-able entities feel like fitting a square peg into a round hole? Perhaps instead of modeling our services like little databases, we should instead model them like reactors over immutable event streams.
REST APIs are great, but their typical implementation tightly couples various concerns that would be better separated:
* Reads (perception) with writes (action)
* Current state with historical narrative
* Business logic with HTTP request processing, and with operational concerns like metrics and monitoring
Commander is:
* A pattern for writing distributed applications that de-couples these concerns using ideas from CQRS and Event Sourcing, thereby alleviating common frustrations with CRUD-flavored REST
* An implementation of the core component in this pattern using Clojure in the HTTP layer, using Java with the new Kafka Streams library in the event stream processing layer, and using Datomic for persistence.
The Commander pattern imposes a clear separation of action from perception, and uses immutable values conveyed by Kafka and the Kafka Streams library to separate business logic from HTTP request processing, all while preserving the historical narrative of the entire event stream.
In this talk, I'll discuss the benefits and tradeoffs of applying this pattern in an enterprise context, and demonstrate my implementation under load.
Видео "Commander: Better Distributed Applications through CQRS and Event Sourcing" by Bobby Calderwood канала Strange Loop Conference
REST APIs are great, but their typical implementation tightly couples various concerns that would be better separated:
* Reads (perception) with writes (action)
* Current state with historical narrative
* Business logic with HTTP request processing, and with operational concerns like metrics and monitoring
Commander is:
* A pattern for writing distributed applications that de-couples these concerns using ideas from CQRS and Event Sourcing, thereby alleviating common frustrations with CRUD-flavored REST
* An implementation of the core component in this pattern using Clojure in the HTTP layer, using Java with the new Kafka Streams library in the event stream processing layer, and using Datomic for persistence.
The Commander pattern imposes a clear separation of action from perception, and uses immutable values conveyed by Kafka and the Kafka Streams library to separate business logic from HTTP request processing, all while preserving the historical narrative of the entire event stream.
In this talk, I'll discuss the benefits and tradeoffs of applying this pattern in an enterprise context, and demonstrate my implementation under load.
Видео "Commander: Better Distributed Applications through CQRS and Event Sourcing" by Bobby Calderwood канала Strange Loop Conference
Показать
Комментарии отсутствуют
Информация о видео
18 сентября 2016 г. 17:23:08
00:42:55
Другие видео канала
![Building Event-Driven Microservices with Event Sourcing and CQRS (Lidan Hifi, Israel)](https://i.ytimg.com/vi/izmjS6ENFKA/default.jpg)
![Greg Young — A Decade of DDD, CQRS, Event Sourcing](https://i.ytimg.com/vi/LDW0QWie21s/default.jpg)
![Recent Advances in System Software Security - Frank Piessens](https://i.ytimg.com/vi/9VOqwvGFzpc/default.jpg)
![The Principles of Clean Architecture by Uncle Bob Martin](https://i.ytimg.com/vi/o_TH-Y78tt4/default.jpg)
!["A better story for Kubernetes secrets" by Seth Vargo](https://i.ytimg.com/vi/7jSfJombUeY/default.jpg)
!["Minimalist Piano Forever" by Mouse Reeve](https://i.ytimg.com/vi/ANYMii3Sypg/default.jpg)
![Redis Streams for Event-Driven Microservices](https://i.ytimg.com/vi/QjJeKwB4_8o/default.jpg)
![Building cloud-native applications with Kubernetes and Istio, by Kelsey Hightower](https://i.ytimg.com/vi/6BYq6hNhceI/default.jpg)
!["Ruby on the Apple II: Adventures in Retro Programming" by Colin Fulton](https://i.ytimg.com/vi/Qn6TCXJmITM/default.jpg)
![RxJS 5 Thinking Reactively | Ben Lesh](https://i.ytimg.com/vi/3LKMwkuK0ZE/default.jpg)
![](https://i.ytimg.com/vi/xD2VEKj-JSM/default.jpg)
![Using Redis Streams to Build Event Driven Microservices and User Interface In Clojure](https://i.ytimg.com/vi/30Odhss1xVA/default.jpg)
![YOW! Nights March 2016 Martin Fowler - Event Sourcing #YOWNights](https://i.ytimg.com/vi/aweV9FLTZkU/default.jpg)
!["Unison: a new distributed programming language" by Paul Chiusano](https://i.ytimg.com/vi/gCWtkvDQ2ZI/default.jpg)
!["Privacy Governance & Explainability in ML/AI" by Jared Maslin](https://i.ytimg.com/vi/o1mZjvBrSOk/default.jpg)
!["Pattern Matching @ Scale Using Finite State Machine" by Ajit Koti and Rashmi Shamprasad](https://i.ytimg.com/vi/WykSdgtLDD0/default.jpg)
![GOTO 2012 • Scaling Yourself • Scott Hanselman](https://i.ytimg.com/vi/FS1mnISoG7U/default.jpg)
!["Building a Unified Cancer Immunotherapy Data Library" by Lacey Kitch and Ben Kamphaus](https://i.ytimg.com/vi/vwZxHVcfwuw/default.jpg)
![Avoiding Microservice Megadisasters - Jimmy Bogard](https://i.ytimg.com/vi/gfh-VCTwMw8/default.jpg)
![RailsConf 2017: Tricks and treats for new developers by David Padilla](https://i.ytimg.com/vi/BZbW8FAvf00/default.jpg)