La computación sin servidores es un modelo de ejecución basado en la nube que permite que las aplicaciones se alojen como un servicio, sin necesidad de mantener un servidor.

El proveedor de servicios mantiene la asignación de recursos en el servidor y se factura al usuario en función del uso real. El foco se desplaza a la aplicación central que se está creando y la infraestructura es manejada únicamente por el proveedor de servicios. La computación sin servidor también se conoce Función como Servicio (FaaS).

En otras palabras, PHP sin servidor es la implementación de la computación sin servidor con un backend de PHP para dar un ejemplo.

En esta guía, veremos de cerca lo que significa PHP sin servidor, sus principales características y los pros y los contras para proporcionarle una mejor comprensión de este enfoque hacia la computación en nube.

Específicamente, veremos el concepto de la computación sin servidor, sus casos de uso y su alcance, las ventajas y desventajas, una simple implementación de PHP sin servidor con Bref y el estado de PHP sin servidor en los tres grandes (Amazon, Microsoft y Google).

¿Listo? ¡Empecemos!

Tradicionalmente, se necesitaba el hardware de un servidor para configurar una aplicación en Internet. La máquina o máquinas del servidor estarían físicamente conectadas a Internet para que alguien accediera a su aplicación. El mantenimiento del servidor era un asunto caro.

Luego, la evolución de los servicios de hospedaje permitió a los webmasters comprar espacio de hospedaje – cada servidor podía contener múltiples aplicaciones. Esto redujo los costos.

Con el auge de la computación en nube, las economías de escala redujeron aún más los costos, ya que se podía alquilar una pequeña cantidad de espacio en una gran granja de servidores remotos. De hecho, la computación sin servidores le permite pagar sólo por los servicios que usa. Cuando no se usa, prácticamente no se utiliza ningún espacio o recurso en la nube.

La computación sin servidores simplifica el proceso de desarrollo de software: permite a una organización enfocada únicamente en el desarrollo sin preocuparse por el despliegue, el mantenimiento de los servidores y el escalamiento.

PHP Sin Servidor: Lo Básico

Las tendencias del término "sin servidor" en Google
Las tendencias del término «sin servidor» en Google

Para desplegar una aplicación PHP sin servidor, primero debe explorar el concepto de computación sin servidor. Aunque el término serverless apareció por primera vez en el artículo sobre el futuro del desarrollo de software a partir de 2012 en ReadWrite, ganó popularidad con el lanzamiento de AWS Lambda en 2014.

En esta sección nos centraremos en algunos conceptos clave relacionados con la computación sin servidores, e intentaremos responder a una pregunta común que rodea a esta tecnología: ¿es realmente «menos» de servidores?

Características de PHP Sin Servidor

El despliegue es una tarea fácil sin tener que administrar el servidor. Simplemente sube su código al servidor y el resto lo hace el proveedor. La tecnología sin servidor permite tener funciones agnósticas al lenguaje, interactuando entre sí.

Por ejemplo, si tiene una aplicación de mensajería, el módulo de inicio de sesión puede estar codificado en un idioma y la función que actualiza su estado puede estar codificada en un idioma diferente.

Mientras que esto es posible sin el alojamiento sin servidor, es definitivamente más difícil de interactuar. Cada vez que una acción desencadena su función, surge una instancia para manejarla.

Este proceso de creación de una instancia puede ser «cálido», donde se utiliza una instancia existente, o «frío», donde se inicia una nueva instancia. Hay un ligero retraso en este proceso, especialmente un arranque en frío, en comparación con el alojamiento tradicional, en el que el servidor siempre está en modo de espera para gestionar las peticiones.

Sin embargo, la situación entre el alojamiento sin servidor y el tradicional se convierte exactamente en lo contrario cuando tiene un gran número de peticiones que atender. La escalabilidad viene inherentemente con la tecnología sin servidor. Si tiene un requerimiento repentino de mil solicitudes simultáneas, el proveedor se encargará de ellas sin ningún esfuerzo extra o configuración de su parte.

¿Es el PHP Sin Servidor Realmente Sin Servidor?

No deje que el término «sin servidor» le confunda. No significa que el «servidor» no exista. Cuando se utiliza una aplicación sin servidor, hay un servidor en segundo plano que procesa su entrada y calcula la salida necesaria.

El «-menos» está presente en el término desde la perspectiva del desarrollador, que nunca se expone a varios elementos del servidor. Por lo tanto, si usted despliega una aplicación PHP sin servidor, hay un servidor real que se ejecuta en la nube que atiende las solicitudes.

Arquitecturas BaaS vs Serverless

Aunque «computación sin servidores» no está muy definido, también puede referirse a las aplicaciones BaaS (Backend as a Service). BaaS también se refiere a un modelo de computación en nube, en el que las operaciones del servidor se subcontratan a un tercero y un desarrollador sólo tiene que centrarse en la creación y el mantenimiento del software.

La principal similitud entre BaaS y Serverless es el hecho de que el desarrollador no se centra en la administración de los servidores. Muchas organizaciones proveen paquetes de BaaS y FaaS bajo el mismo paraguas.

Aquí están las principales diferencias entre el BaaS y la computación sin servidores (Serverless):

  • Componentes: Las aplicaciones del BaaS son similares a sus homólogas tradicionales, un desarrollador no puede hacer cambios en su estructura para adaptarse al BaaS. En las aplicaciones sin servidor, la aplicación se divide en partes lógicas llamadas funciones, y cada una de estas funciones responde a un evento y realiza una tarea específica.
  • Escalabilidad: La escalabilidad es un componente crucial en una aplicación sin servidor – se asignan más recursos con un aumento del tráfico. No es un módulo necesario para las aplicaciones BaaS, aunque algunos proveedores de servicios lo proporcionan como un complemento.
  • Disparadores: Una aplicación sin servidor está impulsada por eventos, lo que significa que una actividad particular desencadena la aplicación cada vez que se produce. Por otro lado, una aplicación BaaS puede estar ejecutándose en segundo plano utilizando recursos continuamente como una aplicación tradicional.
  • Arquitectura modular: En la arquitectura sin servidores, es posible que varias funciones de una aplicación residan y se ejecuten en diferentes servidores, pero se ejecutan sin problemas debido a su integración. Una aplicación BaaS puede o no seguir esta estructura.

PHP Sin Servidor: Casos de Uso

Hemos discutido varios aspectos de la computación sin servidores, y la diferencia de BaaS. Mientras que hemos cubierto los fundamentos de la computación sin servidores, vamos a explorar situaciones en las que usted puede desear emplear tal arquitectura.

Puede que se haya dado cuenta de que puede que no sea una buena idea alojar aplicaciones complejas en tecnologías sin servidor. Sin embargo, incluso si decide no desplegar una aplicación completa a través de PHP sin servidor, puede desplegar módulos.

En esta sección trataremos dos ejemplos de implementaciones de una pila sin servidor: bases de datos y almacenamiento de archivos.

Una base de datos sin servidor es una base de datos a pedido que permite ejecutar consultas cuando se requiera. El escalado es fácil debido a la pila sin servidor y el proveedor le factura sólo por la cantidad de tiempo que usted utiliza el recurso.

Amazon Aurora y Google Cloud Datastore son ejemplos de bases de datos sin servidor disponibles en el mercado hoy en día. Un sistema de almacenamiento de archivos sin servidor se implementa como almacenes de objetos. Los archivos no son tratados como una jerarquía en un sistema de archivos, sino como objetos, que contienen los datos del propio archivo y sus metadatos. El almacenamiento y la recuperación se realizan a través de una API similar a REST.

IBM Cloud le proporciona un servicio de almacenamiento de objetos. Otros casos de uso común de aplicaciones sin servidor son las API y los backends móviles, cuyos diseños se basan en funciones pequeñas, lógicas e interdependientes.

PHP Sin Servidor: Ventajas

En esta sección, veremos las principales ventajas de la computación sin servidores y por qué está ganando terreno en los últimos años.

Reducción de los Costos de los Servidores

Teóricamente, la computación sin servidor conlleva menores costos en comparación con el alojamiento tradicional. La razón inherente es simple: está usando el servicio por cantidades específicas de tiempo y no hay costos de mantenimiento durante los tiempos de inactividad. Sin embargo, si se enfrenta a un tráfico constante a lo largo del tiempo, la adopción de una arquitectura sin servidores puede no dar lugar a una gran diferencia en los costos.

Despliegue más Fácil

La implementación de un servicio sin servidor no requiere que usted configure su servidor y lo haga. El despliegue de una aplicación sin servidor es también a través de funciones simples. Es más fácil crear una versión de la aplicación y hacerla disponible en la nube. Todo el proceso de despliegue, por lo tanto, es más fácil y más eficiente.

Escalabilidad

En un sistema tradicional, hay que hacer muchos esfuerzos para ampliar la escala para atender a un mayor tráfico. Por otro lado, el proveedor de servicios se encarga de la asignación de recursos cuando hay un aumento del tráfico. En consecuencia, es más fácil de escalar cuando se despliega a una arquitectura sin servidores.

PHP Sin Servidor: Inconvenientes

Si bien la computación sin servidores tiene sus ventajas, hay que ser consciente de sus posibles inconvenientes antes de comprometerse con ella.

Actuación

El principal problema que los usuarios destacan con la computación sin servidores es la caída en el rendimiento. Mientras que es impulsado por eventos, toma unos pocos cientos de milisegundos para generar una micro-instancia para servir una solicitud.

Este retraso puede resultar significativo para las aplicaciones en las que el tiempo es crítico. Con el aumento de la complejidad de una aplicación, los componentes que residen en varios lugares se suman a este desfase. Este desfase aditivo puede resultar perjudicial para la experiencia del usuario.

(Lectura sugerida: Introducción a la Construcción de Sitios Web con Gatsby y WordPress)

Vendor Lock-In

Mientras que la arquitectura sin servidores le permite centrarse únicamente en su código, el proveedor obtiene el control total de la infraestructura. Por lo tanto, usted no puede cambiar de proveedor si se queda sin servidor, ya que la migración puede ser una tarea difícil.

Depuración

Los proveedores se encargan de la implementación de las aplicaciones sin servidor de principio a fin. Por lo tanto, un desarrollador debe depender del proveedor para proporcionar los registros apropiados para la depuración. El proceso de depuración de una aplicación sin servidor para identificar la causa raíz también es difícil.

PHP Sin Servidor: Empezando con Bref en Lambda

Mientras hemos explorado la arquitectura sin servidor, ahora veremos lo que se requiere para desplegar una aplicación PHP a través de un servicio sin servidor.

Como ya habrán adivinado, el despliegue de una aplicación sin servidor es muy específico del proveedor. Por lo tanto, este post intenta abordar las implementaciones de una aplicación PHP sin servidor en Amazon AWS. Bref, o brief en francés, es un paquete Composer que permite desplegar aplicaciones PHP en AWS a través de Lambda.

Bref está en constante evolución, por lo que probablemente debería comprobar la matriz de madurez de Bref para evaluar si es una buena idea portar su aplicación a una arquitectura sin servidores.

Requisitos Previos para PHP Sin Servidor con Bref

Primero, vaya a Amazon AWS y cree una cuenta. La necesitará para desplegar su aplicación. A continuación, necesita instalar el framework sin servidor para gestionar su despliegue.

npm install -g serverless

A continuación, genere su par de claves públicas y privadas en AWS, y configure el marco sin servidor localmente.

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

A continuación, instale Bref a través de Composer:

composer require bref/bref

Antes del despliegue, necesita instalar las dependencias de Composer.

composer install --prefer-dist --optimize-autoloader --no-dev

Crear una aplicación de Hello World en PHP sin servidor con Bref

Para crear una simple aplicación de hola mundo con Bref, escribiremos una función que se dispara por un evento y devuelve la cadena «hola mundo».

Primero, debe incluir el script autoload.php de Bref y luego usar su función lambda. Opcionalmente puede declarar una variable de contexto si quiere acceder a los datos del contexto.

require __DIR__.'/vendor/autoload.php';
lambda(function ($event) {
 return 'Hello world');
});

Mientras que la función está lista, es necesario crear un archivo de configuración serverless.yml. Aquí hay un archivo de configuración básico de la guía de Bref.

service: app
provider:
 name: aws
 runtime: provided
plugins:
 - ./vendor/bref/bref
functions:
 hello:
 handler: index.php
 layers:
 - ${bref:layer.php-73}

Bref crea este archivo de configuración automáticamente cuando ejecuta el siguiente comando.

vendor/bin/bref init

Ahora que está listo con su función y la configuración, puede invocar la función para comprobar que se ejecuta como está previsto utilizando el comando de invoke del paquete sin servidor:

serverless invoke -f hello

Aquí hay una guía sobre el despliegue local de aplicaciones sin servidor usando la misma herramienta de línea de comandos de AWS. Una vez que su proyecto esté listo, puede desplegarlo usando el comando de despliegue de serverless. Utilice la opción --verbose para obtener detalles del proceso de despliegue:

serverless deploy

Otras Opciones de Implementación para PHP Sin Servidor

Bref PHP en AWS Lambda es una elección popular. Sin embargo, hay algunas otras opciones para sus aplicaciones PHP sin servidor.

Vapor, lanzado por Laravel en julio de 2019, es una plataforma de despliegue sin servidores para Laravel en AWS Lambda. Vapor convierte su aplicación Laravel en una única función lambda. Aunque Azure serverless no soporta oficialmente PHP, puede intentarlo usando este ejemplo de despliegue.

Resumen

Aquí hay aspectos clave que debería subrayar de esta guía sobre PHP sin servidor:

  • Antes de considerar el uso de PHP sin servidor pare su aplicación, asegúrese de que es plenamente consciente de lo que es la computación sin servidor, sus ventajas y desventajas.
  • Hay tres factores primarios que debe considerar cuando porta su aplicación a un marco de trabajo PHP sin servidor. Considere la complejidad de la aplicación, la criticidad temporal de sus componentes y la escalabilidad en el futuro.
  • El PHP sin servidor es todavía bastante nuevo en el mercado. Asegúrese de hacer un piloto con Bref en uno de los proveedores antes de comprometerte totalmente con él.

Mientras que el «serverless» se está volviendo muy popular, también requiere una profunda comprensión de cómo funciona la tecnología para aprovecharla.

Para todos los demás casos, el uso de un host de WordPress administrado como Kinsta puede simplificar enormemente su flujo de trabajo.

Shaumik Daityari

Shaumik es un analista de datos de día, y un entusiasta de los cómics de noche (¿o quizás es Batman?) Shaumik lleva más de cinco años escribiendo tutoriales y creando screencasts. Cuando no está trabajando, se dedica a automatizar tareas cotidianas mediante scripts meticulosamente escritos.