Example Architectures for Data-Intensive Applications

DZone 's Guide to

Example Architectures for Data-Intensive Applications

This article explores some modern data architectures.

· Big Data Zone ·
Free Resource

…a drawing should have no unnecessary lines and a machine no unnecessary parts.  —William Strunk Jr.Elements of Style

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.

Example 1:

Figure 1 below is the architecture from the book.

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 (  in red  ).


Let’s remove the unnecessary parts to get the new architecture.

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.

analytics, application, architechture, cache, database abstraction layer, event processing, search

Opinions expressed by DZone contributors are their own.

{{ parent.title || parent.header.title}}

{{ parent.tldr }}

{{ parent.urlSource.name }}