This is a small post to inform you about some new slide decks that you can view online or download if you like.
I’ve been presenting at some conferences in the last months. First I talked about the developer challenges if you leave the strict consistency model of ACID transactions at OOP. The slide deck first compares ACID and BASE transactions for a second. Then a simple example using ACID transactions is presented (Java/JPA/RDBMS). Afterwards this example is ported to the NoSQL world in a naive way (seen quite often in real-life projects). The reminder of the deck then shows the challenges that arise from this naive port one by one and ways to deal with them. As with every slide deck a lot of the information is on the voice track but I think the slides on their own already offer some helpful pointers. (This last sentence is also true for the slide decks I’m going to write about in the remainder of this post. Thus, I won’t repeat it for the other slide decks.)
This first presentation is complemented by the presentation I gave at JavaLand. There I talked about the different consistency models in more detail and presented two approaches in depth that I only mentioned shortly in the first presentation: quorum based read & writes which can give you strong client-side consistency and CRDTs (Conflict-free Replicated Data Types) which help to keep your data eventually consistent even under extreme availability requirements. The slide deck is exactly organized the way I just described it before, so no need to write anything more about it.
There is another pair of correlated presentations I’d like to offer. Those presentations are located in the resilience area. The first of the two presentations I gave at QCon London. The slide deck first gives a quick motivation why resilience and fault-tolerant software design is an important topic for developers today. The reminder of the deck is organized the following way: First a case study is shown that explains the consequences of non-resilient applications. Then some patterns are shown that help to mitigate the problems shown in the case study – including code examples that show how to implement those patterns. The idea of this talk was not to give an introduction or overview to resilient software design, but to demonstrate that at least for some resilience patterns it is surprisingly easy to get them implemented in your application – which is a lot better than not having any of them in place.
The complementing presentation is the one I gave at the Berlin Expert Days. There I gave an introduction to Hystrix, a resilience library developed by Netflix. Hystrix implements downstream isolation utilizing timeouts, circuit breakers and load shedder which are some of the patterns I presented in the other talk. The slide deck again starts with a quick motivation why resilience is important. Then Hystrix is introduced – first a quick overview, then some basics features. Afterwards some principles of Hystrix are explained in more detail, followed by some resilience patterns that can be implemented using Hystrix – including lots of code examples. A short glance at some advanced Hystrix features and extensions that were not mentioned before close the presentation.
Those were the slide decks related to distributed and scalable systems which is one of my current focus areas. My second focus area I usually describe with “IT organizations in a post-agile world”. If you want to know a bit more in detail what I mean with that flamboyant phrase you might want to have a quick look at my slide deck about surviving the economic darwinism which explains the core ideas. Within the scope of this focus area I am going to talk about “DevOps for Developers” at Codemotion. The core idea of this slide deck is that many developers are taken in by the false assumption that DevOps is a cool idea but does not affect them in their daily development work. Therefore, first the false assumptions is presented in the slide deck. Then the needs of an operations administrator are described as they nicely describe what properties are crucial for an application in production. Those needs are then taken and the challenges for a developer are derived from them. Afterwards for each of the challenges several principles are presented that explain what a developer needs to take care of in his daily development work in order to deliver software that is really production-ready.
Those were the slide decks I wanted to present in this post. Feel free to view them online or download them. I would be glad if they give you some helpful ideas. And feel free to contact me via Twitter, Email or some other channel if you have any questions or remarks about the slides.