¿Qué es Laravel Vapor y cómo funciona?

Guía sobre Laravel Vapor: su arquitectura serverless con AWS Lambda, características, despliegue con vapor.yml, ventajas, límites y casos de uso.

¿Qué es Laravel Vapor y cómo funciona?

Laravel Vapor es una plataforma serverless que permite desplegar aplicaciones Laravel en AWS Lambda. Con Vapor, no necesitas gestionar servidores ni preocuparte por la infraestructura, ya que todo se maneja automáticamente. Esto incluye bases de datos, cachés, colas y redes CDN. Además, ofrece escalado automático, lo que significa que tu aplicación puede manejar millones de peticiones y reducir los recursos cuando no hay actividad, pagando solo por el tiempo de uso.

Puntos clave:

  • Convierte tu aplicación Laravel en funciones de AWS Lambda.
  • Escalado automático para gestionar tráfico variable.
  • Sin necesidad de mantenimiento manual de servidores.
  • Compatible con PHP 7.3+ y Laravel 6.0+.
  • Plan gratuito limitado y opciones de pago desde 39 €/mes (excluyendo costes de AWS).

Laravel Vapor es ideal para proyectos con tráfico variable, equipos pequeños sin especialistas en infraestructura y quienes trabajan con múltiples aplicaciones Laravel. Su configuración se realiza a través de un archivo único (vapor.yml), simplificando el despliegue y gestión de recursos en AWS.

Cómo funciona Laravel Vapor

Laravel Vapor

Fundamentos de la arquitectura serverless

La arquitectura serverless ha cambiado por completo cómo se gestionan las aplicaciones web. En lugar de mantener servidores funcionando constantemente, el código solo se ejecuta cuando se necesita. Como señala Elfaz Aklilu:

In serverless you manage services not servers. This leaves the developers with the function of worrying about what they really should worry about, creating applications.

Esto elimina muchas de las tareas tradicionales de administración de servidores: no necesitas elegir un sistema operativo, instalar servidores web, aplicar parches de seguridad ni configurar el escalado manualmente. Con Laravel Vapor, toda esta infraestructura se gestiona mediante un enfoque de "Infrastructure as Code". La configuración completa se define en un archivo único llamado vapor.yml. Este enfoque permite que Vapor utilice AWS Lambda para ejecutar funciones únicamente cuando son necesarias.

Integración con AWS Lambda

AWS Lambda

Laravel Vapor transforma tu aplicación Laravel en una función de AWS Lambda, diseñada para ejecutarse bajo demanda. El código se activa únicamente cuando ocurre un evento, como una petición HTTP, un trabajo en cola o una tarea programada.

El proceso es sencillo: Vapor empaqueta tu aplicación en una única función Lambda que responde según el evento recibido. Por ejemplo, ante una petición HTTP, la función Lambda se activa y el método Kernel::handle de Laravel se encarga de procesar la solicitud y devolver una respuesta.

Esta arquitectura permite un escalado elástico, capaz de manejar miles de solicitudes simultáneamente. Y lo mejor: cuando no hay tráfico, los recursos se reducen a cero, lo que significa que solo pagas por el tiempo de ejecución real. Este modelo tiene un impacto directo en cómo funciona el ciclo de vida de las peticiones, como veremos a continuación.

Ciclo de vida de las peticiones en Vapor

El ciclo de vida de las peticiones en Vapor tiene particularidades que lo diferencian de entornos tradicionales. Por ejemplo, cada petición tiene un límite de 15 minutos para ejecutarse, y las respuestas HTTP no pueden superar los 6 MB.

Además, Vapor no permite ejecutar código después de enviar la respuesta. Si intentas usar el método afterResponse() de Laravel, podrías ralentizar la aplicación, ya que Lambda no termina hasta que todas las tareas se completan. La solución es delegar siempre estas tareas a una cola.

