Bloques de creación de la nube

Completado

La informática en la nube ofrece el uso de recursos informáticos como servicio mediante la red. Por supuesto, no todos los requisitos de servicio son idénticos. Algunos usuarios de la nube solo desean tener acceso a la infraestructura sin procesar en la que crear aplicaciones. Otros tal vez no deseen ocuparse de la infraestructura en absoluto, sino simplemente desarrollar e implementar aplicaciones en una plataforma, por ejemplo, un servidor web, proporcionada por el proveedor de servicios. Otros usuarios utilizan la nube como un vehículo para implementar aplicaciones a las que los usuarios acceden mediante un explorador sin instalar nada en sus equipos, lo que se conoce como "instalaciones de huella cero". Cada uno de estos escenarios constituye un modelo de servicio en la nube. Y como se verá, cada modelo de servicio tiene un nombre conocido en el léxico de la informática en la nube.

Antes de analizar los modelos de servicio, vamos a pensar en los niveles de hardware y software que forman la base de la entrega de servicios en la nube mediante los distintos modelos de servicio.

Bloques de creación en la nube

La figura 1.5 proporciona una útil abstracción de la informática en la nube dividiéndola en cuatro niveles: software de aplicaciones, plataformas de desarrollo, uso compartido de recursos e infraestructura. El nivel de infraestructura incluye los recursos físicos en un centro de datos. La capa de uso compartido de recursos utiliza una combinación de hardware y software para facilitar el uso compartido de los recursos físicos, a la vez que ofrece un cierto nivel de aislamiento. El nivel de plataforma de desarrollo proporciona compatibilidad funcional para aplicaciones en la nube. Por último, la capa de software de la aplicación hospeda las propias aplicaciones.

Figure 1.5: Cloud computing building blocks.

Figura 1.5: Bloques de creación de la informática en la nube.

Las cuatro capas se pueden cuantificar más de esta manera:

Software de aplicación: La capa superior de la pila es el software de la aplicación, que normalmente es el componente del sistema que el usuario final emplea.

Plataformas de desarrollo: La capa siguiente, las plataformas de desarrollo, permite a los desarrolladores de aplicaciones escribir software de aplicaciones mediante la interfaz de programación de aplicaciones (API) del proveedor de nube. Cada plataforma en la nube proporciona API que se pueden llamar que los desarrolladores pueden utilizar para acceder al almacenamiento en la nube, autenticar usuarios y realizar otras tareas necesarias.

Uso compartido de recursos: La tercera capa, los mecanismos de uso compartido de recursos, incorpora algunas ideas clave de la nube:

  • proporcionar servicios de software, cálculo, red y almacenamiento.
  • Permite un entorno compartido en el que se pueden ejecutar en paralelo varias imágenes de hardware (por ejemplo, máquinas virtuales) e imágenes del sistema (por ejemplo, sistemas operativos) en un solo servidor, junto con los aislamientos de seguridad, recursos y errores.
  • Consolide los servidores físicos en servidores virtuales que se ejecutan en menos servidores físicos.
  • Ofrezca agilidad y elasticidad para responder rápidamente a las demandas de recursos y servicios de los usuarios.

Estas ideas suelen entregarse mediante la virtualización, que se basa en una combinación de software y firmware para crear máquinas virtuales que funcionan como si fueran máquinas físicas independientes, incluso en casos donde varias máquinas virtuales se hospedan en un único servidor físico.

Infraestructura: Los recursos físicos comprenden el nivel inferior y, en la informática en la nube, se implementan principalmente en el lado del proveedor de nube. Entre las amplias clases de recursos se incluyen las siguientes:

  • Recursos de proceso, normalmente servidores, que son equipos diseñados para la informática empresarial (en contraposición a estaciones de trabajo de usuario). Normalmente están montados en bastidor para que utilicen el espacio de forma eficaz.
  • Los recursos de almacenamiento mantienen los datos en la nube y el uso de estos recursos normalmente se cobra en términos de volumen, por ejemplo, la carga por gigabyte o terabyte de almacenamiento consumido.
  • Los recursos de red permiten la comunicación entre servidores, así como servidores y clientes.
  • Software que administra la infraestructura de proceso, red y almacenamiento.

