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...
Conoce las diferencias entre IaaS, PaaS y SaaS y cuál de estos servicios de cloud computing debes utilizar según las necesidades de tu proyecto o servicio.
Cuando una empresa se plantea la utilización de servicios de Cloud Computing es importante entender los diferentes tipos de nube y modelos de servicio ofrecidos: IaaS (Infraestructura como Servicio), PaaS (Plataforma como servicio) y SaaS (Software como servicio). Si todavía no tienes todos los conceptos acerca de la nube claros, es recomendable entender primero el Cloud Computing: Qué es, sus características y ventajas. Este artículo sirve como guía para entender sus diferencias principales con el objetivo de maximizar las ventajas de la computación en la nube en el desarrollo de software, despliegue de aplicaciones y optimización de recursos.
Un modelo de servicio va a definir el reparto de responsabilidades sobre los servicios desplegados entre el proveedor y el comprador o inquilino. Este modelo marca el grado de control y personalización disponible para el usuario, a la vez que establece la responsabilidad sobre el mantenimiento y nivel de administración sobre los servicios desplegados.
Al ofrecerse en este artículo solamente una breve introducción a los modelos de servicio, es recomendable realizar el Curso de introducción a Cloud Computing si se busca información más avanzada.
La Infraestructura como Servicio (Infraestructure as a Service) es un modelo en el que el proveedor de servicios cloud alquila infraestructura informática en un modelo de pago por uso. Este modelo tiene un gran parecido con la administración de un servidor físico, donde el proveedor mantendrá solamente actualizado el hardware, siendo responsabilidad del inquilino mantener el resto de capas del sistema (sistemas operativos, redes, aplicaciones…). El ejemplo más representativo de IaaS es el despliegue de una máquina virtual en la nube. Al ser el inquilino el responsable de capas como el sistema operativo o el runtime de la infraestructura, es necesario que realice toda la gestión de seguridad de las aplicaciones. Por este motivo se considera el IaaS uno de los servicios con menor seguridad, ya que esta depende del inquilino de la infraestructura alquilada.
En un modelo IaaS, el proveedor cloud nos asegura que la infraestructura va a existir y está protegida a nivel físico. No va a perder alimentación, ni nadie va a apagar por un descuido la refrigeración que mantiene los servidores en funcionamiento. Nos asegura una conexión a las redes deseadas y unos discos y servidores listos para su utilización. Por otra parte, nos obliga a instalar nuestros propios sistemas operativos, a actualizarlos y mantenerlos, a asegurar la ejecución de nuestros programas y los datos que usan. Si aparece una nueva vulnerabilidad que se resuelve con una actualización de una base de datos, es responsabilidad del cliente actualizar el sistema afectado. Este modelo tiene un riesgo de dimensionamiento, ya que es fácil quedarse corto en infraestructura y que las aplicaciones no funcionen correctamente, o pagar una infraestructura que no se necesita. Habitualmente el modelo IaaS tiene un coste de pago por uso en el que se paga en función de las horas que se tiene la infraestructura en funcionamiento.
Cuando un servicio tiene un modelo de Plataforma como Servicio, los inquilinos utilizan lo que se denomina un hospedaje administrado. Aunque la infraestructura subyacente siga estando compuesta por máquinas y almacenamiento, toda la responsabilidad sobre los sistemas operativos y los diferentes recursos de red recae sobre el proveedor cloud. Los inquilinos solamente tienen la responsabilidad de implementar las aplicaciones específicas deseadas. Por este motivo, este modelo de servicio es el más utilizado por los desarrolladores de software, permitiendo reducir al máximo los tiempos de aprovisionamiento y dimensionamiento de la estructura. Como ejemplo, si una empresa quisiera desplegar una aplicación web sin preocuparse por los requisitos de software y hardware físicos, podría hacer uso de diferentes servicios PaaS ofrecidos por los principales proveedores como App Services (Microsoft Azure), App Engine (Google Cloud) o Elastic Beanstalk (Amazon Web Services).
Cada vez surgen más soluciones PaaS centradas en el no-code o low-code, permitiendo su utilización y configuración sin necesidad de utilizar lenguajes de programación en el diseño y despliegue de programas.
En un modelo de Software como Servicio, el proveedor pone a disposición del inquilino una aplicación completamente gestionada. Todas las capas de infraestructura, red, almacenamiento, runtime, bases de datos etc. dependen completamente del proveedor. Este tipo de servicio está siendo ampliamente utilizado por su sencillez, ya que no requiere apenas conocimientos técnicos, es muy seguro, se despliega con muchísima agilidad y no requiere ninguna inversión inicial, siendo habitual el pago por uso de soluciones SaaS. Es importante diferenciar una solución SaaS de un producto de software con licencia tradicional, donde se requiere que el usuario se instale la aplicación en una infraestructura propia en vez de disponer de la aplicación ya en cloud, como es el caso del SaaS.
Por otra parte, hay soluciones en las que se requiere un alto nivel de personalización (sistemas de gestión de industrias verticales, aplicaciones industriales de interconexión a máquinas, etc.), y un modelo SaaS tiene como desventaja principal las limitaciones funcionales que tiene. Es habitual requerir modificaciones a los proveedores de soluciones SaaS, pero en la mayoría de modos de licenciamiento, todas las modificaciones funcionales de las aplicaciones se realizan mediante un sistema de versiones en las que el propietario del software va incluyendo nuevas funcionalidades en actualizaciones posteriores.
Pensemos en el ejemplo de la suite de soluciones de Google One o Microsoft 365. Ofrecen una serie de servicios cerrados, donde yo no puedo solicitar cambios a la hora de contratarlo (más allá de lo ofrecido por el fabricante en modo de paquetes). Si quiero una nueva funcionalidad, tendré que esperar a que el fabricante lance esa nueva funcionalidad en una versión actualizada de su SaaS.
Dentro de las soluciones SaaS se pueden hacer clasificaciones en función del mercado objetivo de la solución (B2B = Business to business vs B2C = Business to customer), y dentro de la categoría B2B podemos distinguir 2 grandes grupos en función de la especialización del cliente:
SaaS horizontal: se clasifican como tal aquellas soluciones que ofrecen una funcionalidad que responde a una necesidad compartida en el mercado por una amplia variedad de empresas. No se centra en resolver un problema específico de un sector o tipo de empresa, sino que proporciona una herramienta que da respuesta a un reto compartido. Un ejemplo de SaaS horizontal sería Salesforce como CRM (Customer Relationship Manager), una herramienta para administrar y analizar las interacciones entre empresa y clientes, o Asana, una aplicación para mejorar y optimizar la comunicación y colaboración en equipo en la gestión de proyectos.
SaaS vertical: esta categoría corresponde a todas las soluciones que dan una respuesta especializada a un nicho de empresas, ya sea por su actividad o por el mercado en el que se encuentran. Estas herramientas están desarrolladas habitualmente por empresas con un amplio conocimiento en el sector en el que se implantan, ya que dan respuesta a los pequeños detalles a los que se enfrentan este tipo de empresas. Dos ejemplos muy representativos son los sistemas de gestión de reparto de comida a domicilio como Cartafood o los SGA (sistemas de gestión de almacén) enfocados a productos específicos como la agricultura.
Toda empresa que inicie un proyecto nuevo sobre un entorno cloud va a tener que tomar la decisión de cuál modelo de servicio utilizar. La mejor forma de explicar las principales diferencias entre los modelos de servicio es a través del gráfico de asignación de responsabilidades de los modelos de servicio cloud. Este gráfico propone una serie de capas compartidas a todas las aplicaciones informáticas:
A continuación, se explican los elementos del gráfico:
Seguridad física: implica todas las labores de mantenimiento físico de los sistemas electrónicos. Funciones como la alimentación eléctrica, el control de acceso o control de temperatura son importantes para asegurar el funcionamiento de la solución.
Redes: conexión a redes públicas o privadas para el intercambio de información con otros sistemas informáticos. Esta capa conlleva altos niveles de seguridad como firewalls o proxys.
Almacenamiento: bases de datos, relacionales, estáticas, jerárquicas o cualquier otro sistema de almacenamiento de la información. Es un componente principal en cualquier aplicación informática y aunque el tamaño, eficiencia y consumo mejora cada año, sigue suponiendo de forma directa la utilización de infraestructura informática y sistemas electrónicos.
Servidores: los sistemas informáticos necesitan infraestructura sobre la que desplegar programas, lógica y sistemas operativos. Los servidores son computadoras conectadas que nos permiten el despliegue de soluciones software.
Sistema Operativo: antes de instalar programas y desplegar lógica, es importante tener un soporte donde poder hacerlo. Los sistemas operativos administran las funciones más básicas de los servidores y requieren de labores de mantenimiento, actualización, etc.
Ejecución: todo programa informático tiene que ser ejecutado sobre un servidor. En el diagrama se plasma la ejecución como la responsabilidad de mantener los programas en ejecución sin que se produzcan interrupciones que cesen dicha ejecución.
Datos: la responsabilidad de mantener la información generada por la ejecución de las aplicaciones es de gran importancia para asegurar el correcto funcionamiento de la solución.
Aplicaciones: este apartado hace referencia a la funcionalidad intrínseca de la aplicación, a lo que permite hacer a los usuarios, al tipo de información que ofrece, etc.
Uso: por último, el uso de una solución hace referencia a la utilización específica de cada compañía y al uso que hace de las aplicaciones y soluciones desplegadas. Dos sistemas software idénticos no se utilizarán de la misma forma por dos empresas diferentes.
Casillas en azul: responsabilidad del proveedor cloud.
Casillas en verde: responsabilidad del usuario o cliente.
Además de la asignación de responsabilidades, los modelos de servicio ofrecen diferentes niveles de flexibilidad, siendo las soluciones SaaS las que menos personalización y flexibilidad permiten frente al modelo IaaS, que ofrece libertad absoluta para la instalación de cualquier framework, librería o programa.
Cuando una empresa se enfrenta a la elección del modelo de servicio que mejores resultados genere en su negocio, hay que tener en cuenta el propio contexto de la empresa y del proyecto a implementar:
Recursos disponibles en la empresa: cada compañía tiene una situación particular que afecta de forma directa a los recursos que se pueden utilizar en un proyecto concreto. A nivel económico, todo modelo cloud ya elimina el gasto inicial (CAPEX) de un proyecto. Sin embargo, en un proyecto más sencillo y de menor envergadura va a tener una mejor ratio volumen-coste el modelo SaaS que el IaaS, ya que los tiempos de despliegue y el dimensionamiento de la infraestructura desaparecen. Por el contrario, cuando el proyecto escale a requerimientos más complejos (alta capacidad de procesamiento de información, grandes volúmenes de datos, alto número de usuarios, etc.) el modelo SaaS va a repercutir unos costes recurrentes (OPEX) mucho más altos que si se desarrolla la aplicación a medida bajo un modelo IaaS o PaaS.
Necesidades específicas de cada proyecto: según la verticalidad del proyecto y los requerimientos funcionales, es recomendable la utilización de un modelo u otro. Si ya existe un sistema complejo desarrollado, por ejemplo, un software de gestión de inventario, es habitual que este se ofrezca solamente en modelo SaaS, por lo que su utilización va a tener un mejor resultado que el desarrollo propio y a medida de un nuevo sistema partiendo desde cero.
Grado de especialización de los equipos: para abordar un proyecto en modo IaaS hace falta contar con un equipo especializado en su gestión y mantenimiento, ya que en caso contrario se expone a brechas de seguridad por falta de actualizaciones o a interrupciones en el funcionamiento del sistema.
Proveedor de servicios de IT: si para el desarrollo de un proyecto se va a contar con un proveedor de servicios de tecnologías de la información, es habitual decantarse por modelos PaaS o IaaS al existir un equipo formado y profesional capaz de administrar, securizar y mantener las soluciones desplegadas.
En el siguiente ejemplo se muestra un proceso de decisión basado en las características comentadas:
Una empresa quiere implantar un sistema de gestión de recursos humanos para realizar labores de control de jornada, reconocimientos médicos, prevención de riesgos laborales y formación además de otras funcionalidades. Cuenta con un equipo de IT reducido con conocimientos en sistemas informáticos y decide desarrollar su propio módulo contando con su proveedor de servicios de desarrollo IT habitual. Una vez desarrollada, el propio equipo interno mantendrá la infraestructura de la solución.
¿Qué modelo debería elegir para desplegar la solución?
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