A medida que avanza el tiempo salen nuevas tecnologías y eso atrae procesos de desarrollo mucho más complejos para los equipos de desarrollo web, eso puede atraer una serie de mejoras para el ecosistema y herramientas que ayuden a simplificar esos procesos.

Una de ellas se llama Bref que te permite ejecutar código en tiempo real en plataformas como AWS Lambda, quizás no hayas escuchado del concepto serveless, a partir de este punto escucharás mucho este concepto ya que ya lleva bastante tiempo tomando fuerza en el ecosistema.

¿Qué significa serveless?

Antes de explicar este concepto, me gustaría dar un paso antes, cuando tradicionalmente para levantar un servidor que ejecute PHP necesitas instalar un servidor que corra lo siguiente:

  • PHP
  • MySQL
  • Nginx o Apache
  • Etc.

Esto nos puede llevar por lo menos 3-4 horas teniendo lo más básico, pero puede extenderse a más tiempo si necesitamos algo mucho más especifico. En un futuro si necesitamos más recursos o una librería en especifico, tenemos que realizar diferentes acciones que nos hacen invertir mucho más tiempo.

De esto nace el concepto serveless  que permite aprovisionar un servidor en la nube como por ejemplo en Google Cloud, AWS o Azure y estas empresas se encargan de gestionar la cantidad de recursos asignados a nuestras instancias.

Esto se traduce en la optimización de configuración y mantenimiento de servidores, lo cual reduce el tiempo que nosotros invertimos para gestionar una infraestructura.

Dentro de este concepto existen diferentes herramientas para casi todos los lenguajes de programación existentes, el que estaremos hablando hoy es PHP.

¿Qué es bref?

Bref es un pequeño freamework enfocado en ofrecer un stack completo para ejecutar aplicaciones PHP en AWS Lambda, su nombre proviene del francés y significa “breve”. 😉

¿Qué proporciona bref?

Bref.sh ofrece diferentes herramientas, tales como:

  • Documentación
  • Tiempos de ejecución de PHP para AWS Lambda
  • herramientas de implementación
  • Integración de frameworks PHP

Esto lo hace una propuesta muy completa para montar nuestros proyectos de serveless.

Casos de uso

Hay una gran variedad de ecosistemas en donde bref.sh puede utilizarse, entre ellos son:

  • APIs
  • Workers
  • Batch processing
  • Scripts
  • Sitios web

Un punto muy importante es que Bref.sh permite cualquier aplicación desarrollada en PHP, puede ejecutar Lumen, Laravel, Symfony o cualquier otro framework basado en PHP.

Tabla de madurez

Cada vez que nace una nueva tecnología, hay una cierta incertidumbre sobre si es fiable para desarrollar en producción, es por eso que Bref.sh ofrece una matriz de maduración:

Cómo ejecutar PHP sin servidor

Como pueden ver, hay una gran tasa de fiabilidad para desarrollar aplicaciones con bref.sh, por lo cual ha sido probado por toda la comunidad del ecosistema.

Instalación de Bref.sh

Instalar Bref es realmente sencillo, cuenta con una documentación bastante amplia, la cual nos ayudará en todo el proceso de instalación e integración.

Cuenta en AWS

Para este tutorial necesitarás acceso a una cuenta de AWS activa para poder acceder a las funciones Lambda en donde configurarás todo el entorno necesario.

Instalación de serveless

Necesitarás ejecutar el siguiente comando para poder instalar el comando de serveless:

npm install -g serverless

Esto te permitirá ejecutar el comando serveless, puedes leer más detalles en este enlace.

Generación de llaves AWS

Para poder conectarse a toda la plataforma de AWS necesitarás generar las claves de acceso.

Para lograr esto, Bref nos facilita una guía extendida la cual podemos consultar en: creación de claves de acceso AWS.

Después de haber obtenido las claves, las puedes configurar en tu entorno con el siguiente comando:

serverless config credentials --provider aws --key <key> --secret <secret>

Ahora ya tendremos disponible todo el entorno necesario para trabajar con serveless, pero aún falta la integración con PHP.

Instalación de Bref.sh

Para integrar Bref con tu proyecto PHP necesitas utilizar Composer.

composer require bref/bref

Esto agregará Bref a todo tu proyecto y podrás utilizar todas sus clases y métodos disponibles.

vendor/bin/bref init

Con el comando anterior te pedirá que aceptes los valores determinados, con fines de prueba puedes darle enter a todo y esto te generará una función por defecto.

Nota que al ejecutar el comando anterior, se crearon los siguientes archivos:

  • index.php contiene tu función lambda
  • serverless.yml contiene la configuración para implementar AWS

Por ahora esto ha sido todo por el artículo, me gustaría saber tu opinión sobre el tema de serveless, la verdad es un tema que jamás había tocado en el blog pero quiero comenzar a platicar más sobre el ecosistema ya que en los últimos meses ha tomado mucha fuerza en el ecosistema.