Architecture for Data-Intensive Applications

Most of my client’s applications code is for parsing, caching, storing, aggregating, protecting and sharing data! It is not the kind of code that demands CPU power (except for the garbage collector).

Martin Kleppmann, in his excellent “Designing Data-Intensive Applications” book, describes this kind of applications as “Data-Intensive Applications.”

What are Data-Intensive Applications?

Following Kleppmann’s definition, Data-intensive applications are these where the more significant problems are:

  1. the amount of data,
  2. the complexity of data,
  3. the speed at which data is changing.

Exact what I have seen in the field.

Data-Intensive Applications building blocks

The standard building for data-intensive applications are:

  • databases – to store data so that they, or another application, can find it again later;
  • caches – to speed up reads remembering the result of expensive operations;
  • message brokers – for message exchanging between processes and/or stream processing;
  • batch processors – crunch big amounts of data

Besides of that, there are a lot of application code to orchestrate all this work.

Data-Intensive Applications Architecture

Considering archictecture as:

The structure of components, ther inter-relationships, and the principles and guidelines governing their design and evolution over time. (ISO/IEC 42010:2011)

Considering what we have seen, we could represent Data-Intensive applications as follows:

This diagram (adapted from the book), provides us with an excellent blueprint for a generic “Data-Intensive Application” architecture. Also, indicates the components we have to write.

PAUSE: Why I love RavenDB?

RavenDB is a powerful NoSQL database that provides built-in support for MapReduce, Full-Text indexing and more. Because of that, when using RavenDB, the need for separeted caching and full-text indexes is reduced and I need to write less code.

COMING BACK: Why is this view important?

Most of the code that I have seen do not have a proper separation of concerns. For example, there are a lot of caching logic mixed with reading data, updates to the full-text search indexes combined with the write operations, and so on. Unfortunately, the result is code hard to read, understand and, consequently, costly to maintain.

Call for Action

What about your code? Is that “data-intensive”? What about the organization of the components? Would it be something like I shared here?

Share your thoughts in the comments.

Compartilhe este insight:

Elemar Júnior

Sou fundador e CEO da EximiaCo e atuo como tech trusted advisor ajudando diversas empresas a gerar mais resultados através da tecnologia.

Elemar Júnior

Sou fundador e CEO da EximiaCo e atuo como tech trusted advisor ajudando diversas empresas a gerar mais resultados através da tecnologia.

Mais insights para o seu negócio

Veja mais alguns estudos e reflexões que podem gerar alguns insights para o seu negócio:

Internalizei a definição de liderança do professor Falconi: Liderança significa bater metas, com o time, fazendo o certo. Assim como...
Entropia é um conceito oriundo da física que trata da quantidade de “desordem” em um sistema. As leis da termodinâmica...
Você ainda acredita em estimativas? Nós, não. Embora aceitemos que ter uma boa ideia de esforço e prazo sejam diferenciais...
Sometimes it is not enough to know if two strings are equals or not. Instead, we need to get an...
Nesses últimos tempos, com a pandemia, inaugurei novos hábitos e aposentei outros. Estou trabalhando muito mais, mas também, agora que...
I worked a lot in the last months updating the RavenDB bootcamp to v4.x. My work is done (for a...

Crie sua conta

Preencha os dados para iniciar o seu cadastro no plano anual do Clube de Estudos:

Crie sua conta

Preencha os dados para iniciar o seu cadastro no plano mensal do Clube de Estudos:

Mentoria em
Arquitetura de Software
com ênfase em IA

Aprenda a coordenar equipes de desenvolvimento, aplicar padrões e técnicas de arquitetura e aumentar sua produtividade criando sistemas inovadores com o suporte da IA.

× Precisa de ajuda?