A continuación, vamos a analizar los modelos de servicio en la nube más populares y cómo las abstracciones que se han comentado anteriormente facilitan su entrega.

Modelos de servicio en la nube

Los servicios ofrecidos por los proveedores de nube se dividen en tres categorías conocidas como modelos de servicio:

  • IaaS, que es la abreviatura de infraestructura como servicio
  • PaaS, que es la abreviatura de plataforma como servicio
  • SaaS, que es la abreviatura de software como servicio

En la figura 1.6 se muestran las diferencias. En un entorno informático tradicional (no en la nube), el usuario es el propietario del hardware y del software, y es responsable de la implementación y el mantenimiento. Si un servidor necesita más RAM, el usuario es responsable de la instalación; si un sistema operativo requiere revisiones, es responsabilidad suya. Con IaaS, por el contrario, el proveedor de servicios en la nube proporciona el hardware virtualizado en forma de máquinas virtuales. Con unos cuantos comandos o clics de botón, puede crear una máquina virtual completa con un sistema operativo. Es responsable de mantener el sistema operativo revisado e instalar y mantener el software que se ejecuta en la máquina virtual. Pero ya no es responsable de mantener el hardware.

Figure 1.6: Cloud service models.

Figura 1.6: Modelos de servicio en la nube.

PaaS va un paso más allá y ofrece una plataforma para desarrollar y ejecutar aplicaciones que el usuario instala y mantiene. En gran medida, el proveedor de nube asume la responsabilidad de mantener la propia plataforma. Un buen ejemplo de un servicio en la nube PaaS es Azure App Service, que proporciona una o más máquinas virtuales completas con un sistema operativo (Windows o Linux), un servidor web como Internet Information Services (IIS) y una pila en tiempo de ejecución como Node.js, PHP o ASP.NET Core para hospedar sitios web y aplicaciones web. También ofrece escalado automático y equilibrio de carga integrado. En resumen, proporciona una plataforma completa para hospedar aplicaciones web y le permite centrarse en la escritura de aplicaciones en lugar de instalar y mantener el hardware y software.

SaaS proporciona una plataforma totalmente administrada para realizar tareas específicas. Las aplicaciones de correo web son ejemplos de SaaS; el usuario se conecta con un explorador y realiza tareas de correo electrónico sin necesidad de instalar nada en el equipo. Normalmente no sabe ni presta atención al tipo de servidor, real o virtual, o lo que se instala en él. El proveedor de nube realiza tareas como la actualización y la revisión del software, de ahí el término totalmente administrado.

Vamos a explorar estos términos con más detalle, ver cómo se aplican a los servicios disponibles en las plataformas en la nube modernas y comprender los criterios para elegir un modelo de servicio.

El modelo de infraestructura como servicio

Infraestructura como servicio

(definición) Infraestructura como servicio (IaaS) es un modelo de informática en la nube en el que los proveedores de nube hacen que los recursos informáticos estén disponibles para los clientes, normalmente en forma de máquinas virtuales.

En el modelo IaaS, los proveedores alquilan recursos de proceso en forma de máquinas virtuales (también conocidas como "instancias") y le permiten elegir entre una amplia variedad de configuraciones, por ejemplo, CPU, memoria, disco y ancho de banda de red. Una vez que se aprovisiona una máquina virtual, el usuario de IaaS puede conectarse de forma remota a ella e instalar plataformas y aplicaciones. Este modelo ofrece la máxima flexibilidad a los usuarios de IaaS en cuanto a desarrollo de software e implementación. En lugar de adquirir servidores, software, espacio del centro de datos o equipo de red, los usuarios alquilan estos recursos como un servicio totalmente subcontratado a petición.

