Cloud Computing: Tipos de nubes, servicios y proveedores
Tras el anterior artículo "Cloud Computing: Que és, características y ventajas", en este seguimos hablando sobre Cloud Computing, centrados en explicar los...
En este artículo vamos a profundizar en Serverless, explicando qué es, las ventajas aporta y los principales servicios a día de hoy de esta tecnología.
Tabla de contenidos
Serverless significa sin servidor, es una solución que permite crear y ejecutar aplicaciones con rapidez y menor costo total de propiedad, ya que no es necesario aprovisionar y administrar infraestructura. Evidentemente, por detrás hay servidores para ejecutar las aplicaciones, pero el proveedor de nube se encarga de la administración, por lo tanto, de nuestro lado dejamos de preocuparnos por administrar servidores, sistemas operativos, software y demás recursos, y únicamente nos centramos en el código de la aplicación.
Con una arquitectura Serverless podemos procesar miles de peticiones, hasta millones, sin pensar en la capacidad de recursos necesarios para que la aplicación funcione correctamente, la escalabilidad está garantizada.
Posiblemente has leído o escuchado sobre Serverless computing, se refiere a informática sin servidor, sin embargo, es preciso aclarar que Serverless no se limita únicamente a cómputo, también podemos utilizar bases de datos, almacenamiento y otros servicios de integración de aplicaciones. Más adelante conocerás un poco acerca de los principales servicios sin servidor disponibles en AWS y Azure.
Para migrar a la nube hay varias estrategias posibles, por supuesto, se debe evaluar cual se adapta mejor tu escenario, una de ellas es Refactorización/Rearquitectura, que consiste en volver a imaginar la arquitectura y el desarrollo de la aplicación, con características nativas de la nube. Bien, la modernización de las aplicaciones con características nativas de la nube se basa en la arquitectura Serverless.
Si estás pensando migrar una aplicación monolítica a microservicios, tendrás que hacer una refactorización y debes de tener en consideración los servicios sin servidor, aunque por otra parte están los contenedores, pero ya te adelanto que también existen soluciones para ejecutar contenedores sin servidor.
Implementando soluciones con Serverless obtenemos varios beneficios, principalmente podemos remarcar cuatro ventajas importantes.
No hay necesidad de administrar infraestructura
No es necesario aprovisionar y administrar servidores, tampoco es nuestro trabajo mantener los sistemas operativos o la instalación y actualización de software. En general, las tareas relacionadas con la administración de infraestructura las dejamos de un lado. Todo eso es responsabilidad del proveedor de nube.
Escalabilidad
Como cualquier servicio en la nube, tenemos esa flexibilidad para escalar de acuerdo a la demanda. Con arquitecturas Serverless, la aplicación escala de forma automática y manteniendo un equilibrio en cuanto a recursos, lo cual indica que se adapta rápidamente a las necesidades de los clientes.
Ahorro de costos
Aplica lo mismo, como todo en la nube, solo se paga lo que se usa, en este caso se paga por el tiempo que dura la ejecución, en lugar de pagar por una instancia. Por ejemplo, en AWS Lambda se paga por el tiempo que tarda en ejecutarse una función de código. Sin duda, representa un ahorro importante, ya que la utilización de recursos se optimiza bastante.
Alta disponibilidad y tolerancia a fallas
Sin necesidad de hacer algún proceso para replicar datos en diferentes zonas de disponibilidad, los servicios sin servidor ofrecen alta disponibilidad y tolerancia a fallas de forma predeterminada.
A continuación, mencionaré algunos de los servicios Serverless que tenemos a disposición en los dos principales proveedores de nube pública, AWS (Amazon Web Service) y Microsoft Azure.
AWS Lambda
AWS Lambda es uno se los Serverless más conocidos en AWS y se encuentra entre los servicios de cómputo. En Lambda perfectamente podemos ejecutar el Backend de una aplicación, solo necesitamos configurar y cargar el código o una imagen de contenedor y Lambda se encarga del resto. Algo muy importante para los desarrolladores es que soporta diferentes lenguajes de programación, por lo que puedes escribir funciones en el leguaje preferido, ya sea Node, Python, Go, Java, etc.
AWS Lambda funciona muy bien para responder a eventos o interactuar con otros servicios, por ejemplo, podríamos tener políticas internas de cumplimiento para garantizar que los grupos de seguridad cumplan con ciertas reglas, en AWS esto se puede definir en un servicio llamado AWS Config. Para cumplir con las políticas, podemos ejecutar una función Lambda para revisar los grupos de seguridad y eliminar o agregar reglas de acuerdo a la configuración definida, en este caso estaría respondiendo a un evento, y a su vez interactúa con otro servicio dentro de AWS. En definitiva, son muchos los casos de uso de AWS Lambda.
AWS Fargate
Fargate es un servicio para implementación de aplicaciones en contenedores. Es un Serverless, así que elimina la tarea de levantar y administrar instancias para ejecutar un clúster, y, por ende, permite centrarse únicamente en el desarrollo de las aplicaciones. En cuanto al costo, se paga por el consumo de recursos (memoria, CPU, almacenamiento) que hagan los contenedores hasta que termina de ejecutar la tarea. El desarrollo y despliegue de aplicaciones en contenedores aumenta cada vez más, y este es un servicio interesante para arquitecturas de microservicios.
Amazon S3
Amazon Simple Storage Service (Amazon S3) es un servicio de almacenamiento de objetos resistente con una alta disponibilidad y durabilidad de los datos, esto es porque Amazon replica automáticamente los datos en diferentes zonas de disponibilidad. Es casi un servicio de propósito general, es decir, se puede utilizar en diferentes escenarios, pero es especialmente útil para almacenar copias de seguridad, guardar archivos estáticos o multimedia como fotos y vídeos para aplicaciones web o móviles. De hecho, un sitio web estático se puede alojar sin problemas en Amazon S3. Si hablamos de desacoplar aplicaciones y lo relacionamos con AWS Lambda, podemos tener el Front-End en Amazon S3 y el Back-End en AWS Lambda.
Amazon DynamoDB
Es un servicio de bases de datos no relacional o NoSQL, que ofrece un gran rendimiento a escalada, se trata de una base de datos de clave-valor y documentos para aplicaciones que deben acceder a los datos con baja latencia, dicho esto, si necesitas velocidad, DynamoDB es una gran opción, es capaz de responder en milisegundos. Es completamente escalable, básicamente disponemos de un almacenamiento ilimitado. Volviendo a relacionar con los demás servicios, lo normal es que una aplicación lea o escriba en una base de datos, por tanto, DynamoDB sería una alternativa para las aplicaciones que ejecutemos con AWS Lambda.
AWS API Gateway
Las API son sumamente importante en el desarrollo de software, en Cloud Computing y por supuesto, en AWS todo se comunica por API. API Gateway permite crear, gestionar y publicar las llamadas por API, tanto para servicios internos en AWS como servicios que estemos publicando hacia Internet. Por ejemplo, volviendo al caso de la aplicación desacoplada en servicios sin servidor, tenemos el Front-End en Amazon S3 y el Back-End en AWS Lambda, estos componentes se comunican por API, es ahí donde aparece la figura de API Gateway para facilitarnos las tareas y desde luego, aportarnos seguridad.
En la figura que tenemos a continuación, se muestra una arquitectura sencilla de una aplicación web con servicios sin servidor en AWS. Como puedes observar, los archivos estáticos del Front-End están alojados en Amazon S3, comunicándose por medio de API con el Back-End que se ejecuta en AWS Lambda, para la integración se utiliza Amazon API Gateway, y la base de datos se encuentra en Amazon DynamoDB.
Azure ofrece servicios con funciones similares a los servicios de AWS antes mencionados, no entraré en detalle en las diferencias, la idea es que tengas noción de las opciones disponibles en ambos proveedores.
Azure Functions
Es un servicio de cómputo para el desarrollo de aplicaciones sin servidor basadas en eventos y que también se puede integrar con otros servicios mediante triggers o desencadenadores. Como puedes comprobar, tiene cierta similitud con AWS Lambda.
Azure Container Instances
Es la solución sin servidor para ejecutar contenedores en Azure. Evidentemente, permite agilizar el desarrollo de aplicaciones, ya que elimina totalmente la necesidad de administrar máquinas virtuales para ejecutar los contenedores. Este es el servicio que podemos comparar con Fargate de AWS.
Azure Blob Storage
Es la solución de almacenamiento de objetos de Microsoft para guardar datos de texto y binarios. Similar a Amazon S3, es útil para diferentes escenarios, almacenamientos de copias de seguridad, logs, archivos multimedia, etc.
Azure Cosmos DB
Es un servicio de bases de dados no relacional o NoSQL con alta disponibilidad y capacidad para responder en milisegundos. Esta es la solución de Azure que podemos comparar con Amazon DynamoDB, igualmente, es importante para aplicaciones que requieren acceder a los datos y responder con baja latencia.
Azure API Management
Es el servicio de Azure que permite administrar las API para la interacción y comunicación entre componentes, imprescindible en una arquitectura de microservicios. Importante mencionar que no se limita a recursos internos en la nube de Azure, también se pueden gestionar de forma centralizada API de entornos híbridos y multicloud.
Realmente el uso Serverless es cada vez mayor y como has podido comprobar, los beneficios que nos aportan son importantes, dejar de preocuparse por aprovisionar servidores y administrar infraestructura, para concentrarse en el desarrollo de aplicaciones es genial, a la empresa le viene bien, ya que los equipos estarán ocupados más en la entrega rápida de productos que generen valor para los clientes.
Existe una variedad de servicios sin servidor para diferentes propósitos, pero que se pueden integrar entre sí para construir soluciones completas. Es claro, que nos los hemos mencionado todos, te invito indagar más sobre ello. En la plataforma de OpenWebinars encontraras contenido relacionado, incluyendo un curso completo de Serverless.
También te puede interesar
Tras el anterior artículo "Cloud Computing: Que és, características y ventajas", en este seguimos hablando sobre Cloud Computing, centrados en explicar los...
Conoce qué es Cloud Computing, para qué sirve, sus características y ventajas en este primer articulo de dos sobre fundamentos de la...
Descubre las tecnologías relacionadas con el Cloud Computing y el cambio de paradigma que se está produciendo