Tecnologías y proveedores de nube (Cloud)

Las tecnologías cloud tienen cada día más protagonismo. Las empresas cada vez tienen menos infraestructura propia, y recurren a proveedores de nubes públicas (public cloud) donde hospedar su infraestructura y aplicaciones, o bien, la infra que puedan mantener bajo su propiedad lo realizan utilizando tecnologías de nube privada (private cloud).

Este cambio de paradigma que se lleva dando desde hace varios años, tiene implicaciones de todo tipo, como los skills necesarios en las empresas para poder satisfacer estas nuevas necesidades con tecnologías cloud. También afecta en la forma de trabajar de las compañías, facilitando una forma más ágil, y por supuesto, también tiene implicaciones de seguridad.

Tecnologías y proveedores de nube (Cloud)

Photo by Taylor Vick on Unsplash

¿Qué es y para qué sirve la nube (cloud)?

La nube ofrece una infraestructura informática virtualizada y distribuida, que permite acceder y utilizar recursos computacionales, almacenamiento y servicios a través de Internet. El cloud proporciona una manera ágil (fácil y rápida), flexible y escalable de acceder a estos recursos, y permite abstraerse del hardware y de otros muchos detalles, configuraciones, etc.

Es en esta infraestructura de nube, donde las empresas alojan sus aplicaciones, almacenan sus datos, y ejecutan sus procesos, de manera eficiente, sin preocuparse por la gestión física de la infraestructura (ej: temperatura y aire acondicionado el CPD, sistemas de alimentación ininterrumpida, reposición de las cintas de backup, parchado de los enclosures y de la electrónica de red, subidas de versión del firmware de las cabinas de almacenamiento, etc).

El cloud ha transformado la forma en que se desarrollan, despliegan y gestionan las aplicaciones, brindando una mayor agilidad y eficiencia a las empresas.

Cuáles son las ventajas de la nube?

El éxito de la nube y su rápida adopción, es debido a las diferentes ventajas que proporciona el cloud, que se podrían generalizar y resumir en la siguiente lista:

  • Escalabilidad. La nube permite escalar recursos fácilmente hacia arriba o hacia abajo, sea escalado horizontal (más instancias) o vertical (más capacidad), según las necesidades. Se trata de un enfoque mucho más dinámico o elástico que la forma en la que se trabajaba antes de la llegada de la nube.
  • Acceso remoto y colaboración. El acceso a los recursos puede hacerse desde cualquier lugar con conexión a Internet, facilitando el trabajo remoto y la colaboración en equipos geográficamente distribuidos.
  • Eficiencia de costes. El pago de los recursos utilizados se hace en base al uso (pay-as-you-go), lo que permite optimizar el coste de diferentes formas, ya sea levantando la infra sólo en los momentos necesarios (ej: apagados nocturnos y de fin de semana), reservar recursos de larga duración a cambio de un mejor precio, o utilizar los recursos sobrantes del proveedor de nube a un precio más bajo pero con menor garantía de disponibilidad (instancias spot).
  • Parcheado, actualizaciones, y coste de mantenimiento. La nube se encarga de las actualizaciones de hardware y software, y de su parcheado, de forma transparente para las aplicaciones y sistemas que ejecutan, lo cual minimiza el coste de mantenimiento de la infrastructura.
  • Alta disponibilidad. El cloud ofrece redundancia y replicación entre distintos centros de procesamiento de datos, lo que garantiza de forma transparente, la disponibilidad de las aplicaciones y servicios que se ejecutan sobre ella.
  • Seguridad. Los proveedores de cloud proporcionan muchos mecanismos y servicios de seguridad, que facilitan el mantenimiento de una infraestructura segura, fundamental al estas expuesta en Internet. Por ejemplo el cifrado de datos en tránsito y en reposo, la autenticación multifactor (MFA), las auditorías, o el envío de eventos a servicios de tipo SIEM, son algunos de los ejemplos.
  • Backup. La configuración y mantenimiento de la infraestructura de backup es una tarea tediosa que poco aporta a negocio, sin quitarle la importancia que tiene. Simplemente gestionar la disponibilidad de medios de almacenamiento (cintas) para los robots de backup, o su almacenamiento en cámaras inífugas o en ubicaciones alternativas, son tareas rutinarias, poco cercanas a negocio (más aún, para el negocio, son una distruacción). Los servicios en la nube tienen la ventaja de ofrecer un backup sencillo, y abstraerse de todos estos detalles de bajo nivel.
  • Multi-Región. Poder crear nuestra infraestructura eligiendo su ubicación geográfica, de forma transparente, es otra de las ventajas del uso de las tecnologías de nube (cloud). Más aún, cuando se necesita construir una aplicación que deseamos ofrecer en diferentes zonas geográficas, ya sea por temas de mejor disponibilidad, menores latencia, o simplemente por motivos legales.

