The Blog

Feb 20, 2008

Eventual Consistency 

by Maxim Porges @ 7:34 PM | Link | Feedback (0)

The more I have learned as a software engineer over my career, the more I have come to realize that it's better to build systems that expect failure in dependent systems and to handle it gracefully than it is to try to build systems that eliminate the possibility of failure altogether.

This evolution in my personal thinking has come about as I have become more familiar with service architecture, asynchronous processes, and the like. It's also come from seeing just about everything fail in various scenarios, regardless of how robust each part of the system appeared to be.

This article from Werner Vogel (CTO at Amazon.com) does a really nice job of explaining the concept of "eventual consistency" at a high level. Basically, once you have accepted the fact that you can only have two of the trio scalability, reliability, and consistency, you have to decide which attributes are most important for your use case and design your system architecture accordingly.

I hope you find the article as useful as I did.