Please log in to watch this conference skillscast.
Software systems have traditionally been built excluding the notion of time and focusing only on their current state. Global continuous consistency of the data within these systems is guaranteed by transactions, typically using relational databases. This approach has worked very well in the past, but as the industry moves towards distributed systems scalability is significantly hindered when trying to apply the same concepts in this world. This talk explores the concept of Event Sourcing, complemented by the Command Query Responsibility Segregation principle, as an alternative to maintaining a current globally consistent state, leading to lower latencies and a higher degree of scalability. The session will include a step by step guide on how to build an example reactive system in this style using the Typesafe Platform (specifically Akka, Akka Persistence and Akka Clustering).
You should be familiar with basic Scala syntax and have a basic understanding of the actor model with Akka. Event Sourcing (ES) is a way of persisting a system state by retaining all the events that led up to form the current state of the system.
Command Query Responsibility Segregation (CQRS) is a principle that separates the handling of command input within a system from queries (that don’t alter the system state – side effect free).
Check out Typesafe here.
YOU MAY ALSO LIKE:
- FullStack Event Sourcing and Applied DDD with Roman Sachse (Online Course on 23rd - 25th September 2020)
- Domain Models in Practice: DDD, CQRS & Event Sourcing with Marco Heimeshoff (Online Course on 28th September - 2nd October 2020)
- Functional Programming in Java, Groovy, and Kotlin (Online Meetup on 4th August 2020)
- Applied Domain-Driven Design — Full-Stack Event Sourcing (SkillsCast recorded in July 2020)
- Abstract Data Types In The Region Of Abysmal Pain, And How To Navigate Them (SkillsCast recorded in September 2019)
Time travelling in distributed software systems
Bogdan is a Software Engineer at Endava, primarily focused on JVM based languages and technologies. He is involved in most of the technical aspects of software engineering, from design, development and quality assurance, to infrastructure, configuration and release management. His area of expertise includes developing systems for banking and payments industries.