Boa parte dos sistemas de software LoB operam com ênfase em interpretar, “cachear”, armazenar, agregar, proteger e compartilhar dados. Não são aplicações que processam cálculos complexos e, geralmente, estão mais limitadas por recursos de I/O (disco, rede, etc) do que de processamento (CPU, GPU, etc).
0
Considerações?x
Segundo Martin Kleppmann, essas são “Data-Intensive Applications.”
O que são Data-Intensive Applications?
Segundo Kleppmann, “Data-intensive applications” são aquelas onde as questões técnicas mais importantes tem relação com:
- o volume dos dados,
- a complexidade dos dados,
- a velocidade com que os dados são modificados.
Componentes comuns em Data-Intensive Applications
A construção padrão para aplicativos com uso intensivo de dados são:
- bancos de dados – para armazenar dados para que eles, ou outro aplicativo, possam localizá-los novamente mais tarde;
- caches – para agilizar as leituras, lembrando o resultado de operações caras;
- message brokers – para troca de mensagens entre processos e / ou processamento de fluxo;
- batch processors – processam grandes quantidades de dados
Além disso, há muito código de aplicativo para orquestrar todo esse trabalho.
Design comum de Data-Intensive Applications
Considerando o que vimos, poderíamos representar o design de aplicativos com uso intensivo de dados da seguinte maneira:
Este diagrama (adaptado do livro de Kleppmann), nos fornece um excelente plano para uma arquitetura genérica (ou de referência) para “data-intensive applications”.