
ACTUALIZACIÓN: los user-defined request headers ya no son gratuitos.
Muchas veces necesito geolocalizar las requests que llegan a mi aplicación, sobre todo con fines analíticos: quiero saber desde dónde se conectan mis usuarios.
Normalmente me basta con el país, la ciudad, la latitud y la longitud de la request de origen. Durante años usé MaxMind solo para eso y, aunque MaxMind funciona muy bien, la versión comercial cuesta cerca de $1,500 al año, lo cual es excesivo para necesidades tan básicas como las mías.
Hace poco, Google lanzó en beta los "User-defined request headers", que permiten geolocalizar gratis las requests que pasan por Google Load Balancer. A continuación te muestro cómo configurarlos en tu aplicación.
Para simplificar, voy a asumir que ya tienes tu aplicación corriendo en Google Cloud y que enrutas el tráfico mediante Google HTTP/S Load Balancer.
Lo primero es actualizar tu(s) backend(s) para que admitan los user-defined request headers. Mi backend se llama "app" y este es el comando que usé:

Básicamente, le indico a Google Load Balancer que agregue tres headers a cada request: "X-Client-Geo-Location", "X-Client-Geo-Region" y "X-Client-Geo-LatLong". Puedes ponerle a tus headers el nombre que quieras, siempre que NO sea "X-User-IP" y que no empiecen por "X-Google" ni "X-GFE".
Una vez actualizado el backend, en pocos minutos empezarás a ver los nuevos headers en cada request:

¡Listo! Ya cuentas con información de geolocalización para todas tus requests, gratis y de forma totalmente serverless.
Y la geolocalización no es lo único que puedes sumarle a tus requests: Google también te entrega el RTT del cliente (round-trip transmission) en ms, así como la versión de TLS, el cipher y el hostname.
Actualización – septiembre de 2024:
Google actualizó los precios para geolocalizar requests con Google Load Balancer. Ahora cuesta **$0.75 por cada millón de requests**, con un tope de **$500/mes**. Revisa la documentación de Google para conocer los detalles más recientes.
¿Quieres más historias? Visita nuestro blog o sigue a Vadim en Twitter.