¿ Qué es el Cloud ?

Siempre hay mucha rivalidad en el mundillo de los administradores de sistema con respecto al cloud computing. Cuando aparece la nube en el horizonte es señal de tormentas equiparables a las disputas entre seguidores del Madrid y del Barça o Concebollistas y Sincebollistas.

Pero… ¿ Qué es la computación en la nube o Cloud Computing ?

Según Wikipedia :

La computación en la nube (del inglés cloud computing),​ conocida también como servicios en la nube, informática en la nube, nube de cómputo o simplemente «la nube», es el uso de una red de servidores remotos conectados a internet para almacenar, administrar y procesar datos, servidores, bases de datos, redes y software. En lugar de depender de un servicio físico instalado, se tiene acceso a una estructura donde el software y el hardware están virtualmente integrados.

Wikipedia

Si ya has empezado a trastear en la nube verás que la definición de proporciona la Wikipedia tiene más o menos sentido y si todavía no has dado el paso,verás que esta misma conceptualización sirve también para tu CPD 😀

Vale, entiendes las palabras, pero ¿ qué diferencia mi CPD o mi armario de la nube ? Pues aquí van 4 diferencias esenciales.

Diferencias entre cloud y on-premise

Tamaño

Eso que llamamos nube no es más que una cantidad ingente de servidores y dispositivos de red alojados en varios centros de datos distribuidos por el mundo. Y cuando digo cantidad ingente quiero decir del orden de millones de dispositivos.

Tolerancia a fallos

Las nubes están diseñadas para seguir funcionando en caso de caída de uno de sus componentes. Esto quiere decir que de entrada ofrece tolerancia a fallos ya que sus componentes están duplicados o triplicados. No quiere decir que tu CPD no tenga tolerancia a fallos José Luis, simplemente hemos de tener en cuenta que las nubes están pensadas de base para tolerar no sólo caídas de servidores o elementos de red, pueden soportar una caída de varios centros de datos que la componen. Otra cosa es si tu has diseñado tu infraestructura cloud para que sea tolerante a fallos.

Para no perderte ningunos de los artículos que vamos publicando en Ubunturista puedes suscribirte al newsletter.

Variedad de servicios

Las nubes suelen ofrecer muchísimos servicios. El despliegue de esos servicios está tan integrado que empezar a usarlos es tan sencillo y rápido que hay casos de uso en los que no vale la pena desplegar los tuyos de manera local. Podemos desplegar estos servicios a través de una interfaz web de una manera más o menos intuitiva en cuestión de minutos. Pero si te gusta la pantallita negra puedes usar la consola de comandos que los proveedores de nube ofrecen o incluso usar las API que ofrecen para que las llames en tus aplicaciones.

Seguridad

Finalmente destacar que las nubes están diseñadas poniendo la seguridad en el centro. La inversión en seguridad es muy alta ya sea en la parte económica como de recursos. Las nubes tienen un modelo de responsabilidad en materia de seguridad compartido en el que el proveedor se encarga de las partes inferiores de la infraestructura, incluyendo en muchos casos hasta el sistema operativo. Por nuestra parte deberemos aplicar las buenas prácticas y securizar las capas más altas que suelen implicar la autorización y autenticación de usuarios en el servicio (como el uso de roles, políticas de contraseñas, MFA, etc).

Ahora que ya sabemos en qué se diferencia la nube de mi CPD quiero explicarte cuales son las inconvenientes y ventajas de usar los servicios del cloud. Y voy a empezar precisamente por los inconvenientes.

Inconvenientes del cloud

Soluciones verticales

Como hemos dicho, las nubes ofrecen muchos servicios que cubren diferentes casos de uso. Estos servicios están pensados para ser usados de una determinada manera y aunque ofrecen muchas opciones de configuración y ajuste puede que no sean adecuados para tu caso. Olvídate de que el proveedor de cloud te haga una solución a medida. En todo caso es del revés, tú te tendrás que adaptar a cómo funciona el servicio cloud.

Para la mayoría de empresas estos servicios cubren sus necesidades con creces y si un servicio específico no lo hace seguro que puedes encontrar la manera de hacerlo, por ejemplo, ejecutando una instancia EC2 con tu servicio.