Esta podría ser una primera lista de beneficios de la nube, aunque realmente hay muchas más cosas según se quiera enfocar.

Por ejemplo, la inmediatez es otra de las ventajas del cloud bastante importante, implícita en la lista anterior. El hecho de que llegue una nueva oportunidad o proyecto, y poder crear rápidamente toda la infra necesaria en la nube, para poner todo en marcha, es fundamental.

Nube pública y privada (public cloud vs private cloud)

La nube pública (public cloud) y la nube privada (private cloud) son dos formas de implementar una nube que difieren en la forma en que los recursos son administrados y sobretodo en el propietarios de los mismos.

Núbe pública (public cloud)

En la nube pública se utiliza la infraestructura proporcionada por un proveedor de servicios, es decir, un tercero.

  • Propiedad, control, y coste de mantenimiento. Los recursos son propiedad del proveedor de servicios de nube, disponibles para el público general, a través de Internet. Sólo tenemos que utilizarlos (menor coste de mantenimiento, con un menor control de los detalles subyacentes).
  • Escalabilidad y pago por uso. Los clientes pueden escalar los recursos de forma horizontal o vertical, en función de lo cual, asumirán el correspondiente coste (pago por uso), pagando sólo por los recursos que necesitan en cada momento.
  • Ventajas:
    • Escalabilidad rápida
    • Menor coste inicial
    • Menor preocupación por la gestión de la infra subyacente
  • Inconvenientes:
    • Menor control de la infra subyacente
    • Posibles riesgos de seguridad, ya que cualquier vulnerabilidad o desastre en el proveedor de servicios, tendría repercusión

Nube privada (private cloud)

En la nube privada se utiliza infraestructura proporcionada por la propia empresa. Puedo utilizar un Housing como Intersion, pero lo sigo administrando yo, excepto que contrate a una empresa de Outsourcing de IT para que ellos se encarguen.

  • Propiedad, control, y coste de mantenimiento. Los recursos son proporcionados por la propia empresa, que debe encargarse de adquirir, instalar y configurar toda la infraestructura subyacente. Tenemos un mayor control de todos los detalles de la infra, que a su vez implica un mayor coste de mantenimiento, más aún cuando hablamos de múltiples regiones. Es posible utilizar servicios de Housing, pero igualmente, hay que contratarlos y gestionarlos.
  • Escalabilidad y pago por uso. Siempre y cuando tengamos hardware suficiente, podemos tenemos la misma escalabilidad que ofrecen las nubes públicas. De hecho las nubes públicas también pueden tener incidencias por falta de recursos, como ocurrió en pandemia, que había escasez por la falta de HW y aumento de migración a la nube de muchas empresas. Por el contrario, tenemos que asumir el coste de toda la infraestructura, tengamos los servidores apagados o encendidos (apagados existirá un menor consumo eléctrico, pero el servidor lo hemos tenido que comprar igual, esté apagado o encendido).
  • Seguridad. Una nube privada permite tener un mayor control de la infra y de la seguridad, al no tratarse de una infraestructura pública.
  • Ventajas:
    • Mayor control
    • Mayor seguridad
    • Mayor capacidad de personalización
  • Inconvenientes:
    • Mayor coste inicial (ej: provisión de todo el hardware, housing, etc.)
    • Mayor coste de mantenimiento
    • Escalabilidad condicionada por el hardware disponible.

Tipos de nube: IaaS, PaaS, SaaS

