Pirobits
Blog@bypirob

Sistema de analítica web con Nodejs y MySQL

alberto avatar Alberto Sola · 2/27/2024 · 3 min

Hay muchas herramientas en el mercado que te permiten realizar analítica web. Yo siempre he utilizado Google Analytics, pero tiene varios puntos que no me gustan:

  • Privacidad, qué voy a decir. Si el producto es gratis, el producto eres tú. Muchas veces sacrificamos esto (y no pasa nada mientras seamos conscientes), pero cada vez me gusta más respetar la privacidad de los usuarios.
  • No tienes tus datos. Están en sus servidores y aunque puedes exportarlos no es lo ideal para trabajar con ellos.
  • En mi caso, aunque estoy familiarizado con la herramienta, me parece demasiado compleja para mis casos de uso que además, no sé por qué, no muestran todos los datos del tráfico de mis sitios webs. Además de las limitaciones de los datos en tiempo real.

Explorando alternativas a Google Analytics

He estado probando estos días el sistema de analítica web de Cloudflare, que anuncian que respeta la privacidad, pero tienen un gran problema: el fichero de tracking se carga desde un dominio de terceros y es bloqueado por muchos navegadores. De todas formas este lo he dejado activo ya que recopila información sobre Web Core Vitals, que nunca está de más.

Mi siguiente opción en la lista es Plausible. Me encanta la idea que hay detrás, pero a día de hoy que estoy en proceso de querer monetizar mis proyectos, por lo que me interesa optimizar mis costes, y mientras no me aporte valor de verdad, no quiero contratar un producto para cada cosa. Al ser open source lo puedes montar tú, pero entre coste de mantenimiento y coste de servidores, descarto totalmente esta opción.

Mi propio servicio: "pirobits analytics"

Conclusión, mi "stack" a día de hoy es un VPS donde despliego mis side-projects, que junto con una base de datos MySQL (aunque siempre he usado postgresql, conozco mucho mejor el funcionamiento de MySQL) y una capa de caché para reducir el tráfico, mueven todos mis side-projects.

Como este año me he propuesto crear 12 proyectos en 12 meses, hablaré de esto en un post pronto así que suscríbete a la newsletter, en algunos de estos side-projects necesito y me conviene tener ciertas métricas. Pero realmente no necesito mucho, a día de hoy sólo tráfico por página y algunos eventos de click.

Por eso me he creado una tabla de MySQL, analytics, que contiene la información mínima necesaria: host, path, sesión, fecha... y algún otro dato que no es relevante.

Con un pequeño script en el front, puedo puedo enviar eventos de analítica a mi backend, que está hecho con NodeJS. Por tanto mi sistema cumple:

  • Respeta la privacidad del usuario, no hay datos personales por lo que no uso un banner de cookies.
  • Es agnóstico al lenguaje, puedo usarlo con React, Vue, NextJS, HTML Estático... o lo que decida usar el día de mañana.
  • Es liviano y rápido, recordad que cuanto más tráfico sirves a escala, todo cuesta más.
  • Puedo consultarlo en tiempo real y realizar todo tipo de agregaciones.

Ahora cuando quiera recopilar información, simplemente tengo que lanzar un par de queries al MySQL o utilizar algún sistema de visualización, y si se queda corto ya veré si puedo utilizar BigQuery, ClickHouse... o si para entonces me merece la pena algún otro sistema. Cuando pase un tiempo, os contaré mis reflexiones y aprendizajes en este camino.

Ya que has llegado tú hasta aquí, ¿estarías interesado en utilizar mi API de analítica web, que además tiene soporte para formularios? Suscríbete a la newsletter a continuación o ponte en contacto conmigo a través de Twitter.

Si te ha resultado útil este artículo agradecería si te suscribes a mi newsletter. Recibirás contenido exclusivo de calidad y también me ayudarás enormemente. Cada suscripción apoya el trabajo que realizo y me permite conocer mejor los temas que te interesan, de forma que puedo mejorar los conocimientos que comparto contigo.


Posts recientes