Los proveedores de servicios cloud, como Amazon Web Services (AWS) y Azure, se han esforzado mucho en los últimos años en simplificar y agilizar la implementación de software. Se trata de minimizar el trabajo de los administradores de sistema. Con ello se consigue implementar software de manera mucho más eficiente. Esto lo realizan a través de plataformas como servicio (PAAS) o infraestructura como servicio (IAAS). La que ofrece mayor nivel de abstracción serían los servicios serverless. Y justo de eso hablará hoy nuestro Slasher Hugo Pérez, software developer de Slashmobility, que analizará los principales servicios Serverless de AWS. ¿Te convencerá para mudar tus proyectos a la nube?
¿A qué nos referimos como ServerLess ?
Se conoce como Serverless (o cómputo sin servidor) al modelo de ejecución en el que el proveedor en la nube (AWS, Azure o Google Cloud) es responsable de ejecutar un fragmento de código mediante la asignación dinámica de los recursos. Esto quiere decir que, al contrario de lo que parecía indicar su nombre, si existen servidores subyacentes. Lo que ocurre con ellos es que el usuario-desarrollador no tiene conciencia de los mismos. La plataforma en la nube se encarga, ayudado por la tecnología usada por Docker de:
- Levantar contenedores
- Escalar o desescalar si es necesario
- Sustituirlos si fallan
- Controlar que siempre tengan una versión actualizada del software necesario para ejecutarse
¿Qué ganamos con el uso de Serverless?
La principal ventaja es la independencia completa de administradores de sistemas. No necesitamos preocuparnos por la versión del sistema operativo. Tampoco escoger ni monitorear recursos asignados para comprobar que la máquina es la correcta según las peticiones recibidas. Nuestra misión como developers tan solo será desarrollar código que funcione y dejar que nuestro proveedor cloud se ocupe del resto.
Económicamente también ganamos. Estos servicios habitualmente tan solo se cobran por ejecución. Si nadie usa nuestra app, no pagaremos nada. Si es usada por mucha gente, pagaremos proporcionalmente a su uso.
Principales servicios Serverless de Amazon Web Service
Ahora veremos algunos de los principales servicios Serverless ofrecidos por AWS, dado que es el líder destacado de mercado y el servicio cloud principal de Slashmobility.
AWS Lambda
AWS Lambda es el primer servicio serverless de AWS y el más popular. ¿ En qué consiste? Ejecución de funciones de código bajo demanda. En cuanto se invoque, se levantará internamente un contenedor con esta función y se ejecutará el código que contenga. Parece muy guay pero, ¿para qué uso yo esto? En Slashmobility lo usamos mucho para liberar carga de backend en procesos pesados. De esta forma no ponemos en riesgo el rendimiento del mismo por procesos puntuales. Un ejemplo sería procesar ficheros de gran tamaño o integraciones con servicios externos, que deben hacerse de forma periódica cada pocos minutos.
Además de estos usos, podríamos hacer una API completa utilizando estas funciones.
Amazon s3
Amazon s3 es un servicio de almacenamiento escalable. Este “bucket”, tal como lo denomina AWS, nos permite almacenar objetos de forma casi ilimitada. El objeto más grande que se puede almacenar sería de 5 terabytes. ¡Las posibilidades son infinitas! AWS se encargará de aprovisionar la infraestructura necesaria para permitirnos estas subidas.
Fargate
Fargate es un Serverless aplicado a contenedores. Nos permite levantar contenedores sin escoger tipo de instancia ni cantidad de ellas en la que se ejecutarán. AWS aprovisiona esto de forma automática. Solo necesitaremos subir una imagen de un contenedor. Lo demás será asunto de AWS.
En conclusión, los servicios Serverless nos permitirán olvidarnos completamente de la administración de sistemas, permitiéndonos así centrarnos por completo en el desarrollo de software, ahorrando costos que no aportan valor. Una facilidad más para convencernos, si no lo estábamos ya, de que el futuro está en la nube.
¿Te hemos convencido?