¿ No sabes qué es una instancia EC2 ? Suscríbete a mi newsletter para que te avise cuando hablemos de EC2 😉

Inútil sin conexión a internet

Lo que vayamos a desplegar en la nube puede dar servicio a nuestros clientes, a nuestra organización o ambos. El cloud va ligado intimamente a internet por lo que si al proveedor de cloud se le cae la conexión ni nuestros clientes ni nosotros tendremos acceso. Si lo que se cae es la conexión a internet de nuestra organización no podremos acceder a los servicios que soportan nuestro negocio, con todo lo que ello implica.

Cambio de paradigma

Trabajar con la nube requiere reaprender algunas cosas. Si eres un sysadmin o sysadmina «tradicional» y quieres dar el salto al cloud hay que empezar a aprender conceptos nuevos y entender que los servicios cloud están diseñados de una determinada manera y que debemos interactuar con ellos con otras reglas.

No voy a negar que si has pasado por una ingeniería o tienes un grado en redes la transición va a ser mucho mas suave pero hay que tomar consciencia de que un Transit Gateway no es un router tal y como lo conocemos por lo que de nada sirve buscar como ejecutar tal o cual comando vía consola.

Se pueden disparar los costes

No hemos hablado aún de dinero, pero la nube vale dinero. Y algunos servicios, mucho dinero. Hay muchos factores que pueden llevarnos a que gastemos mucho más de lo que deberíamos. Elegir de manera incorrecta los recursos del servicio que vamos a usar o que un hacker consiga una cuenta nuestra y empiece a lanzar servicios en nuestro nombre pueden hacer que nuestra cuenta a final de mes se dispare. Es por eso que es importante controlar todo lo que sucede en nuestro cloud y disponer de mecanismos que nos alerten y ayuden a que esto no pase.

Ventajas de usar el cloud

Orientado a servicio

El cloud, en su mayor parte es orientado al servicio. ¿ Y esto qué quiere decir ? Pues que nuestro proveedor nos va a presentar un servicio (base de datos, servidor web, inteligencia artificial, etc) en su capa más alta, donde únicamente tenemos que interactuar con él. Las capas inferiores, aquellas que implican instalar sistema operativo, librerías o parchear ya se encarga el proveedor de nube. De esta manera nos podemos centrar en el propio servicio y no en la infraestructura subyacente que lo soporta. Es así como empezamos a despreocuparnos de que un disco falle o que el sistema operativo necesite una actualización : no nos enteraremos y será el proveedor el que se encargue de gestionar la incidencia con la menor disrupción del servicio (que suele tender a cero).

Elasticidad

¿ Recuerdas cuando eras un renacuajo/a, te sacabas el chicle de la boca y lo estirabas a ver si se rompía ? Eso es elasticidad. En el cloud los recursos crecen y decrecen a demanda, y en muchos casos, sin necesidad de que se requiera la intervención de una persona.

Los que venimos del on-premise se verán identificados ¿ Cuantas veces habéis diseñado una arquitectura con unos recursos para uno, tres o cinco años y con el tiempo ha sido totalmente insuficiente ? Tal y como avanzan las empresas y los negocios, empieza a ser deporte de riesgo planificar a largo plazo porque seguro que nos pillamos los dedos.

La nube nos permite empezar con los recursos que realmente necesitamos y vamos a ir haciéndolos crecer sobre la marcha. Y quien dice crecer, también nos va a permitir decrecer.

Reducción del time-to-market

No sé si últimamente os han pedido que despleguéis un entorno con cierta prisa para no perder esta o aquella oportunidad. En mi caso, con los fabricantes y proveedores con los que trabajo, me están dando plazos de entrega de 3 a 6 meses dependiendo del hardware que necesito.

Con la nube es cuestión de minutos podemos desplegar una infraestructura y configurar los servicios para llegar antes a nuestros clientes y proveedores. Y además no sólo es rápido si no que las nubes son seguras y robustas.

Variedad de servicios

