Laravel sin servidor de forma fácil con Bref
Ejecute una aplicación Laravel sin servidor con Bref en AWS Lambda.
En este artículo, podemos ver cómo ejecutar una aplicación Laravel sin servidor utilizando el paquete Bref y AWS Lambda.
¿Qué es Serverless?
Seamos simples: Serverless es un modelo de nube en el que el proveedor de nube se encarga de la asignación de recursos de forma dinámica, por lo que se cobra por la cantidad de recursos utilizados. Serverless también se conoce como “Funciones como servicio” o “FaaS”.
Proveedores sin servidor
- AWS Lambda
- Funciones de Azure
- Funciones de Google Cloud
- Cloudflare
¿Por qué Serverless?
La configuración del servidor la gestiona el proveedor de servicios en la nube.
- Paga por lo que se usa.
- Escalado automático.
- Debido a la arquitectura sin servidor, solo pagamos cuando el código se ejecuta, no durante el tiempo de inactividad.
Bref para Serverless:
Bref es un paquete de redacción de código abierto que se utiliza para implementar la aplicación PHP (Laravel) en AWS Lambda. Bref tiene buena documentación y es compatible con los principales marcos de PHP. Bref utiliza el marco sin servidor o serverless para implementar y configurar la aplicación sin servidor.
Ahora implementemos nuestra aplicación Laravel en AWS Lamba.
Configuración de marco sin servidor
- Instale el marco sin servidor como una dependencia global usando el siguiente comando.
Requisito previo Node.js 6.xo una versión posterior
npm install -g serverless
2. Una vez completado el paso 1, cree un usuario programático de IAM en la consola de AWS IAM y adjunte las políticas necesarias al usuario. Consulte esta esencia para conocer las políticas requeridas. Después de crear el usuario, tenga en cuenta las claves de acceso que se generan.
Se recomienda crear un usuario programático de IAM independiente para servidores sin servidor.
3. Configure la configuración sin servidor usando el siguiente comando
serverless config credentials --provider aws --key <key> --secret <secret>
Ahora que el marco sin servidor está configurado para nuestra máquina local, agreguemos Bref a nuestro proyecto Laravel
Configuración de Bref
1. En el proyecto Laravel existente, instale Bref y el paquete Laravel-Bref usando composer.
composer require bref/bref bref/laravel-bridge
2. Después de instalar los paquetes anteriores, ejecute el siguiente comando
php artisan vendor:publish --tag=serverless-config
Este comando creará el archivo de configuración serverless.yml en la raíz del proyecto directamente. De forma predeterminada, la aplicación sin servidor se alojará en la región us-east-1, si desea cambiar el uso de la región, puede cambiar la región en el archivo serverless.yml y hay muchas propiedades que puede configurar en él. Haga clic aquí para ver todas las propiedades.
Implemente su aplicación
Borre todas las cachés antes de la implementación y ejecute el comando de implementación
php artisan config:clear
Implementemos usando el siguiente comando
serverless deploy
El comando anterior comprimirá el proyecto de Laravel, lo cargará en S3 y lo implementará en Lambda utilizando la plantilla de CloudFormation. Cuando se complete la implementación, mostrará una URL de la aplicación alojada en AWS Lambda, presione esa URL en el navegador para ver su aplicación Laravel sin servidor.
Puntos a tener en cuenta
- El sistema de archivos AWS Lambda es un directorio de espera / temp de solo lectura; de forma predeterminada, Bref mueve el almacenamiento en caché de Laravel al directorio / temp, pero el directorio / temp no se comparte con otras instancias de Lambda. Por lo tanto, necesitamos utilizar servicios de almacenamiento centralizados como Elasticache o DynamoDB para resolver esto.
- Si está utilizando sesiones, debe mover el almacenamiento de la sesión a Elasticache o DynamoDB.
- Actualice FILESYSTEM_DRIVER a S3 y almacene todos sus archivos públicos en S3.
- Para proporcionar acceso a Internet a su función Lambda, que se encuentra en VPC. Necesita crear una puerta de enlace NAT. Para acceder a la mayoría de los servicios de AWS, Lambda debe ejecutarse en la misma VPC. NAT Gateway aumentará el costo, ya que su costo por hora es de $0.045 para la región este de EE. UU. (34 $ / mes).
- La duración de Lambda Cold Start puede aumentar si aumenta el tamaño de la base de código de la aplicación. Por lo tanto, excluya casos de prueba, imágenes, archivos y activos de IU durante la implementación.
Ahora, la aplicación Serverless Laravel está alojada con éxito en AWS Lambda utilizando Bref.