[Techgroup] Introducción a Dapr: Explorando los bloques fundamentales para construir aplicaciones distribuidas

Sebastian Torralba
AvengaLATAM
Published in
4 min readJun 5, 2023

En incluiT siempre estamos a la vanguardia de la tecnología, con la iniciativa de los TechGroups, nos focalizamos en explorar nuevas tecnologías, metodologías y buenas prácticas en el desarrollo de software de calidad.
Dentro del TechGroup de Backend, uno de los Labs implementará DAPR.
Con la intención de generar un sistema, con una arquitectura de microservicios en diferentes lenguajes e integrarlos con esta herramienta.
En próximos artículos iremos revisando como madura el proyecto del Lab.

Introducción:

En el mundo de las aplicaciones distribuidas, la gestión de la comunicación entre diferentes componentes y servicios puede ser un desafío complejo. Para simplificar este proceso, Dapr (Distributed Application Runtime) ofrece una solución eficiente y flexible. En este artículo, exploraremos los bloques fundamentales de Dapr y cómo se utilizan para construir aplicaciones distribuidas. Nos enfocaremos en cuatro conceptos clave: Bloque, Pub/Sub, Invoke, State y Config.

Arquitectura:

El concepto de sidecar de Dapr es una parte fundamental de la arquitectura Dapr que se ejecuta junto con la aplicación principal y proporciona servicios y funcionalidades adicionales sin requerir cambios en el código fuente. Actúa como una capa intermedia que permite la integración de los bloques de Dapr en la aplicación, facilitando la construcción de aplicaciones distribuidas y mejorando su escalabilidad y resiliencia.

SDK:

La suite contiene una serie de sdks para el desarrollo en diferentes lenguajes.

Bloque:

Es una unidad lógica que encapsula una funcionalidad específica para ayudar en el desarrollo de aplicaciones distribuidas. Los bloques se utilizan como componentes reutilizables que proporcionan servicios comunes y abstraen la complejidad subyacente de la comunicación y la persistencia de datos. Dapr ofrece diferentes bloques para manejar diversas tareas, como el manejo de eventos, la persistencia de estado y la interacción con servicios externos.

Pub/Sub:

Permite que los componentes de una aplicación se comuniquen de manera asíncrona, enviando mensajes a un tema (topic) y permitiendo que otros componentes se suscriban a ese tema para recibir los mensajes. Esto facilita la comunicación entre componentes desacoplados, ya que los productores de mensajes no necesitan conocer a los consumidores, y viceversa. El bloque Pub/Sub de Dapr proporciona una abstracción para interactuar con diferentes sistemas de mensajería y colas, permitiendo la integración sencilla de distintas tecnologías en una aplicación distribuida.

Invoke:

Se encarga de facilitar la interacción entre los diferentes componentes de una aplicación distribuida. Permite invocar métodos o funciones en otros componentes, ya sea dentro de la misma aplicación o en servicios externos. El bloque Invoke abstrae la comunicación subyacente, como la invocación de API REST, gRPC, o incluso funciones serverless. Esto simplifica el desarrollo y la integración de los componentes de la aplicación, ya que no es necesario preocuparse por los detalles de la comunicación subyacente.

State:

Proporciona un modelo de persistencia de datos distribuido. Permite a los componentes de una aplicación almacenar y recuperar datos de forma confiable y consistente, sin preocuparse por la implementación subyacente. El bloque State ofrece una interfaz simple para realizar operaciones CRUD (Crear, Leer, Actualizar, Eliminar) sobre el estado de la aplicación. Dapr maneja la replicación y la sincronización de estado entre los diferentes nodos y servicios, garantizando la coherencia y la disponibilidad de los datos.

Config:

Se utiliza para gestionar la configuración de la aplicación. Permite almacenar y acceder a la configuración en tiempo de ejecución, lo que facilita la personalización y el despliegue de la aplicación en diferentes entornos. El bloque Config de Dapr utiliza una configuración basada en claves y valores, lo que permite una fácil modificación y extensibilidad de la configuración de la aplicación sin necesidad de realizar cambios en el código fuente.

Conclusión:

Dapr permiten una comunicación eficiente y segura entre los componentes de la aplicación, simplificando el desarrollo y mejorando la escalabilidad y la fiabilidad de las aplicaciones distribuidas. Al utilizar Dapr, los desarrolladores pueden centrarse en la lógica de negocio y dejar que Dapr se encargue de los aspectos técnicos subyacentes de la comunicación y el almacenamiento de datos.

--

--

Sebastian Torralba
AvengaLATAM

Software Architect / Java Team Leader at IncluIT Professor at UNLaR