¿Cómo funcionan las Aplicaciones Sin Servidor – Serverless?

serverlessComputingBanner

Cuando pensamos en software, no podemos dejar de pensar en la infraestructura del mismo: el servidor y el tipo de configuración en el que será alojado; las características del mismo y su administración solían ser claves a nivel de desarrollo en todo proyecto. No obstante, gracias a arquitecturas ‘serverless‘, nos podemos enfocar más en el desarrollo del producto, más que del servidor, infraestructura, red, entre otras cosas. Diversos servicios como AWS Lambda (Complementado con DynamoDB, API Gateway) ya ofrece un servicio auto-administrado, facilitando el desarrollo de miles de aplicaciones.

No alt text provided for this image

Entendiendo la evolución de la nube frente al desarrollo, inicialmente las tecnologías en la nube ofrecieron un sistema de Infraestructure as a Service (IaaS), facilitando la renta de infraestructura, sin ceder la configuración del servidor al proveedor asociado. Luego, el modelo de Platform as a Service (PaaS) buscaría facilitar la configuración de servidores y desarrollo de bases de datos, aunque ello aún no fuese suficiente para un cambio significativo en los modelos de negocio actuales.

Empezamos a comprender una arquitectura ‘serverless’ hace unos años como Function as a Service (FaaS); cediendo la administración de la infraestructura por el proveedor de la nube.

¿Qué caracteriza a un servicio ‘serverless‘?

  • No hay manejo de servidores, ya que es un ‘servicio’ brindado por la empresa proveedora. No corresponde instalar o mantener algún software como lo haríamos con un servidor regular.
  • Es increíblemente escalable (y ajustable) con pocos clics. Corresponde pagar según lo que uno consuma y podemos anticipar necesidades de características especiales sin que esto suponga un trabajo adicional para nuestro departamento de información.
  • Alta disponibilidad ya que el proveedor podrá ofrecerte miles de variantes a disposición de lo que requiera tu software en el momento sin necesidad de esperar o instalar alguna funcionalidad.
  • Pagas lo que consumes y evitas el costo inactivo de tus servicios. Puedes configurar tus servicios para un cobro específico por horas o por funcionamiento según las necesidades de tu aplicación.

El uso de estos servicios sin duda aligera por completo costos y esfuerzo del equipo de TI en tu compañía. Ojo que ello no significa reducir personal que antes se dedicaba a la implementación, mantenimiento, depuración y monitoreo de tus servidores, sino redoblar los esfuerzos por el logro de objetivos de tu compañía.

¿Qué consideraciones corresponden al elegir un proveedor de servicios ‘serverless’?

El precio es, sino, el factor clave al momento de elegir un servidor con estas características. AWS Lambda cuenta con un precio de 0.00001667 dólares por cada GB-s consumido; ello después de la capa gratuita de 1 millón 400 mil GB-s al mes.

Los lenguajes de programación soportados por el mismo son claramente restrictivos al momento de elegir un proveedor. AWS Lambda admite Node.js, Python, Java, C#, Visual Basic, F# y otros lenguajes a través de Runtime API.

Las limitaciones frente al tiempo de ejecución y la concurrencia también son de vital importancia. AWS Lambda ofrece 1,000 ejecuciones con un tiempo máximo de 15 minutos. La concurrencia puede variar según lo configurado desde la cuenta completa a una función específica.

Entendiendo Function-as-a-Service

No alt text provided for this image

FaaS comprende una serie de elementos ‘serverless’, que se complementan para facilitar el desarrollo de funciones al detalle. Una arquitectura ‘serverless’ facilita la computación, almacenamiento, base de datos, gateways, entre otros factores; haciendo que la configuración y administración de estos servidores sea casi invisible al usuario. Function-as-a-Service se enfoca solo en la respuesta de eventos en relación a las solicitudes realizadas.Enfoca tus esfuerzos FaaS con algunos detalles para hacerlos aún más efectivos:

  • Haz que cada función realice solo una acción, las funciones FaaS están diseñadas en realizar un solo trabajo en respuesta a un evento. Haz tu código simple, limitado, eficiente y ligero; de esta forma lograrás que cargue y se ejecute rápido.
  • Evita que las funciones llamen a otras funciones. El valor de esta tecnología, es la separación de funciones; añadir muchas relaciones elevará tu costo y perderá el sentido de la misma.
  • Limita el uso de librerías ya que un exceso de las mismas puede complicar la escalabilidad de tus funciones cuando sea necesario.

Referencia: Dev.to, IBM y DZone

, , ,