Laravel 11

Artículo Laravel 11

Introducción

El mundo del desarrollo web está en constante evolución, y con la llegada de Laravel 11, nos embarcamos en una nueva era de eficiencia y posibilidades ampliadas. Esta versión promete no solo mantener la tradición de Laravel de ofrecer una experiencia de desarrollo elegante y moderna, sino también introducir características innovadoras y mejoras significativas. Veamos qué hace que Laravel 11 sea un cambio de juego en el desarrollo web.

Esquema de Versionado y Política de Soporte

Laravel sigue el Versionado Semántico, lanzando versiones mayores cada año y actualizaciones menores o parches casi semanalmente. Es crucial usar restricciones de versión, como ^11.0, para evitar romper cambios. Además, Laravel 11 será soportado con correcciones de errores hasta septiembre de 2025 y correcciones de seguridad hasta marzo de 2026, asegurando una larga vida y estabilidad para tus proyectos.

Mejoras Destacadas en Laravel 11

Optimización de Estructura de Directorios

Desarrollada por Taylor Otwell y Nuno Maduro, la nueva estructura busca ofrecer una experiencia más moderna y eficiente, manteniendo la familiaridad para los desarrolladores de Laravel. Destacan el archivo bootstrap/app.php revitalizado y la reducción a un único AppServiceProvider, simplificando la organización del proyecto y mejorando la eficiencia en la configuración de aplicaciones.

// bootstrap/app.php revitalizado
return Application::configure(basePath: dirname(__DIR__))
    ->withRouting(
        web: __DIR__.'/../routes/web.php',
        commands: __DIR__.'/../routes/console.php',
        health: '/up',
    )
    ->withMiddleware(function (Middleware $middleware) {
        //
    })
    ->withExceptions(function (Exceptions $exceptions) {
        //
    })->create();

Laravel Reverb: Un servidor WebSocket

Laravel Reverb: Introduce un servidor WebSocket escalable y de alta performance, permitiendo capacidades de tiempo real robustas y fácilmente integrables con la suite de herramientas de difusión de eventos de Laravel. Documentación Laravel Reverb

Reverb es un servidor WebSocket propio para aplicaciones Laravel, que pone la comunicación en tiempo real entre el cliente y el servidor directamente. Laravel Reverb es una adición potente para cualquier proyecto que requiera interacciones en tiempo real.

Su instalación es sencilla a través de un comando artisan:

php artisan reverb:start

Características principales de Laravel Reverb

  1. Increiblemente Rápido:
    • Diseñado para la velocidad, un solo servidor de Reverb puede manejar miles de conexiones simultáneamente.
    • Optimizado para transmitir datos de manera eficiente, evitando la latencia típica y la sobrecarga asociada con el sondeo HTTP.
  2. Integración Perfecta:
    • Se integra sin problemas con las capacidades de transmisión de eventos de Laravel.
    • Compatible con Laravel Forge para una implementación sencilla y directa.
    • Soporte integrado para Laravel Pulse, facilitando el monitoreo de la salud y el rendimiento de las conexiones WebSocket.
  3. Construido para Escalar:
    • Diseñado con el escalado en mente, permite un aumento de capacidad sin límites mediante el uso de Redis.
    • Soporte para escalado horizontal, permitiendo distribuir las conexiones y canales a través de múltiples servidores para manejar cargas de trabajo elevadas.
  4. Uso del Protocolo Pusher:
    • Emplea el protocolo Pusher para WebSockets, garantizando compatibilidad total con Laravel Echo y la infraestructura de transmisión de eventos de Laravel.

Limitación de Tasa por Segundo

Mejora significativa para controlar la carga en tu aplicación, permitiendo límites más granulares y efectivos en el uso de recursos.

// Limitación de tasa por segundo para una granularidad más precisa
RateLimiter::for('invoices', function (Request $request) {
    return Limit::perSecond(1);
});

Ruta Health Check Integrada

La inclusión de una ruta de verificación de salud simplifica la monitorización y mantenimiento de la salud de tu aplicación, esencial para despliegues en producción y sistemas de orquestación.

// Configuración simplificada de rutas, incluyendo health check
->withRouting(
    health: '/up',
)

Rotación Elegante de Claves de Encriptación

La rotación elegante de claves de encriptación es una característica de seguridad diseñada para actualizar las claves de encriptación de una aplicación sin interrumpir el funcionamiento normal o la accesibilidad para los usuarios. Aquí te explico en términos clave y con un ejemplo práctico:

Términos Clave:

  • Clave de Encriptación Actual: La clave utilizada actualmente para encriptar y desencriptar datos en tu aplicación.
  • Claves de Encriptación Anteriores: Claves que se usaron previamente para la encriptación y que aún pueden desencriptar datos antiguos.
  • Rotación de Claves: El proceso de cambiar la clave de encriptación actual por una nueva.