IaaS tiene las siguientes características:

  • Los recursos informáticos se proporcionan a los usuarios como servicio.
  • Los proveedores de IaaS proporcionan herramientas que permiten a los usuarios de IaaS escalar los recursos que implementan.
  • Los proveedores de IaaS normalmente tienen diferentes ofertas de recursos en costos diferentes y siguen un modelo de precios de la utilidad (normalmente calculado por hora).
  • Los mismos recursos físicos se comparten entre varios usuarios.

Ejemplos de IaaS

Amazon Web Services, Microsoft Azure, Google y Rackspace son ejemplos de plataformas en la nube que ofrecen productos IaaS. Elastic Compute Cloud (EC2) de AWS era uno de los primeros productos de IaaS con éxito comercial. AWS EC2 alquila las instancias de varios centros de datos dispersos por todo el mundo. Los usuarios pueden elegir entre varios tipos de instancias, desde máquinas virtuales de poca memoria y de una sola CPU que cuestan unos pocos dólares estadounidenses al mes, hasta las instancias multiplataforma, de alto rendimiento y aceleradas por GPU que cuestan varios cientos de dólares al mes. El servicio de máquinas virtuales de Azure es similar y admite Linux y Windows. A partir de septiembre de 2018, aproximadamente la mitad de las máquinas virtuales que se incorporaron en Azure eran máquinas virtuales Linux 1.

Modelos de precios

IaaS suele tener un precio por hora. Por ejemplo, EC2 ofrece un espectro de recursos de proceso como instancias de sistema operativo virtualizado, que varían en cuanto al proceso, la memoria, el almacenamiento y el ancho de banda. En el momento de redactar este documento, una instancia de Amazon EC2 T2. micro, que incluye una CPU virtual y 1 GB de memoria, cuesta aproximadamente 1,2 céntimos por hora al ejecutar Linux. Una máquina virtual B1S aproximadamente equivalente en Azure cuesta más o menos 0,8 céntimos por hora. Dentro de los límites, ambos se pueden usar de forma gratuita durante 12 meses como máximo.

Los proveedores de servicios en la nube también pueden optar por facturar según una base prorrateada o no prorrateada. En una base prorrateada, cada hora parcial se factura parcialmente, mientras que, sin prorratear, cada hora parcial se factura como una hora completa. Esta diferencia es importante cuando los usuarios de IaaS necesitan un gran número de instancias durante un breve período para el procesamiento de ráfagas. Hoy en día, los proveedores de servicios en la nube más populares facturan la mayoría de las máquinas virtuales por segundo.

Casos de uso para IaaS

IaaS tiene sentido en una serie de situaciones:

  • Para las nuevas organizaciones que no tienen el capital invertido en la infraestructura en el sitio.
  • Cuando las organizaciones necesitan aumentar sus recursos de TI rápidamente, como las compañías startup de Internet.
  • Para proyectos temporales o necesidades de infraestructura temporales (cuando las organizaciones requieren una gran cantidad de capacidad de proceso durante un período limitado).
  • Cuando las organizaciones mueven cargas de trabajo locales a la nube mediante la realización de una migración mediante lift-and-shift de servidores físicos o virtualizados existentes.

Es posible que IaaS no sea la mejor opción cuando:

  • El cumplimiento normativo no permite que las cargas de trabajo se ejecuten de forma local.
  • Las aplicaciones tienen requisitos estrictos de calidad de servicio (QoS).
  • Las organizaciones tienen una infraestructura personalizada interna para satisfacer sus necesidades de TI.

Modelo de plataforma como servicio

Plataforma como servicio

(definición) La plataforma como servicio (PaaS) es un modelo que proporciona una plataforma de software como un servidor de base de datos o un servidor web sin la complejidad de comprar, instalar y mantener el hardware y el software subyacentes.