Una nube como Amazon Web Services (AWS) ofrece más de 200 servicios que comprenden desde los más básicos como servicios de computación, almacenamiento y bases de datos hasta servicios muy novedosos y punteros como Inteligencia Artificial o la creación de redes blockchain.

En la mayoría de estos servicios nada más nos tenemos que preocupar de empezar a operarlos y explotarlos ya que todas las capas inferiores son gestionadas por el proveedor de cloud.

Pago por uso

El pago por uso nos permite racionalizar el gasto en servicios IT. Muchos servicios de la nube se pagan mientras se usan pero si los paramos dejaremos de pagar.

¿ Tiene sentido tener un servidor encendido 24×7 cuando los utilizo un puñado de horas al día ? ¿ Es necesario comprar grandes servidores para procesar datos en horario 8×5 ? Existen formulas y mecanismos para que los sistemas se levanten bajo demanda cuando los necesitemos y entren en un estado de hibernación cuando no sean necesarios. ¿ Y cuanto voy a pagar ? Pues únicamente por el tiempo que lo has tenido funcionando.

Serverless

Serverless es la computación sin servidor. ¿ Se puede ? No, realmente no. Se refiere a un modelo de ejecución en el que el proveedor aprovisiona los recursos en el momento que son necesarios para ejecutar un determinado proceso y que una vez acabado se liberan.

El cloud no has traído este nuevo paradigma con el que ya sí que sí nos olvidamos de la infraestructura que hay debajo. Los recursos necesarios para nuestra aplicación se aprovisionan solos, bajo demanda y crecen para cubrir nuestra necesidad.

Para ilustrar esto os explico un ejemplo. Me pidieron desarrollar un pequeño programa que hiciese una consulta a una base de datos y generase una hoja de cálculo con el resultado. Esta aplicación se suele usar una o dos veces por semana. Era el caso perfecto para usar Lambda, un servicio de AWS que nos permite crear scripts dentro de AWS y ejecutarlos bajo demanda sin tener que definir ni desplegar servidores.

Cuando tuve creado el script lo subí al servicio de Lambda e implementé un mecanismo para poder hacer la invocación usando el protocolo HTTP y en la intranet creamos el botón que dispara la petición.

Cuando el usuario necesita obtener la hoja de cálculo hace clic en un botón en una web interna y ésta dispara una petición a la función lambda. AWS levanta todo lo necesario para ejecutar el script, lo ejecuta y cuando acaba, lo destruye. El usuario por su parte recibe un link para descargarse una hoja de cálculo desde un bucket S3. Fin.

No sabes que es un bucket, ¿ verdad ? Necesitas estar en mi newsletter 😉

¿ De verdad necesito desplegar un servidor para ejecutar un proceso dos veces a la semana ? Si tenemos en cuenta que la capa gratuita de AWS par el servicio de Lambda es bastante generosa, lo que pago por ese servicio al mes es 0 euros.

IMHO

Puede que pienses que la nube no sea una opción para todo el mundo, pero si te paras a pensar, muchos de los servicios que ya están usando nuestras organizaciones son soluciones cloud : Office365, Gmail o OneDrive son las más famosas pero piensa en todas esas plataformas a las que accedes cada día a través de una dirección de internet : no están en casa de ninguna de esas empresas.

Si ya dispones de unas instalaciones on-premise y quieres migrar de golpe todo a la nube no es una decisión suficientemente meditada. Si ya dispones de infraestructura en casa el cloud puede ser un complemento perfecto para ir migrando aquellos servicios que no vas a poder gestionar de manera adecuada debido a su crecimiento o requerimientos de mantenimiento.

Si eres una pequeña empresa con un puñado de servidores (o menos) puede salirte muy rentable quitarte de en medio ese hierro que tienes desaprovechado y que vas a acabar tirando por viejo y no porque hayas llegado a su límite en cuanto a recursos.

Si acabas de crear tu empresa es una opción a tener en cuenta para desplegar tus servicios tanto internos como para clientes ahorrándote la inversión y costes fijos de disponer de tu propia infraestructura en casa.

Finalmente, si eres una startup, no puedes ser considerada como tal si no eres cloud native 😀