Para la gestión de colas, Vapor sustituye herramientas como Laravel Horizon con AWS SQS y trabajadores basados en Lambda. Estos pueden escalar automáticamente y procesar hasta 1.000 trabajos simultáneamente por defecto. También hay que tener en cuenta los archivos grandes: en lugar de enviarlos directamente, es necesario generar URLs firmadas temporales de S3 para manejarlos correctamente.

Principales características de Laravel Vapor

Laravel

Túneles de base de datos y caché

Laravel Vapor utiliza "jumpboxes", pequeños servidores SSH ubicados dentro de una red privada (VPC), para establecer conexiones seguras entre tu máquina local y los recursos privados de AWS. Esto te permite acceder de manera segura a bases de datos y cachés de producción.

Para conectarte a una base de datos privada, puedes usar el comando vapor database:shell o configurar tu herramienta gráfica favorita para conectarte a través del jumpbox. En el caso de Redis, el comando vapor cache:tunnel hace que el clúster de caché esté disponible en localhost:6378, facilitando el acceso con herramientas como Medis. Esta configuración no solo protege tus datos, sino que también simplifica la gestión local.

Además, Vapor automatiza otros procesos importantes, como la gestión de archivos estáticos, dominios y monitorización, haciendo que el despliegue sea mucho más eficiente.

Gestión de assets

La gestión de archivos estáticos es otro punto fuerte de Vapor. Durante cada despliegue, Vapor sube automáticamente todos los archivos estáticos a un bucket de Amazon S3 y los configura para servirse a través de la CDN de CloudFront. Todo esto ocurre sin necesidad de intervención manual.

El beneficio es evidente: tus recursos como imágenes, CSS y JavaScript se entregan desde ubicaciones cercanas a tus usuarios, reduciendo la latencia y mejorando los tiempos de carga. Este proceso es completamente automático, lo que ahorra tiempo y esfuerzo en cada despliegue.

Dominios personalizados y configuración DNS

Vapor simplifica el manejo de dominios ofreciendo dos opciones. Si decides que Vapor gestione tu DNS, solo necesitas apuntar los nameservers de tu dominio a Vapor, y el resto se configura automáticamente: registros DNS, verificación SSL y enrutamiento a los recursos adecuados. Según Joe Dixon, Product Manager de Laravel:

Allowing Vapor to manage your DNS ensures the most seamless experience of provisioning and deploying your project. In short, you will never need to worry about configuring DNS records - Vapor does it all on your behalf.

Si prefieres gestionar tu propio DNS, Vapor te proporciona los registros CNAME necesarios que puedes añadir manualmente. En ambos casos, cada aplicación incluye un certificado SSL gratuito con renovación automática, y cada entorno cuenta con una URL única para pruebas inmediatas.

Métricas de rendimiento y monitorización

Vapor también incluye un panel centralizado que te permite rastrear métricas clave de salud para tus aplicaciones, bases de datos y cachés. Puedes configurar alarmas para que se activen cuando se superen ciertos umbrales, como un coste real que alcance el 85%, 100%, 200% o 500%, o un coste previsto que llegue al 100%.

Este sistema de monitorización te ayuda a identificar problemas rápidamente y recibir alertas antes de que afecten a tus usuarios. Todo esto se gestiona desde la misma plataforma, eliminando la necesidad de herramientas externas.

Estas funcionalidades trabajan juntas para ofrecer un entorno seguro y eficiente, diseñado con la filosofía serverless de Vapor en mente.

Proceso de despliegue con Laravel Vapor

Configuración inicial del proyecto

Antes de desplegar tu aplicación Laravel en Vapor, asegúrate de que tu proyecto cumpla con los requisitos técnicos necesarios: PHP 7.3 o superior y Laravel 6.0 como mínimo. También necesitas instalar dos paquetes clave: laravel/vapor-cli, que te permite gestionar los despliegues desde la línea de comandos, y laravel/vapor-core, que incluye los archivos esenciales para el tiempo de ejecución.

