In the book Designing Data-Intensive Applications: The Big Ideas Behind Reliable, Scalable, and Maintainable Systems, Martin Kleppmann has written about traits and trade-offs of elements of data infrastructure for modern applications. In that book, he has drawn “Figure 1-1. One possible architecture for a data system that combines several components”. This is an exploration that example and possible architecture with Couchbase.
Let’s use a modern database like Couchbase which simplifies the infrastructure by providing scalable Cache, Database, Search, and Event processing within the same product. One bye one, we can replace each independent component with a scalable feature in Couchbase feature (
Example 2: I’ve added an additional common use case: data analysis and DataViz.
After using the same technique to use Couchbase and remove unnecessary components, we get this:
Again, let’s remove the unnecessary parts to get the new architecture. Here, we’ve exploited the Analytics service available within Couchbase.
This doesn’t mean everything can be simply rearchitected to use one or two products. The tendency of any infrastructure is to increase complexity. More components will increase complexity. This is a guide to continuously add, remove, and refactor the components to meet your business objective and to fight complexity.