Los últimos ajustes antes de producción - Logs, caché y pruebas finales - Episodio 32

No puedes decir que algo está listo hasta que sobreviva al caos.
Y ahora viene cuando suelto la frase lapidaria de
"Y esto es así"
De hecho, podía haberme dicho a mí mismo que la API ya estaba lista.
Que con lo que había hecho, ya podía salir al mundo.
Pero algo dentro me decía: "revisa TODO".
Porque si algo he aprendido en el desarrollo es que el 90% de los problemas aparecen justo cuando crees que todo está bien.
Así que antes de levantar la bandera de "producción", me puse serio.
🛠️ Ajustes que marcaron la diferencia antes del despliegue
✅ Logs en formato JSON para mejor depuración
Los logs ahora están estructurados en JSON. Esto me permite filtrarlos, visualizarlos con herramientas externas y detectar patrones sin volverme loco leyendo líneas de texto sueltas.
import json
import logging
class JsonFormatter(logging.Formatter):
def format(self, record):
log_record = {
'level': record.levelname,
'message': record.getMessage(),
'time': self.formatTime(record, self.datefmt)
}
return json.dumps(log_record)
✅ Caché con Redis en /parts
Agregué una capa de caché con Redis para las peticiones a /parts. Ahora las consultas repetidas son más rápidas y alivianan la carga a la base de datos.
@cache.cached(timeout=60, key_prefix='all_parts')
def get_parts():
...
✅ Paginación optimizada
Limité per_page a un máximo de 50 para evitar que alguien hiciera scroll infinito y reventara el servidor.
per_page = min(int(request.args.get('per_page', 20)), 50)
✅ Pruebas finales (manuales y con curl)
Hice pruebas manuales a todos los endpoints clave:
/health/register/login/parts- Intentos de login fallidos (para verificar el bloqueo por rate limiting)
Todo lo que se podía romper, lo intenté romper yo antes que lo hiciera otro.

💡 Lecciones aprendidas
🔹 Nunca confíes en que todo está bien hasta que lo pruebas todo
Una función puede no lanzar errores y aun así no funcionar como debería.
🔹 La caché no es magia, pero a veces lo parece
Bajar de 400ms a 40ms en una petición da un gustito que no se explica. Se siente.
🔹 Los logs son tus ojos cuando todo va mal
Pero sólo si están bien hechos. Sino, es como buscar las llaves en una piscina llena de barro.
🧠 Reflexión personal
Decir que una API está lista sin probarla es como decir que tu coche está perfecto porque arranca, sin haberlo sacado nunca de tu calle.
Puede que funcione... o puede que a la que cojas autopista se te salga una rueda y descubras que el volante vibra como batidora.
Esta fase de pruebas finales fue como esa salida larga con el coche, con curvas, semáforos, y cuestas.
Solo entonces sentí que el sistema estaba realmente preparado para el mundo real. No perfecto, pero resistente.
Y eso, en el mundo SaaS, ya es bastante.
🚂 Próximo paso: Arrancamos con el front.
Ahora que el sistema va a salir al mundo, tengo claro que algo fallará.
Pero prefiero que sea con logs bonitos, caché funcionando, y pruebas hechas.
💬 Cuéntame en comentarios:
¿También has tenido esa sensación de "ya está todo" y de repente te explota algo en la cara en el peor momento?
O incluso mejor: ¡cuéntame tu prueba final más absurda o dolorosa!
Vamos a echarnos unas risas mientras sufrimos juntos. 🤣🚀
Si quieres conocer otros artículos parecidos a Los últimos ajustes antes de producción - Logs, caché y pruebas finales - Episodio 32 puedes visitar la categoría Proyecto-IA.

Deja una respuesta