El siguiente paso es vincular tu cuenta de AWS. Para ello, crea un rol IAM utilizando tu Vapor Account ID y Team External ID. Después, ejecuta los comandos vapor login y vapor init para generar el archivo vapor.yml. Este archivo es crucial, ya que define tus entornos (como producción o staging), el runtime que usarás (nativo o Docker), y los recursos necesarios, como bases de datos o cachés. Es importante destacar que las aplicaciones con runtime nativo están limitadas a 250 MB, mientras que las basadas en Docker pueden alcanzar hasta 10 GB. Además, puedes configurar hooks para tareas como instalar dependencias (composer install --no-dev) o ejecutar migraciones (php artisan migrate --force).

Para simplificar la configuración de permisos, puedes asignar el permiso AdministratorAccess. Si prefieres un enfoque más seguro, opta por políticas personalizadas más restrictivas.

Con esta configuración básica lista, el siguiente paso es ajustar tus dominios personalizados y configurar los certificados SSL.

Configuración de dominios personalizados y SSL

Laravel Vapor te ofrece dos opciones para gestionar dominios personalizados. Si decides que Vapor gestione tu DNS, simplemente añade el dominio en el panel de Vapor y actualiza los nameservers en tu registrador. Vapor se encargará automáticamente de los registros DNS, la emisión del certificado SSL y su renovación.

Por otro lado, si prefieres gestionar el DNS con un proveedor externo, deberás solicitar el certificado SSL desde el panel de Vapor y añadir un registro CNAME para verificar la propiedad del dominio. Una vez emitido el certificado, actualiza la clave domain en el archivo vapor.yml con tu dominio personalizado y realiza el despliegue. Después del despliegue, Vapor te proporcionará un registro CNAME que deberás configurar para apuntar tu dominio hacia la aplicación.

Pasos del despliegue

Con los certificados y variables configurados, puedes proceder al despliegue de la aplicación utilizando el comando vapor deploy {environment}. Este proceso es atómico, lo que significa que no habrá tiempo de inactividad. Es fundamental usar el helper asset() de Laravel para asegurarte de que los recursos estáticos se referencien correctamente.

Vapor también facilita la gestión de variables de entorno, ya sea desde su interfaz o mediante los comandos env:pull y env:push. Sin embargo, ten en cuenta que estas variables están limitadas a 2.000 caracteres debido a las restricciones de AWS Lambda. Si algo sale mal durante el despliegue, puedes revertir a una versión anterior con el comando vapor rollback {environment}.

Finalmente, si planeas automatizar los despliegues en pipelines de CI/CD, asegúrate de configurar la variable VAPOR_API_TOKEN en tu entorno de construcción. Esto permitirá que el proceso de despliegue se integre sin problemas en tu flujo de trabajo.

Laravel Vapor Overview

Ventajas y desventajas de Laravel Vapor

Laravel Vapor: Ventajas y Desventajas - Comparativa Completa

Laravel Vapor: Ventajas y Desventajas - Comparativa Completa

Antes de decidirte por Laravel Vapor, es importante analizar sus puntos fuertes y sus posibles limitaciones. La plataforma destaca por su escalado automático y la ausencia de mantenimiento manual, pero también conlleva un esquema de precios que puede variar. Aquí tienes una tabla que resume sus aspectos clave:

Tabla comparativa

Aspecto Ventajas Desventajas
Escalabilidad Escalado automático en segundos; gestiona millones de peticiones sin intervención manual Sujeto a límites de servicio de AWS; puede requerir solicitudes manuales para aumentar cuotas
Mantenimiento No necesita mantenimiento de servidores; AWS se encarga del hardware, actualizaciones y parches de seguridad Gestión compleja de roles IAM y políticas de seguridad de AWS
Coste Tarifa fija de 39 €/mes (sin incluir los costes de AWS) Costes variables según el uso de AWS, lo que dificulta prever el gasto total
Despliegues Despliegos sin tiempo de inactividad y posibilidad de rollbacks con un solo clic Requiere como mínimo PHP 7.3+ y Laravel 6.0+
Ecosistema Integración directa con servicios de AWS como CloudFront, S3 y SQS Dependencia alta del ecosistema AWS, lo que puede generar vendor lock-in
Respuestas HTTP Manejo eficiente de peticiones concurrentes gracias a AWS Lambda Restricción de 6 MB en las respuestas HTTP debido a limitaciones de Lambda