PaaS desplaza la carga de la instalación y el mantenimiento del usuario al proveedor de nube. Azure SQL Database, que es esencialmente una versión de PaaS de Microsoft SQL Server en la nube, proporciona un punto de referencia útil para la comparación de IaaS y PaaS. Para ejecutar SQL Server en un escenario de IaaS, debe implementar una máquina virtual y, después, conectarse a ella de forma remota e instalar SQL Server. Por supuesto, sería responsable de adquirir una licencia de SQL Server y mantener SQL Server revisado y actualizado. Con Azure SQL Database, simplemente se crea una instancia del servicio; la licencia y el mantenimiento están integrados.

Las ofertas de PaaS varían entre los proveedores, pero normalmente contienen una funcionalidad básica, que incluye:

  • Una interfaz de usuario basada en web para usar y configurar la plataforma.
  • Una arquitectura multiempresa en la que varios usuarios simultáneos usan las mismas herramientas.
  • Mecanismos integrados que permiten a la plataforma escalar dinámicamente para satisfacer la demanda.

Ejemplos de PaaS

Google App Engine es un ejemplo de PaaS. Con las API de Google, los desarrolladores pueden crear aplicaciones web y móviles que se ejecuten en la infraestructura de Google. Azure App Service es otro ejemplo, al igual que AWS Elastic Beanstalk, que proporciona una plataforma administrada para hospedar las aplicaciones desarrolladas con Go, Java, .NET, Node.js, PHP, Python y Ruby. Los proveedores de nube suelen ofrecer bases de datos populares como MySQL, Oracle y SQL Server como servicios PaaS.

Una de las innovaciones más recientes en PaaS es la de informática sin servidor, en la que el proveedor de nube proporciona una plataforma totalmente administrada para ejecutar el código. Azure Functions, por ejemplo, permite cargar código escrito en C#, JavaScript, Java o Python en Azure y ejecutarlo en respuesta a desencadenadores predefinidos. Amazon ofrece un servicio similar en forma de AWS Lambda, al igual que Google en Google Cloud Functions.

Otro ejemplo de PaaS que está ganando popularidad rápidamente es el que ejecuta contenedores de Docker en la nube. En este caso, la plataforma es una pila de Docker pregenerada. La ejecución de aplicaciones en contenedor de esta manera evita tener que implementar servidores e instalar y mantener el entorno de ejecución de Docker. Simplemente debe apuntar el servicio de contenedor a una imagen de contenedor en un registro de contenedor y permitir que el proveedor de servicios en la nube haga el resto. Las plataformas en la nube modernas admiten sus propios registros de contenedores compatibles con Docker, lo que permite que los contenedores se inicien más rápidamente al colocar las imágenes de contenedor y los contenedores que los ejecutan en el mismo centro de datos.

Modelos de precios

A diferencia del modelo de precios de IaaS, que normalmente se factura por hora, el de PaaS normalmente se calcula según el uso. Para simplificar la facturación y hacer que los costos sean más predecibles, los proveedores de servicios en la nube suelen ofrecer niveles de servicio que incluyen características específicas y cantidades de uso de recursos para un precio por hora o mensual específico.

A medida que PaaS evoluciona, también evolucionan los modelos de precios. Por ejemplo, Azure Functions, Amazon Lambda y Google Cloud Functions ofrecen un modelo de precios basado en el consumo en el que solo se paga por el tiempo que se ejecuta una función, y no por el tiempo que se pasa esperando a que la función se desencadene de nuevo. Esto resulta muy ventajoso desde una perspectiva de costos para las operaciones que se producen con poca frecuencia y se ejecutan durante períodos de tiempo relativamente cortos, como copias de seguridad nocturnas o ejecuciones de facturación semanales.

Casos de uso para PaaS

PaaS es un modelo atractivo para determinados tipos de aplicaciones, como:

  • Escenarios de desarrollo rápido de aplicaciones.
  • Aplicaciones que requieren una infraestructura basada en web para controlar las distintas cargas de los usuarios.
  • Es posible que las aplicaciones que no necesiten volver a implementarse o se puedan migrar a otras plataformas en el futuro.