Cuando hablamos de tecnologías cloud acabamos hablando de IaaS, PaaS, y SaaS.

  • Qué es Infraestructure as a Service (IaaS). Básicamente consiste en que puedas crear en el cloud las Máquinas Virtuales que necesites. En esas máquinas puedes instalar lo que quieras, configurarlas y tendrás que administrarlas (ej: parchear las máquinas), pero ya te quitas muchos problemas (SAIs, provisión de HW, networking, cableados, Storage, gestión de temperatura y aire acondicionado, y otras muchas cosas que el proveedor de Cloud hace por ti, o en una nube privada, el que la gestione).
  • Qué es Platform as a Service (PaaS). Consiste en provisionar un Servicio, como por ejemplo sería una Base de Datos MySQL, pero en este caso no tienes que instalar y configurar las máquinas (ni parchearlas durante toda su vida), el proveedor de Cloud se encarga de ello, tú sólo necesitas saber qué versión quieres, que capacidad de memoria y CPU, qué nivel de disponibilidad, y poco más. Así, puedes tener una base de datos, pero con menos esfuerzo que montarla en IaaS, aunque hay tareas de las que tendrás que seguir encargándote (ej: escalar memoria y CPU cuando lo necesites, crear o eliminar réplicas, etc).
  • Qué es Software as a Service (SaaS). Consiste en tener una Aplicación como un Servicio. Un buen ejemplo sería Office 365, lo podemos utilizar sin tener que preocuparnos de todo lo que hay por detrás para que funcione, de eso se encarga el proveedor de Cloud, en este caso Microsoft.

En Internet hay una imagen que representa muy bien todo esto, la de Pizza as a Service, muy divulgativa. Cuántas más tareas se encarga el proveedor de Cloud (en verde), nosotros nos encargamos de menos (en azul), perdemos control, pero simplificamos mucho-mucho su gestión, lo que suele implicar un precio algo mayor de Cloud (se puede optimizar apagando a deshoras, con infra temporal o efímera, con reservas, con instancias spot, etc.), pero un menor coste de mantenimiento.

Tecnologías Cloud: Pizza as a Service (IaaS, PaaS, SaaS)

Principales proveedores de nube pública

Los tres principales proveedores de public cloud, son los siguientes:

  • Amazon Web Services (AWS)
  • Microsoft Azure
  • Google Cloud Platform (GCP)

Además de estos tres, hay otros proveedores de nube pública con menor presencia, pero que pueden tener ventajas en ciertas situaciones, como serían:

Principales proveedores de nube privada

En la nube privada se pretende crear una capa de cloud sobre la infra on-prem, para que los usuarios puedan consumir los servicios, de forma similar a como se haría en una nube pública, pero teniendo el control total de la infra y de los datos. Para hacer esto posible existen diferentes tecnologías de private cloud, como las siguientes.

  • OpenStack
  • Azure Stack
  • Red Hat OpenShift
  • VMware vSphere / vCloud Suite

Docker y Kubernetes

Docker y Kubernetes no son tecnologías específicamente diseñadas para la nube, pero son esenciales en el desarrollo y gestión de aplicaciones tanto de nube pública como privada. Por lo que dicho de otro modo, la realidad es que Docker y Kubernetes están muy relacionados con el Cloud.

  • Docker. Es una plataforma de contenedores que permite empaquetar, distribuir y ejecutar aplicaciones contenerizadas. Un contenedor encapsula una aplicación y sus dependencias, facilitando su ejecución en cualquier lugar (facilitan mucho la portabilidad).
  • Kubernetes (K8s). Es una plataforma de orquestación de contenedores de código abierto que automatiza la implementación, escalado y gestión de aplicaciones en contenedores, de forma eficiente. Facilita la administración de aplicaciones distribuidas, así como su escalabilidad. Se utiliza cada vez más, tanto en nubes públicas como privadas.

¿Por qué Docker y de Kubernetes están muy relacionado con las tecnologías cloud? Porque es posible crear cluster de Kubernetes como servicio en los proveedores de nube, o es posible crear un Docker Registry como servicio, o porque puedes desplegar una aplicación Web en un App Service desde una imagen Docker, o porque tienes alternativas a Kubernetes en los diferentes proveedores de cloud, etc.