Cabe destacar que el plan sandbox gratuito tiene limitaciones importantes: no soporta dominios personalizados, versiones de API Gateway, balanceadores de carga ni firewalls.

Jack Ellis, CTO de Fathom Analytics, destaca el ahorro en recursos humanos que ofrece Vapor:

Las empresas entienden el coste humano del mantenimiento de servidores, y son miles de euros. Si pueden pagar una cantidad tan pequeña para resolver este problema, enviarían a alguien a casa de Taylor Otwell y le entregarían 3.900 € por 10 años de Vapor...

El soporte DevOps tradicional para mantener entre 3 y 4 servidores puede costar hasta 1.000 € al mes. Vapor reduce considerablemente estos gastos. Además, ofrece la opción de configurar hasta cinco alarmas de presupuesto en AWS (por ejemplo, cuando el coste real supera el 85%, 100%, 200%, 500% o el coste previsto alcanza el 100%) para evitar sorpresas desagradables en la facturación. Estos factores son clave para evaluar si Vapor es adecuado para tu proyecto.

Cuándo usar Laravel Vapor

Laravel Vapor destaca en escenarios específicos donde sus capacidades serverless aportan grandes ventajas. Por ejemplo, cuando el tráfico de tu aplicación se dispara repentinamente, duplicándose o triplicándose, Vapor escala automáticamente sin necesidad de intervención manual. Esto lo convierte en una solución muy superior a un hosting VPS tradicional, que podría colapsar ante picos inesperados de demanda. Aquí te contamos en qué casos es ideal usar Vapor.

Aplicaciones con tráfico variable

El modelo serverless de Vapor es perfecto para proyectos con flujos de tráfico que no son constantes. Piensa en una tienda online que funciona con tráfico moderado durante el año, pero que experimenta un aumento masivo durante eventos como el Black Friday o las rebajas de enero. Gracias a AWS Lambda, Vapor ajusta automáticamente los recursos según la demanda. Esto significa que no tendrás que mantener servidores sobredimensionados durante los periodos de baja actividad, optimizando así los costes.

Además, Vapor no solo es eficiente para manejar picos de tráfico, sino que también es una herramienta práctica para quienes trabajan con varios proyectos al mismo tiempo.

Gestión de múltiples proyectos

Si eres una agencia de desarrollo o un freelance que maneja varios proyectos Laravel, Vapor te ofrece una plataforma centralizada para gestionar todo. Con su plan ilimitado por 39 €/mes, puedes desplegar tantos proyectos como necesites, cada uno con entornos separados para pruebas y producción. Vapor asigna a cada entorno una URL única, lo que facilita la inspección y prueba de cambios al instante. Esto simplifica enormemente el flujo de trabajo, especialmente cuando trabajas con múltiples clientes.

Equipos pequeños sin recursos DevOps

Para equipos que no cuentan con un especialista en infraestructura, Vapor es una solución ideal. Elimina la necesidad de gestionar servidores manualmente, incluyendo tareas como actualizaciones del sistema operativo, parches de seguridad y aprovisionamiento de recursos. Todo se configura a través del archivo vapor.yml, siguiendo un enfoque de infraestructura como código. Esto permite realizar cambios complejos, como pasar de DynamoDB a Redis, sin necesidad de entrar en la consola de AWS. Gracias a esta simplicidad, desarrolladores sin experiencia en DevOps pueden desplegar aplicaciones escalables y centrarse únicamente en desarrollar nuevas funcionalidades.

Conclusión

