La analítica en tiempo real ya no es un lujo. Hoy en día, poder detectar fraudes, responder al comportamiento de usuarios y tomar decisiones al vuelo es una necesidad. En esta guía práctica te mostraré cómo montar una arquitectura moderna y funcional usando tecnologías de Microsoft: Azure, Microsoft Fabric y .NET Aspire.
Hace no mucho nos unimos dos tipejos a dar varias charlas sobre el real time.
El gran Emiliano Montesdeoca
Y yo, yo soy el guapo.
Usuarios → Compran (Tienda física, online o app)
→ Se guarda en base de datos
→ Se emite un evento
→ Se procesa en tiempo real (Azure Event Hub)
→ Se notifica o visualiza (Microsoft Fabric + Power BI)
El corazón de todo esto es un enfoque basado en microservicios y procesamiento de eventos en tiempo real.
Payment Microservice: recibe y valida pagos.
Event Microservice: emite eventos cuando se produce una compra.
Notification Microservice: envía notificaciones si se detecta un evento crítico.
Database Microservice: persiste los datos.
Usaremos .NET Aspire para orquestar y desarrollar esta solución distribuida de forma eficiente.
👉 .NET Aspire ofrece plantillas, integración con VS, telemetría out-of-the-box y facilidad de debugging local.
Usamos Azure Container Apps para desplegar cada microservicio en un contenedor independiente. Esto nos permite:
Escalar de forma independiente cada componente
Controlar el tráfico con balanceadores de carga
Ejecutar actualizaciones sin downtime
Cada vez que se realiza una compra, el Payment Microservice lanza un evento a Azure Event Hub.
Pequeño inciso por aquí, debemos recordar que existen varios patrones de análisis, pero, dos que nos atañen ahora mismo, el Batch Data Analytics y el Real-Time Data Analytics
Batch Data Analytics
Real-Time Data Analytics
Aquí es donde ocurre la magia:
Captura los datos de Event Hub con EventStream en Microsoft Fabric.
Transforma los datos en tiempo real con scripts KQL.
Almacena en bases de datos KQL (Kusto DB) o Delta Lake sobre OneLake.
Analiza con conjuntos de consultas en Power BI.
Automatiza alertas con Activator cuando se detectan ciertos patrones.
Visualiza en un dashboard en tiempo real con Power BI.
🧩 Todo esto en un entorno SaaS unificado. No necesitas gestionar infraestructura.
Ya he soltado esta chapa, ahora toca ver como lo hacemos
Bueno, lo que hemos hecho ha sido una solución distribuida desarrollada en .NET 9.0 que utiliza el framework Aspire para la gestión de servicios y el alojamiento de aplicaciones. Aquí tienes el repositorio emimontesdeoca/TransactionPlatform Está compuesta por varios proyectos que trabajan en conjunto para ofrecer una plataforma de transacciones.
TransactionPlatform.ApiService: Proporciona la API principal para la plataforma, gestionando las operaciones relacionadas con las transacciones.
TransactionPlatform.AppHost: Actúa como anfitrión de la aplicación, coordinando los distintos servicios y asegurando su correcto funcionamiento.
TransactionPlatform.Client: Es la interfaz de usuario o cliente que interactúa con la API, permitiendo a los usuarios realizar operaciones a través de una interfaz gráfica o de línea de comandos.
TransactionPlatform.Models: Contiene las definiciones de los modelos de datos utilizados en la plataforma, asegurando una estructura coherente y reutilizable de la información.
TransactionPlatform.ServiceDefaults: Incluye configuraciones y valores predeterminados para los servicios, facilitando su implementación y mantenimiento.
.NET 9.0: La plataforma está construida sobre la última versión de .NET, aprovechando sus mejoras en rendimiento y características modernas.
Aspire Framework: Utilizado para la gestión eficiente de servicios y el alojamiento de aplicaciones en entornos distribuidos.
Pasos a seguir
¿Y ya? Si porque el segundo paso es pasarle las credenciales del EventHub y para eso tendremos que aprovisionarlo en Azure.
Vamos a depender de tener una suscripción en Azure, dicho lo anterior:
Ahora ya tenemos las dos policy creadas. Recuerdas que ya habías clonado un repositorio, el de TransactionPlatform. Pues bien, ahora desde Visual Studuio accede a la solución, te saldrá algo como esto
En TrasactionPlatform.ApiService, abre el archivo Program.cs
Donde pone serviceBusConnectionString debemos copiar la connection string de la SAS Policy send-ppt que hemos creado
Y en donde pone queueName debemos poner el nombre del space que creamos
Guardamos y ya podríamos estar enviando eventos al EventHub. ¿Pero como ejecuto esta aplicación? A ver, como no vas a estar entrando cada vez que quieras probarlo, abres un cmd, te vas a la ruta TransactionPlatform.AppHost y ejecutas el comando dotnet run
Listo ya está enviado cosas al EventHub
Nos vamos a MS Fabric, nuestro gran aliado.
En MS Fabric trataremos la ingesta del dato que se está enviando al EventHub. Entonces, para hacernos un mapa mental crearemos en nuestro workspace:
En otra entrada del blog explicaré que más cosas se pueden hacer.
Crear el EventStream
Debemos rellenarlo con los datos del SAS Policy, pero, en este caso del listen-ppt que hemos creado
Volvemos a
Clickamos en connect y seleccionamos la conexión
Y esto ya nos crearía el EvenStream asociado al EventHub
Ya para ir finalizando este blog, vamos a "enviar" todo este flujo de datos hacia un EventHouse. Para ello, lo primero que haremos será crear un nuevo artefacto de MS Fabric de tipo EventHouse
Una vez creado, vamos de nuevo al EventStream
Le damos a publicar
Una vez publicado, nos dará lo opción para configurar el EventHouse en el EventStream
Le damos a "New Table", le damos el nombre que queramos y clickamos siguiente.
En la siguiente pantalla nos dará una muestra de lo que veremos en el EventHouse.
Le damos a finish.
Y a close.
Si ahora volvemos al EventHouse que hemos creado, veremos algo como lo siguiente
Si clickamos en EventHouseBlog_queryset, ya podríamos empezar a trabajar con KQL (Kusto Query Language) para hacer consultas al EventHouse. (Recuerda esperar unos 5 minutos para que el EventStream reaccione y empiece a enviar datos al EventHouse)
Y a partir de aquí la imaginación es libre, aunque haremos alguna entrada en el blog haciendo referencia a que posibilidades tenemos a partir de aquí. Y también nos enfocaremos un poquito en que es KQL y sus beneficios.
Nos vemos en la siguiente 🚀