Presentation: Tweet"If you are synchronous you are not resilient"
Your software will break. The more sophisticated it is, the more often it will break. While traditional software design tries to eliminate failure through extensive testing, modeling and other techniques, highly scalable and dynamic systems need to embrace failure. Instead of trying to be robust, these systems need to be resilient, e.g. by restricting the extent of failure through isolated failure domains. Synchronous, state-sharing approaches like many object-oriented systems are notorious for propagating failure and make it difficult to isolate failure. Decoupled, asynchronous systems can add resilience.
This sessions takes a journey through coupling, asynchrony, conversations, and patterns for resilient software design.