Diego Molinari

← Todos los casos

Datos que cambian mientras los mirás

El problema

Hay información que pierde todo su valor si llega tarde. Una noche de elecciones, el lector quiere ver el escrutinio moverse. Quien sigue el dólar quiere la cotización de ahora, no la del cierre de ayer.

Publicar eso como una nota estática no funciona: habría que reescribirla cada cinco minutos.

Qué construí

Dos sistemas con la misma arquitectura de fondo:

  • Elecciones 2025 — resultados del escrutinio, tomados de la API oficial.
  • Mercados — cotizaciones desde varias fuentes: Finnhub, la Bolsa de Comercio de Rosario y Yahoo Finance.

En los dos casos la estructura es la misma: un Worker Service de .NET que sondea las fuentes de forma programada y guarda lo que recibe, una API propia que sirve esos datos ya procesados, y widgets de React que se embeben en cualquier nota y se actualizan solos.

Cómo viaja el dato

  1. Origen Fuente API oficial o mercado. Se sondea de forma programada; el sistema no depende de que esté disponible en el momento de la visita.
  2. Persistencia Base propia Cada lectura se guarda procesada. Es lo que permite responder rápido y no depender de la latencia de la fuente.
  3. Exposición API propia El frontend nunca habla con la fuente original, sólo con esta capa.
  4. Consumo Widget Componentes React embebibles que se actualizan solos dentro de cualquier nota.
Todo corre en contenedores, orquestado con Docker Compose y detrás de un proxy inverso como único punto de entrada.

Vista ilustrativa · el mapa del escrutinio

elecciones · diputados nacionales
CABA
+

Lista ALista BLista COtras

Resultados · país

Mesas escrutadas87,42 %Participación71,08 %
  • Lista A34,21 %4.812.330
  • Lista B28,74 %4.043.117
  • Lista C19,05 %2.680.442
  • Otras18,00 %2.532.771
Reconstrucción ilustrativa, no una captura. Los porcentajes son inventados; el contorno de las provincias es el del Instituto Geográfico Nacional, el mismo dato que usa el mapa real. Cada provincia se pinta con el color de quien va ganando y los números se animan cuando llega un dato nuevo. La lupa no es un adorno: la Ciudad de Buenos Aires ocupa unos pocos píxeles y sería imposible de tocar, así que se oculta del mapa y se dibuja ampliada al costado.

Del país al municipio, en dos clics

Tocar una provincia carga su mapa de partidos; tocar un partido, sus mesas. El rastro de arriba dice siempre dónde estás y deja volver a cualquier nivel anterior. Cada nivel es un archivo geográfico distinto que se pide sólo cuando hace falta: no se descargan los 25 mapas provinciales para mirar uno.

Vista ilustrativa · bancas y mercados

escrutinio · bancas

Lista A · 28Lista B · 23Lista C · 17Otras · 14

mercados
Actualizado hace 6 min· fuente sin respuesta

Índice local

2.104,9+0,3 %

  • Dólar mayorista1.412,50+0,8 %
  • Soja · Rosario378,20−1,4 %
  • Maíz · Rosario201,50+0,2 %
  • Trigo · Rosario241,00−0,6 %
Reconstrucción ilustrativa, no una captura. Los valores son inventados. A la izquierda, el reparto de bancas del escrutinio; a la derecha, el widget de mercados en el estado que importa: la fuente dejó de responder y sigue mostrando el último dato bueno, diciendo de cuándo es. No una pantalla rota.

Las decisiones que costaron

El worker va aparte de la API. Recolectar y servir son dos trabajos con ritmos distintos: uno corre según un cronograma y puede tardar o fallar, el otro tiene que responder ya. Separarlos en dos servicios significa que un sondeo lento nunca se lleva puesta la respuesta a un lector.

Base propia, no proxy a la fuente. Lo fácil es reenviar la consulta a la fuente oficial cuando alguien abre la nota. Guardar cada lectura en base propia cuesta más espacio, y a cambio da dos cosas: respuestas rápidas y desacople del servicio oficial — dejás de depender de su latencia y de que aguante tu tráfico.

Si la fuente no responde, se sirve el último dato guardado. Es la consecuencia directa de la decisión anterior, y es la que se nota. Una noche de elecciones, cuando la API oficial se pone lenta o se cae, el widget no muestra un error: muestra el último resultado bueno que llegó. El lector ve un dato viejo por unos minutos en lugar de una pantalla rota.

Resultado

Ambos sistemas salieron a producción y funcionaron en sus ventanas críticas. Los widgets se siguen usando.