Funcionamiento de la Rotación Elegante:

  1. Actualización Sin Interrupciones: Permite cambiar la clave de encriptación actual (por ejemplo, por una más segura o como medida preventiva) sin desloguear a los usuarios o perder acceso a datos previamente encriptados.
  2. Compatibilidad con Claves Antiguas: La aplicación almacena y utiliza una lista de claves anteriores para desencriptar datos que fueron encriptados con ellas, asegurando que no se pierda acceso a la información.
  3. Transición Suave a Nuevas Claves: La encriptación de nuevos datos se realiza con la clave actual, mientras que para desencriptar datos antiguos, la aplicación intenta primero con la clave actual y, si falla, prueba con las claves antiguas hasta encontrar la correcta.

Ejemplo Práctico:

Imagina que tienes una aplicación que almacena mensajes de usuario encriptados. La clave de encriptación actual es «Clave2023». Decides cambiar la clave a «Clave2024» por razones de seguridad.

  • Antes de la rotación, todos los mensajes están encriptados con «Clave2023».
  • Al realizar la rotación elegante, configuras «Clave2024» como la nueva clave actual y añades «Clave2023» a la lista de claves anteriores en tu configuración (por ejemplo, usando una variable de entorno APP_PREVIOUS_KEYS).
  • Los nuevos mensajes se encriptan con «Clave2024».
  • Cuando se accede a un mensaje antiguo, la aplicación intenta desencriptarlo con «Clave2024». Al no ser posible, utiliza «Clave2023» de la lista de claves anteriores y logra desencriptarlo exitosamente.
  • Los usuarios continúan accediendo a sus mensajes (nuevos y antiguos) sin interrupción, incluso durante y después del proceso de rotación de claves.

Este proceso asegura que la aplicación mantenga la seguridad de los datos mediante la actualización regular de las claves de encriptación, sin sacrificar la accesibilidad ni la experiencia del usuario.

Nuevo Trait Dumpable para Depuración

El trait Dumpable mejora la experiencia de depuración, permitiendo una inspección detallada y conveniente de las instancias de tus clases durante el desarrollo.

// Uso del trait Dumpable para facilitar la depuración
$blog = new Blog;
$blog->setName('Notas Web')->dump()->setWebsiteUrl('https://notasweb.me')->dd();

Rutas no predeterminadas

Los archivos de ruta api.phpchannels.phpya no están presentes de forma predeterminada, porque los desarrolladores de Laravel entienden que muchas aplicaciones no los requieren. Pero si deseas añadirlas, como casi todo en Laravel es muy sencillo. Solo necesitarías usar los siguientes comandos y ya las tendrías agregadas a tu proyecto.

php artisan install:api
 
php artisan install:broadcasting

Modificación de la Clase BaseController

Se ha simplificado el controlador base incluido en las nuevas aplicaciones de Laravel. Ya no extiende Controllerla clase interna de Laravel y los rasgos AuthorizesRequestsValidatesRequestsse han eliminado, ya que pueden incluirse en los controladores individuales de tu aplicación si así lo requires.

La nueva clase Abstract Controller, queda así

<?php
 
namespace App\Http\Controllers;
 
abstract class Controller
{
    //
}

Otras Mejoras

Testing de Interacción con Colas y Comandos Artisan Nuevos: Laravel 11 hace más sencillo probar interacciones específicas con trabajos en cola y añade comandos Artisan para agilizar la creación de clases, enums, interfaces y traits.

Mejoras en Casts de Modelos y Soporte Mejorado para MariaDB: Permiten definiciones de casts más fluidas y brindan mejores predeterminados para el uso de MariaDB, mejorando la compatibilidad y la flexibilidad en la gestión de bases de datos.

Rendimiento Mejorado en Tests con Bases de Datos en Memoria y Nuevos Métodos de Inspección de Esquemas de Bases de Datos: Estas mejoras apuntan a una ejecución de pruebas más rápida y a una manipulación más avanzada y directa de los esquemas de bases de datos.

Resumiendo en 90 segundos los nuevos cambios de Laravel 11

Conclusión

Estos son solo algunos de los cambios principales más de está nueva versión de Laravel 11, pero puedes revisar la documentación de releases con los nuevos cambios, de ver todos los cambios.

Laravel 11 no solo continúa el legado de Laravel de proporcionar un marco de trabajo elegante y lleno de características para el desarrollo web moderno, sino que también introduce innovaciones significativas que abordan desafíos actuales y futuros en el desarrollo web.

Con su enfoque en la eficiencia, la escalabilidad y la facilidad de uso, Laravel 11 se posiciona como una herramienta esencial para los desarrolladores que buscan llevar sus proyectos al siguiente nivel.

Finalmente, si deseas profundizar más en Laravel 11 y estás interesado en cómo implementar nuevas funcionalidades o proyectos en esta nueva versión o en versiones anteriores, te invito a dejar tus comentarios. Estaré encantado de añadir contenido relacionado según tus intereses


Artículos Relacionados

Crear API Rest en Laravel
Crear API Rest en Laravel
Programa una tarea en Laravel
Programa una tarea en Laravel
Integra Laravel y Livewire
Conviértete en un Full Stack developer con Laravel y Livewire.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *