DESARROLLO DE APLICACIONES WEB SERVERLESS O EN LA NUBE: PRINCIPALES VENTAJAS Y LIMITACIONES
Tradicionalmente, para desarrollar cualquier tipo de aplicación web era necesario un servidor físico. Sin embargo, a día de hoy podemos desarrollar aplicaciones web serverless o sin servidor. Es decir, servicios independientes que se lanzan en la nube y permiten escribir e implementar código sin tener que preocuparse por las infraestructuras. Se soluciona así uno de los grandes quebraderos de cabeza en el entorno del desarrollo, en el que había que tomar decisiones como el tamaño del servidor, las personas que lo atenderán, etc. Eliminado este problema, es importante comprender que, aunque utilicemos el término serverless, realmente sí que existen unos servidores. El punto clave es que dichos servidores están delegados a un proveedor de Cloud, por lo que no es necesario mantenerlos internamente. Así, el paradigma de la arquitectura queda fuera y no es necesario comprar, alquilar o provisionar servidores: todo se convierte en un modelo de pago por servicio.
VENTAJAS DEL DESARROLLO DE APLICACIONES WEB EN CLOUD
Este tipo de desarrollo sin servidores, en la nube, tiene diferentes ventajas con respecto a los desarrollos con un servidor propio:
- Las barreras de entrada son muy pequeñas, ya que es sencillo entrar directamente y poner el código a funcionar sin grandes esperas o altas inversiones iniciales.
- Este tipo de desarrollos son Hostless, es decir que no tienen que estar almacenado en algún lugar.
- Además, son desarrollos Stateless: la computación no se crea ni de destruye. No se mantienen sus estados ni se almacena nada en la memoria. Esto es útil para las actualizaciones de código porque el código que era, ya no es.
- Es un sistema muy elástico. Es posible crecer según las necesidades en cada momento, sin necesidad de hacer nada de manera manual.
- Al ser un sistema distribuido, puede estar en cualquier parte del mundo en pequeñas unidades. Por ejemplo, podría estar un servicio en EEUU, otro en Alemania y otro en París.
- Este tipo de arquitecturas son Event Driven, es decir orientadas a eventos, y promocionan el paso a producción. Para entenderlo de manera sencilla, un servidor físico clásico puede recibir muchas peticiones y, cuando estas son demasiadas, no puede responder a todas ellas (comúnmente diríamos que el sistema “se cuelga”). En cambio, en las arquitecturas Event Driven se crea una copia exacta del servidor y es posible distribuir las peticiones entre ambos cuando se prevé que se va a exceder la capacidad. No se espera a que aparezca el error, sino que se reacciona de manera preventiva, solucionándolo a nivel de infraestructura.
LIMITACIONES DEL DESARROLLO WEB SIGUIENDO UN MODELO SERVERLESS
Aunque las ventajas son numerosas, no podemos olvidar que el desarrollo web en la nube también tiene algunas limitaciones o inconvenientes:
- En primer lugar, hay una alta dependencia del vendor. El proveedor puede o no mantener sus servicios en el tiempo y depende de él que no haya downtimes (caídas), que se modifiquen los límites o los costes o que se pierdan funcionalidades.
- Además, normalmente este tipo de desarrollos están limitados al vendor que se vaya a utilizar. Es decir, que no se programa igual para todos los proveedores de cloud. Esto aumenta contribuye también al punto anterior, la dependencia.
- Por otro lado existe una Start Latency o latencia de inicio. Esto significa que las peticiones no se ejecutan de manera automática, sino que puede haber un lapso de décimas de segundo. Los servicios están en reposo o dormidos y hay un pequeño lapso de tiempo que hay que tener en cuenta. Esto puede no ser un problema, pero hay temas críticos en los que la respuesta debe de ser inmediata y no puede permitirse un retraso de medio segundo (sobre todo para procesos que entran en colas). Podemos imaginar el proceso de un banco, en el que la salida de dinero de una cuenta debe de producirse en el momento exacto en que se ingresa en la cuenta destinataria.
- Encontramos también que la duración de las ejecuciones puede ser limitada en algunos proveedores. Hay servicios que solo pueden mantenerse en ejecución un límite de minutos y, tras eso, habría que volver a levantarlos.
- En cuanto a los costes, a veces pueden ser difíciles de predecir al tratarse de un modelo de pago por uso.
- En el momento de lanzar los desarrollos, resulta más complicado realizar tests y detectar bugs al lanzarse en la nube.
- Y, por último, el monitoreo y la observabilidad son servicios que se encuentran de forma externa y no se integran con el sistema (algo que puede ser positivo o negativo, según el caso).
UNA ARQUITECTURA EN TRES CAPAS PARA EL DESARROLLO DE APLICACIONES SERVERLESS
Uno de los vendors o proveedores de Cloud más conocidos es AWS. La arquitectura al realizar desarrollos con este proveedor está formada por 3 capas:
- Presentación: esta capa es la responsable de interactuar directamente con el cliente final. Es decir, la parte expuesta o visible.
- Lógica: en esta capa se implementa la lógica de negocio, siendo puente entre los datos y la presentación. Indicará qué hacer, cuándo, qué se permite o qué no, estará conectada a las BBDD, recogerá datos del front, etc.
- Datos: los datos recogidos pueden provenir de servicios serverless o no serverless, siendo un almacenamiento dedicado a objetos (archivos, videos, etc.) o a datos desde una base de datos.
De todo lo comentado podemos extraer como idea principal que el desarrollo de aplicaciones en la nube puede resultar muy útil para las compañías. Sin embargo, como cualquier solución, es importante tener en cuenta tanto sus pros como sus contras antes de decidirse por este tipo de desarrollos. Puede que haya casos de uso en los que sea necesario utilizar un servidor físico tradicional, mientras que en muchos otros las ventajas superarán a los inconvenientes y la decisión más inteligente será por optar por un desarrollo de aplicaciones web serverless. Además, habrá que tener también en cuenta las características de cada proveedor para tomar la decisión con más beneficios para el negocio.
Pablo Gutiérrez Díaz
Responsable del Delivery Center de Serbatic Valladolid