La optimización es una parte crucial del desarrollo de software que garantiza que nuestras aplicaciones funcionen de la manera más eficiente posible. Aunque puede parecer que todo está funcionando correctamente porque las respuestas son correctas, es vital analizar el rendimiento para asegurarnos de que nuestros recursos se utilicen de manera óptima. Esto se hace instalando herramientas profesionales que nos ayuden a monitorear y visualizar lo que estamos desarrollando. En este caso, vamos a instalar un componente de Laravel conocido como Telescope.
¿Cómo instalar y configurar Telescope en Laravel?
Seguir los pasos correctos para instalar y configurar Telescope nos permitirá analizar de manera efectiva el rendimiento de nuestra aplicación Laravel. A continuación, detallamos el proceso:
Instalación del componente:
Abre el terminal en Visual Studio Code.
Usa Composer para requerir la herramienta de Laravel.
composer require laravel/telescope
Una vez completada la instalación, ejecuta el siguiente comando para finalizar el proceso:
php artisan telescope:install
Migración de tablas:
Las tablas necesarias para almacenar los datos se crean en la base de datos mediante una migración:
php artisan migrate
Registro de solicitudes:
Realiza nuevas solicitudes en tu aplicación para que se registren en la base de datos, lo que permitirá un análisis detallado del rendimiento.
¿Cómo afecta la optimización a las consultas de base de datos?
Es posible que nuestras consultas se ejecuten correctamente, pero no de la manera más eficiente. Optimizar estas consultas reduce el número de peticiones innecesarias y mejora el rendimiento general de la aplicación. A continuación, se detalla cómo se puede optimizar:
Revisar consultas en el controlador:
Asegúrate de que cuando se obtienen datos, las consultas también incluyan cualquier información relacionada, como categorías y etiquetas. Por ejemplo:
Utiliza la interfaz de Telescope para verificar cuántas consultas se han ejecutado y si se han reducido tras la optimización.
¿Qué más debemos revisar con Telescope?
No solo podemos revisar las consultas de base de datos con Telescope, sino que también podemos analizar otros aspectos del sistema que podrían afectar su rendimiento:
Caché y eventos: Verifica si el caché está adecuadamente configurado y si los eventos se manejan correctamente.
Excepciones y errores: Monitorea cualquier excepción o error para solucionarlos de inmediato.
Métricas de rendimiento: Analiza métricas de uso de memoria y tiempo de respuesta, especialmente útil en aplicaciones que manejan datos en tiempo real como chats.
¿Cómo realizar un análisis de rendimiento con Postman y Telescope?
Una parte esencial de la optimización es realizar pruebas y análisis constantes. Con Postman y Telescope combinados, puedes realizar un seguimiento detallado del rendimiento:
Pruebas de solicitudes con Postman:
Envía solicitudes a diferentes endpoints en tu aplicación para generar datos que luego Telescope pueda analizar.
Analizar resultados con Telescope:
Revisa en la interfaz de Telescope el número de consultas ejecutadas y optimiza el código según sea necesario. Esto te ayudará a identificar cuellos de botella en la aplicación.
Comprométete con la optimización para garantizar que tu aplicación no solo funcione, sino que lo haga de la manera más eficiente posible. Como lo demuestran las herramientas como Telescope, cada mejora cuenta para ofrecer experiencias rápidas y sin interrupciones para los usuarios.
Desconocia esa herramienta de laravel, muy buena y excelente
Existe tambien otra herramienta de laravel para monitorear la aplicación, esta es laravel debugbar.
Ambas son muy similares, la principal diferencia radica en que telescope se utiliza cuando no tenemos una interfaz(frontend) desde la cual estemos haciendo las solicitudes, es decir, se utiliza mucho con apis porque normalmente el testeo se hace con clientes externos como Postman, mientras que debugbar aparece justo en la parte inferior de la interfaz que ve el usuario cuando trabajamos con aplicaciones web.
Como nota interesante, debugbar no requiere crear tablas ni alterar nuestra base de datos.
En resumen
Api->Telescope
Web->Debugbar
Estoy trabajando con NestJS, y el que voy a probar es nestjs-pino.
Mi consulta es que si pobla en la base de dato toda esa inforamcion puede como saturar de tantas peticiones?
Existe tambien la herramienta de laravel/debugbar, es muy buena tambien.
en category, tags, y user, muestra created_at, updated_at, email_verified_at.. Me parece que se deberia quitar esos, campos por que por ejemplo para un usuario que lleva datos personales, cualquier persona podria verlo, solo por que esta treyendo todos los campos de usuario.
Es importante tener en cuenta la seguridad de los datos personales. En este caso, se deberían quitar los campos 'email_verified_at', 'created_at' y 'updated_at' del objeto 'user' para evitar que cualquier persona pueda verlos.
Efectivamente companero, para ello usamos la tecnica vista un par de clases atras 'Resource'.
Si generas un UserResource, puedes controlar que datos (campos) mostrar.
Ahora bien, hay otras tres formas de esconder los datos si no deseas usar Resources, cheka este link:
que es Apis?
API es la estructura y el conjunto de principios y convenciones para acceder a recursos, como por ejemplo a través de verbos HTTP y rutas pero con una estructura diferenciada de una base de datos.
Application Programming Interface
Esto de manera simple es un tecnica para comunicar y compartir datos entre aplicaciones. Generalmente en formato JSON.
Ejemplo, hice un app para el celular que muestra pokemones. Pero ya existe un repositorio en la nube que tiene a los pokemones organizados.
Entonces me conecto con su API y le digo mostrarme la info del pokemon 'Z' (peticion GET), la applicacion en la nube responde con un JSON que contiene toda la info del pokemon 'Z'
Para poner mi proyecto a producción desinstalo el paquete? o solo se daja así?
No es necesario desinstalar el paquete, simplemente se deja así. El paquete instalado es necesario para configurar y servir el proyecto en producción.
En produccion como imaginaras es un gran riesgo de seguridad dejar expuesta una herramienta como telescope.
En la documentacion: Local Only Installation nos dan unas pautas para controlar que telescope solo se active en modo local (ver configuracion de AppServiceProvider) y agregar la clave "dont-discover" en el composer.json
Y finalmente a titulo personal, pues controlar las rutas, las proteges con el respectivo middleware solo para administradores o personal de IT.
hice el migrate exitoso, pero al ir a la ruta /telescope me sale 404 :c ya le hice php artisan cache:clear y nada
Es posible hacer uso de teslecope desde un hosting compartido ?? Por que ya lo intente y me da error de vendor :( . Seria buenisico hacer uso en produccion por que si lo clientes tiene problema podria facilmente ver telescope.
Tienes que instalar la dependencia en tu hosting
No se por que en etiquetas le dura 62ms, muy rapido, mientras a mi se 6447ms. Es demasiado tiempo para obtener respuesta, si tengo el mismo codigo :(
depende de muchas cosas:
La potencia del equipo
Si estás hacer las pruebas en tu pc local o un servidor en internet (no sé si se considera el delay del internet en telescope)
Si está usando alguna máquina virtual en el equipo
Si estás usando muchos recursos en el momento que haces las pruebas
La versión de php, mysq y apache que estás usando
que herramienta similar hay para spring?
Otra manera es usar ->paginate() en las consultas para optimizar