Hay algunos escenarios en los que es posible que PaaS no sea lo ideal, como:

  • Cuando la aplicación debe ser muy portátil en cuanto a dónde se hospeda, ya que las API de PaaS pueden variar de un proveedor de PaaS a otro.
  • Cuando los lenguajes o las API patentados podrían afectar al proceso de desarrollo o causar problemas en el futuro debido al bloqueo del proveedor.
  • Cuando el rendimiento de la aplicación requiere la personalización del hardware y el software subyacentes.

Modelo de software como servicio

Software como servicio

(definición) Software como servicio (SaaS) es un modelo de entrega de software en el que el software se hospeda en la nube. La infraestructura, la plataforma y el propio software están administrados por el proveedor de nube y el software se usa como servicio.

SaaS es el modelo en el que el proveedor de servicios en la nube proporciona el software como un servicio de Internet, lo que no requiere la instalación ni el mantenimiento de software por parte del usuario. En los casos en que las aplicaciones SaaS son aplicaciones de usuario final, los usuarios acceden al software mediante los exploradores. El explorador carga la versión más reciente de la aplicación SaaS de forma dinámica y transparente.

SaaS se ha convertido en un modelo de entrega de software común para muchas aplicaciones empresariales, como contabilidad, colaboración, administración de relaciones con clientes (CRM), sistemas de información de administración (MIS), planeamiento de recursos empresariales (ERP), facturación, administración de recursos humanos (HRM), administración de contenido (CM) y administración del departamento de servicios.

Con SaaS, el proveedor mantiene el software y la infraestructura para ejecutarlo. El proveedor desarrolla de forma rutinaria el software y las mejoras se ponen a disposición de todos los usuarios cada vez que inician sesión en el servicio. Además, los datos de aplicación que resulten del uso del servicio residen en la nube y están disponibles para el usuario desde cualquier ubicación.

Una gran mayoría de las soluciones de SaaS se basan en lo que se conoce como arquitectura multiempresa. En esta arquitectura, se usa una versión única de la aplicación, con una única configuración, para todos los clientes (denominados inquilinos). Para permitir que el servicio se escale bien, puede instalarse en varios servidores del lado del proveedor. El escalado dinámico se utiliza para permitir a más usuarios usar el servicio a medida que se hace más popular.

Las características típicas de SaaS incluyen:

  • Acceso basado en web al servicio de software.
  • El proveedor de la nube administra el software desde una ubicación central.
  • El software se entrega en un modelo de uno a varios en el que "uno" es el proveedor de nube y "varios" son los usuarios de la nube.
  • El proveedor de nube controla las actualizaciones y revisiones de software.

Ejemplos de SaaS

El correo web es uno de los primeros ejemplos de SaaS. El correo web permite a los usuarios que disponen de un explorador y una conexión a Internet acceder al correo electrónico en cualquier momento. Las ofertas de Hotmail, Yahoo! y Gmail son muy populares. Estos servicios se basan en el modelo "freemium", donde los servicios básicos son gratuitos y hay características más avanzadas disponibles con una suscripción. Además, los proveedores obtienen ingresos principalmente de los anuncios que se muestran a los usuarios cuando usan el servicio.

Otro ejemplo popular de SaaS son los conjuntos de trabajo ofimático en línea, como Google Drive y Microsoft 365, que permiten a los usuarios crear, editar y compartir documentos en línea. Google emplea el modelo "freemium" para usuarios individuales. Microsoft tiene un modelo de cargos basado en las características requeridas y en el número de usuarios al mes.

Los servicios SaaS no siempre se crean para servir a los usuarios finales directamente mediante la oferta de interfaces de usuario web. Por ejemplo, Azure Stream Analytics y su análogo de AWS, Amazon Kinesis Analytics, ingieren el flujo de datos desde las aplicaciones o los dispositivos IoT y permite a los desarrolladores extraer información de los flujos de datos mediante consultas SQL. Se usan con frecuencia para crear soluciones completas más amplias y sofisticadas mediante su combinación con otros servicios de SaaS.

