Los servicios en la nube ☁️ son programas que se alojan en un servidor, accesibles desde cualquier dispositivo conectado a Internet y todos ellos ofrecen al usuario final unas funcionalidades y capacidades adecuadas a necesidades específicas.
Hace unos pocos años no podíamos llegar a pensar en disponer por ejemplo de un cluster de bigdata en unos minutos o incluso algo mucho más simple como un servidor de aplicaciones, configurado y preparado para ejecutar solamente con un click. Ahora este tipo de servicios nos proporcionan unas ventajas notables, ya que su uso no está restringido a un solo equipo físico, y la seguridad, capacidad de almacenamiento y recursos de la nube son mayores que los de un ordenador tradicional.
Los servicios en la nube son conocidos por su especial nomenclatura, con el ya conocido formato “as a Service” que de forma genérica se representan por XaaS, básicamente “Cualquier cosa como servicio”.
En este post te voy a contar el significado de los servicios más comunes y utilizados hoy en día, aunque cada vez los proveedores de nube poseen más y más servicios específicos y van surgiendo nuevos servicios y nomenclaturas asociadas. Los más comunes y conocidos por los usuarios de Nube son IaaS, PaaS, SaaS, CaaS o FaaS.

IaaS (Infrastructure as a Service) ?
Este servicio se basa en que el proveedor “alquila” la infraestructura y le da al cliente la posibilidad de controlarla casi en su totalidad. Podríamos elegir o seleccionar los recursos de la maquina (como procesador, memoria RAM, disco duro…) en función de las necesidades.
Existen una serie de sabores o “flavours” por defecto, que permiten seleccionar estas características bajo un plan concreto que se corresponde a su vez con un coste dependiendo de los mismos.
El modelo más usual de facturación es el de pago por uso, pudiendo tener el control de los costes basándonos en que solamente nos cobrarán el tiempo que la máquina esté en uso, y no se facturará siempre que esté apagada. Este modelo es una ventaja notable para las grandes empresas, ya que reduce los costes tanto de hardware como de mantenimiento de la infraestructura. Además el proveedor se encarga de mantener el hardware actualizado de forma transparente.
Si hacemos uso de este modelo, solamente tendremos que seleccionar el Sistema Operativo con el que queramos trabajar, y a partir de ese momento seremos los usuarios administradores de la misma, pudiendo hacer uso de los recursos asignados libremente e instalar o modificar lo que queramos.
Si en cualquier momento necesitamos escalar las capacidades, es posible hacerlo tanto verticalmente (cambiando de “flavour”), como horizontalmente (básicamente crear un “clon” de la máquina original que se comporte del mismo modo y pueda descargar las peticiones entrantes a la primera, funcionando como un cluster).
Si hablamos de un IaaS Privado, se mantienen todas las ventajas excepto el ahorro del coste de instalación, mantenimiento o el upgrade del hardware.

PaaS (Platform as a Service) ⚙️
PaaS o Plataforma como Servicio, proporciona una plataforma y un entorno que permite a los desarrolladores crear aplicaciones y servicios. El proveedor a su vez proporciona diferentes herramientas, con distintos niveles de complejidad para el usuario final, que permiten crear y disponibilizar las aplicaciones en este modelo.
Utilizando estos servicios, un desarrollador no necesita inversión en infraestructura, ni tiempo en su administración, lo que facilita centrarse en el desarrollo de aplicaciones, mejorando el time to market y reduciendo el conocimiento a nivel de sistema operativo o middleware.
Un ejemplo de PaaS seria un WebApp de Azure o ElasticBeanstalk de AWS , donde se nos ofrece un “servidor de aplicaciones” ya instalado y preconfigurado, capaz de correr con un par de configuraciones varios tipos de software, desarrollados con tecnologías diferentes.
FaaS (Functions as a Service) ⌨️
FaaS, o Funciones como Servicio, también conocidos como Serverless.
Estos servicios permiten la ejecución de aplicaciones a través de contenedores que se crean en el momento necesario para su ejecución, de manera que el desarrollador no se ha de preocupar de la gestión de la infraestructura sobre la que se ejecuta su función, centrándose, por tanto, en la funcionalidad.
Esto simplifica mucho el ciclo de desarrollo y favorece el uso de arquitecturas basadas en microservicios, facilitando el ciclo de vida y los despliegues continuos.
Utilizando este tipo de servicios se reducen los costes de infraestructura y es importante conocer que solo se generan costes cuando se utiliza el servicio, es decir, solo durante el tiempo que se ejecuta la función. Normalmente los costes asociados a estos servicios son solamente por gasto de computación o CPU durante ese tiempo.
Ejemplos son: Azure Functions , AWS Lambda o Google Cloud Functions.

CaaS (Container as a Service) ?
Contenedores como servicio (CaaS) se refiere a un servicio en la nube que permite a los desarrolladores de software y equipos de operaciones crear, organizar, ejecutar, escalar, administrar y detener contenedores mediante la virtualización basada en contenedores (docker). Un proveedor de CaaS proporcionará comúnmente un marco que permite a los usuarios hacer uso del servicio.
Ejemplos de plataformas de orquestación de contenedores CaaS son Kubernetes , Docker Swarm o Apache Mesos. Encontramos recientemente servicios como AKS, ARO o EKS donde tanto Azure como AWS nos dan un entorno con estas capacidades, basándose en Kubernetes o en RedHat Openshift por ejemplo.
¿Existen más servicios de este tipo? ?
Como decíamos en las primeras líneas, los servicios van creciendo prácticamente por días, y realmente cualquier servicio que podamos imaginar es posible que tenga ya una implementación existente en cualquiera de los proveedores de nube que existen en el mercado. Conceptos como Bakup as a Service, Monitoring as a Service, Storage as a Service, etc… existen, y un sinfín de ellos más.

¿Cuál es el mejor o el más completo? ?
Eso depende y mucho de las necesidades de quien lo vaya a utilizar, cada uno tiene sus ventajas y hay que analizar muy bien cuál es nuestro caso particular antes de decidirse por cualquiera de ellos.
Lo mejor es que todos estos tipos están disponibles en el mercado, y además en varios proveedores diferentes de nube, pudiendo utilizarlos de forma combinada en una arquitectura que pueda compaginar lo mejor de cada uno de ellos, ya sea exclusivamente en nube pública o híbrida.
En Santander hacemos uso de todos ellos, así como de nuestra cloud privada para diferentes servicios y clientes. Todo esto mezclado con las metodologías Agile y DevOps y las herramientas adecuadas de desarrollo y ciclo de vida del Software (ALM), nos proporcionan un entorno moderno, adaptado a las nuevas tecnologías y colaborativo donde crecer y ser cada vez más fuertes tecnológicamente.