Consistency, ACID, BASE, RDBMS, NoSQL, Distribution, Cloud, Microservices
Here we are: Microservices, Container, Cloud ... and lots of data to deal with. Usually that's where the real trouble starts. Many developers still base their designs on the concept of perfectly consistent ACID transactions, no anomalies or other inconsistencies around.
But reality is different: Perfect consistency does not exist and many real-world use cases require much weaker consistency models in order to satisfy the scalability or robustness requirements.
So, what are our options and what is the price we need to pay? Do we need to accept potentially losing data in order to get higher availability? Can I use my favorite NoSQL database as a drop-in replacement for that ol' RDBMS?
In this session we will answer this and many more questions. We will also discuss how to pick the right data store (not only) with respect to consistency. Finally, we will have a peek into latest research pushing the borders of the current state-of-art.
To make the complex, distributed and highly interconnected system landscapes of today robust, responsive and highly available, we need to implement resilience into them at application level.
Many patterns for implementing resilience into an application exist. The daunting questions are how to slice (design) an application and which patterns to pick and combine in order to match your specific needs best.
This workshop will address those questions in three parts:
* In the first part you will learn about the challenges how to design applications in a resilient way, get an overview about the resilience pattern landscape, learn some of the most important patterns and when to apply them.
* In the second part you will have the opportunity to apply the just learned contents to a real-life case study and design and discuss your own resilient solution.
* In the last part we will complete the workshop with a peek in some complementing topics, like some advanced patterns, a resilient design cycle and how to introduce the topic into the software development process.
After this workshop, you will have a much deeper understanding how to design solutions that satisfy your specific robustness needs.