Cada vez más, los proveedores de nube ofrecen API, es decir, funciones a las que se llama mediante Internet con el protocolo HTTP (S) y que actúan como bloques de creación de aplicaciones, como servicios SaaS. Un ejemplo es la API Computer Vision de Azure, que permite a los desarrolladores escribir código que identifica los objetos de las fotos, genera leyendas y metadatos de búsqueda para fotos, busca caras en las fotos y mucho más con la inteligencia artificial (IA). Amazon ofrece una API similar denominada Rekognition, mientras que Google llama a su oferta Vision API. Las API de inteligencia que se ofrecen en forma de servicios SaaS permiten a los desarrolladores de software infundir la inteligencia artificial en sus aplicaciones sin tener que convertirse en expertos de IA y ejemplificar la evolución continuada de la informática en la nube.

Modelos de precios

A diferencia del software tradicional, que se vende en el modelo de licencias de software (con un costo de licencia inicial y una cuota de soporte técnico continua opcional), los proveedores de SaaS suelen determinar los precios de las aplicaciones que usan una cuota de suscripción mensual o anual. Este modelo permite a SaaS cumplir una de las principales ventajas de la informática en la nube: reducir el gasto de capital o el costo inicial del software. Los proveedores de SaaS normalmente realizan el cargo en función de los parámetros de uso, como el número de usuarios que utilizan la aplicación.

En el caso de las API que se entregan con el modelo SaaS, la facturación normalmente se realiza por llamada. Los proveedores en la nube suelen ofrecer un cierto número de llamadas o transacciones al mes, con una tarifa plana y cobrar una tarifa con un ligero descuento para la actividad que supere ese umbral.

Casos de uso para SaaS

SaaS es el modelo adecuado para determinados tipos de aplicaciones, como:

  • Aplicaciones que están bastante estandarizadas y no requieren soluciones personalizadas. El correo electrónico es un buen ejemplo de una aplicación bastante estandarizada.
  • Aplicaciones que tienen una necesidad importante de acceso remoto/web/móvil, como el software de administración de ventas móviles.
  • Aplicaciones que tienen una necesidad a corto plazo, como software de colaboración para un proyecto determinado.
  • Aplicaciones en las que la demanda tiene aumentos significativos puntuales, como software de impuestos o de facturación que se utiliza una vez al mes.

Aunque hay situaciones en las que es posible que SaaS no sea la elección adecuada, tales como:

  • Aplicaciones que requieren acceso sin conexión a los datos.
  • Aplicaciones que requieren una importante personalización.
  • Aplicaciones cuyas directivas o normativas impiden que los datos se hospeden externamente.
  • Aplicaciones cuyas soluciones internas existentes satisfacen todas las necesidades de la organización.

Referencias

  1. ZDNet (2018). Linux ahora domina Azure. https://www.zdnet.com/article/linux-now-dominates-azure/

Comprobación de conocimientos

1.

¿De qué capa es un ejemplo el software de administración de las relaciones con el cliente (CRM) en los bloques de creación de la nube?

2.

¿De qué capa es un ejemplo el software de virtualización en los bloques de creación de la nube?

3.

¿De qué modelo de servicio en la nube es un ejemplo una máquina virtual?

4.

De los siguientes elementos, ¿cuál se considera una característica de IaaS?

5.

Google App Engine (GAE) es un ejemplo de PaaS. ¿Cuál de las siguientes afirmaciones sobre GAE es incorrecta?

6.

Los proveedores de servicios en la nube ofrecen tiempos de ejecución de la función como Azure Functions para ejecutar código que carga en la nube en un entorno sin servidor. ¿A qué modelo de servicio pertenecen los tiempos de ejecución de la función?

7.

¿Cuál de las siguientes tareas es la mejor opción para Azure Functions, AWS Lambda y Google Cloud Functions?