Laravel Vapor transforma la forma en que se despliegan aplicaciones Laravel al liberar a los desarrolladores de la gestión de servidores, permitiéndoles centrarse únicamente en lo que importa: crear funcionalidades. Como señala Pleets Blog:

En serverless gestionas servicios, no servidores. Esto deja a los desarrolladores con la función de preocuparse por lo que realmente deberían preocuparse: crear aplicaciones.

Esta plataforma destaca por su capacidad para ofrecer un despliegue ágil y seguro, gracias a su escalado automático mediante AWS Lambda. Puede manejar desde un tráfico mínimo hasta millones de peticiones, sin necesidad de prever o sobreprovisionar infraestructura. Todo se gestiona desde un único archivo de configuración, vapor.yml, siguiendo el enfoque de infraestructura como código, que simplifica enormemente la configuración de entornos.

Con un coste mensual de 39 € (más los gastos asociados a AWS), Vapor es especialmente útil para proyectos con tráfico impredecible, equipos pequeños sin especialistas en DevOps o freelancers que gestionan múltiples proyectos. Además, incluye funcionalidades clave como despliegues sin interrupciones, rollbacks inmediatos y certificados SSL gratuitos con renovación automática.

En definitiva, si buscas una solución que simplifique la gestión de infraestructura sin comprometer la escalabilidad, Vapor es una opción ideal. Es perfecta para proyectos que requieren un escalado casi ilimitado y para quienes trabajan cómodamente dentro del ecosistema de AWS. Vapor elimina la complejidad de gestionar manualmente servicios como Lambda, SQS, RDS y CloudFront. En esencia, es una evolución de Laravel Forge adaptada al mundo serverless, manteniendo la misma filosofía de simplicidad en el entorno de servicios gestionados en la nube.

FAQs

¿Qué ventajas ofrece Laravel Vapor frente a un servidor tradicional?

Laravel Vapor sobresale por su capacidad de escalado automático, lo que permite que tu aplicación maneje aumentos repentinos de tráfico sin necesidad de ajustes manuales. Esto significa que puedes olvidarte de preocuparte por la infraestructura, ya que Vapor funciona como una plataforma completamente gestionada, liberándote para concentrarte en el desarrollo de tu proyecto.

Otra gran ventaja es que elimina las complicaciones de configurar y mantener servidores. Esto no solo ahorra tiempo, sino también recursos, convirtiéndolo en una opción perfecta para proyectos que requieren flexibilidad y un rendimiento eficiente.

¿Cómo puedo configurar un dominio personalizado en Laravel Vapor?

Para configurar un dominio personalizado en Laravel Vapor, primero accede al panel de Vapor y navega a la sección Domains. Allí, selecciona Add domain, ingresa el dominio raíz que deseas usar y confirma la operación. Vapor generará automáticamente los registros de nameserver necesarios, que deberás configurar en el panel de tu proveedor de dominios.

Después de añadir estos registros en el panel de tu registrador, Vapor se encargará de verificar el dominio y emitir el certificado SSL correspondiente. Aunque la propagación de los cambios puede tardar algunas horas, una vez finalizada, tu dominio estará vinculado correctamente a tu proyecto y contará con la protección SSL activa.

¿Para qué tipo de proyectos es más adecuado utilizar Laravel Vapor?

Laravel Vapor es una solución excelente para proyectos que enfrentan fluctuaciones en el tráfico o picos de actividad, como tiendas en línea durante campañas promocionales o plataformas de eventos con inscripciones masivas. Gracias a su arquitectura serverless basada en AWS Lambda, ofrece escalado automático, eliminando por completo la necesidad de administrar servidores de forma manual.

También es una gran opción para equipos que desean concentrarse en el desarrollo y dejar la infraestructura en manos de Vapor. Este servicio se encarga de garantizar un rendimiento óptimo mientras ajusta los costes según el uso real, maximizando la eficiencia de los recursos.

Publicaciones de blog relacionadas