Cloud Computing en 5 minutos

Profesionalmente comencé en el mundo IT con el boom de las punto.com y Linux. Viví el declive de las máquinas multiusuario, a las que te conectabas con una vt100 y todo en modo texto. Justo con el nacimiento de las granjas de servidores, formadas por máquinas de una CPU, preferentemente con Linux, máquinas baratas con un SO libre. Las granjas de máquinas Linux se convirtieron en un nuevo paradigma IT, gracias al cual, ya no necesitabas gastar una cantidad ingente de dinero en una máquina de 4, 8 o 16 CPUs, podías montar una granja de servidores con máquina de una CPU, mucho mas baratas, y se podía conseguir la misma o mayor capacidad de cálculo a un coste increíblemente inferior. En general las granjas eran mas baratas de adquirir y considerablemente mas baratas de mantener, podías disponer de una plataforma WEB totalmente funcional para implementar cualquier de las ideas del punto.com.

Cada empresa, por pequeña que fuese, disponía de su propia infraestructura, máquinas, comunicaciones, almacenamiento, backup, etc. Miles de de micro-CPDs aparecieron como setas por todos lados. Una empresa mas o menos grande disponía de varios, por no decir decenas, de estos micro-CPDs, era una época en la que Internet movía mucho dinero y esto se traducía en un aumento notable en la inversión en IT, eran los felices años de “las vacas gordas”.

¿ Por qué hablo de todo esto ? Porque muchas veces solemos perder la perspectiva temporal del entorno en el que trabajamos y especialmente en el mundo IT, la llegada de nuevos paradigmas son acogidos como verdaderos salvadores, cuando sencillamente, en la mayoría de los casos es el reflujo de algo con lo que ya se trabajaba antes, pero con otra denominación y algunas características realmente innovadora. La informática nació en entornos concentrados, grandes máquinas destinadas para cálculos que requerían mucho tiempo de procesamiento y que trabajaban con colas de ejecución, donde tenías que solicitar un tiempo de CPU para ejecutar tus programas. Posteriormente, se produjo una evolución, al aparecer los primeros PCs, donde cada usuario podía disponer de su propio ordenador. Con la llegada de los PCs los usuarios no necesitaban acceder a máquinas grandes y costosas para realizar sencillas tareas como editar un fichero de texto, ahora cada usuario disponía de su propio ordenador personal donde ejecutar sus programas y almacenar su información, y no debía compartir con otros usuarios el tiempo de CPU. Este nuevo modelo también sirvió para desarrollar las redes de comunicaciones que se empleaban para interconectar PCs y permitir a los usuarios poder trabajar con información que no estuviera almacenada en su PC.

Después de un periodo de expansión, irremediablemente viene otro de contracción, como bien sabemos por los efectos en la economía. Podemos asegurar que el periodo de expansión ya ha terminado por lo que actualmente nos vemos inmersos en una etapa durante la cual veremos como se desarrolla una tendencia para volver a concentración de la tecnología IT, argumentando un mejor aprovechamiento de los recursos gracias a las sinergias, ahorrar costes y hacer mas accesible las distintas tecnología de la información a las empresas y los usuarios finales.

Desde el punto de vista IT, estamos saliendo de una etapa donde se ha producido una dispersión geográfica de la información, cualquier empresa o usuario disponía de capacidad para la creación y almacenamiento de la información, esto ha supuesto que la información de una compañía, por ejemplo, aunque pensemos lo contrario, se encuentre dispersada por centenares de sitios, desde PCs de usuarios a bases de datos en servidores y ahora nos estamos dando cuenta del coste real de mantener toda esta información y sobre todo qué información de toda la que maneja una organización es realmente útil para el desarrollo del negocio. Un ejemplo, ¿cuanto espacio de almacenamiento de una empresa contiene información personal de los empleados? ¿cuanto cuesta el mantenimiento anual de toda esta información? ¿cuanto ocupa el backup de toda esta información?, en la actual época de recortes en los presupuestos, tener que destinar dinero de un departamento de IT para gestionar información que no está directa o indirectamente relacionada con el negocio de nuestra organización se ha convertido en un despilfarro. Hemos puesto el ejemplo del almacenamiento, pero otro tanto ocurre con las licencias de software o las infraestructuras para maquetas o pruebas, son casos en los que el gasto IT se dispara

La mayor parte de mi vida profesional ha estado ligada a la administración de sistemas y por lo tanto he tenido que estar muchas horas en los CPDs y una cosa que desde el principio siempre me llamó la atención fue ver el derroche tan enorme de recursos que suponía el modelo de granjas de servidores. En cualquiera de los CPDs en los que he trabajado existían filas y filas de racks llenos de máquinas, los cuales solían estar muy por debajo de sus posibilidades, si lo pensamos un momento hablamos de miles de billones de ciclos de CPU desperdiciados, miles de millones de vatios consumidos únicamente para ejecutar operaciones NOP en los procesadores. Desde la perspectiva actual donde tecnologías como la virtualización se están imponiendo, pensar en miles de máquinas empleando un 10% de su CPU suena sencillamente absurdo. Todos los fabricantes disponen de alguna herramienta de virtualización, las cuales nos venden anunciando las ventajas de utilizar de forma inteligente todos los recursos de los que disponemos.

Sin analizar la situación económica con la que se desarrolló el modelo de granja, que lo justifica por si mismo, sino analizando el aspecto puramente técnico, siempre he pensado que las granjas de servidores era un derroche de tecnología, de recursos que no estaban siendo utilizados, pero que ocupaban espacio físico, consumían potencia y generaban calor, es decir, había máquinas las cuales estaban consumiendo energía, con ventiladores funcionado para enfriar un hardware que realmente no estaba siendo utilizado, cualquiera que haya trabajado con granjas de servidores sabe de qué estoy hablando y mi sensación al entrar en un CPDs era que en vez de granjas de servidores para dar servicios a aplicaciones, lo que había eran granjas de ventiladores para mover aire en los CPDs.

¿Sorprendente verdad? da un poco de escalofríos que en plena crisis económica pensemos cuanto dinero de IT se ha tirado por la alcantarilla, pero eran otros tiempos y no debemos perder la perspectiva económica de esos tiempos, ahora es fácil criticar las decisiones que tomamos en el pasado, pero la realidad es que las granjas fue un modelo barato que permitió el avance de la tecnología relacionada con IT, al abrir la caja de Pandora que estaba controlada por una serie de fabricantes. Ahora, la situación económica ha cambiado y el mercado obliga a las áreas IT a la reducción de costes, lo que significa sencillamente menos inversiones. Los fabricantes producen máquinas con menos consumo y mas capacidad de computo y reaparece en escena una tecnología como es la virtualización. Ahora a todo el mundo se le llena la boca de las bondades de virtualizar para aprovechar los ciclos de CPU, permitiendo que varios usuarios trabajen sobre la misma máquina, aprovechando todo lo posible los recursos disponibles de una máquina. Y por si fuera poco, aparece el concepto de Cloud Computing como paradigma redentor de los problemas de las áreas de IT y solución perfecta para la reducción de costes.

¿ Qué es Cloud Computing ?

No existe una definición unificada del concepto Cloud Computing, esta falta de acuerdo en la definición provoca que bajo el paraguas de este término se acomoden todo tipo de tecnologías e  implementaciones, generando un gran desconcierto para la gente de IT, a la que se le piden soluciones de este tipo y sobre todo para la gente de Negocio, que ven en este nuevo paradigma la solución para muchos de los problemas actuales que las organizaciones tienen en las áreas de IT.

Podemos decir que Cloud Computing consiste en una serie de servicios los cuales se ofrecen a los usuario  y la infraestructura IT sobre los que se soportan son mas o menos transparentes para ellos. Desde el punto de vista del usuario estos servicios se encuentran en la nube (Cloud), para el usuario la nube consiste en la red, en muchos gráficos donde se representan equipos interconectados se utiliza una nube para representar esa parte de la infraestructura de la que no tenemos conocimiento y que realmente no es imprescindible conocer su constitución para que nuestro esquema tenga sentido. Por lo tanto la nube es la infraestructura de la que no deseamos tener conocimiento, únicamente la vamos a utilizar sin tener la necesidad de preocuparnos por sus problemas o limitaciones.

El concepto de Cloud Computing, es bastante genérico y no existe un estándar que se pueda seguir, por lo que los distintos fabricantes aplican este término a tecnologías que a veces, no tienen mucho que ver entre ellas, sencillamente se ha dado el pistoletazo de salida para vender un nuevo concepto y en esta carrera todo vale, cualquier cosa hoy día es Cloud. Pero sin entrar en temas concretos sobre lo que los fabricantes quieren que compremos, podemos analizar el termino Cloud Computing desde una perspectiva en la que se engloba, de forma totalmente general y abierta, una serie de tecnologías y buenas practicas. Existen una serie de características que una solución Cloud debería cumplir, pero no es estrictamente obligatorio que las cumpla todas:

  • Deslocalizacion de la plataforma IT. La infraestructura IT necesaria para que el servicio funcione, no necesita estar en las instalaciones del cliente. El cliente sencillamente utiliza un servicio que está sobre una infraestructura que puede localizarse en cualquier parte del globo y de la que no necesita conocer nada.
  • Elasticidad de los recursos. El cliente no debe preocuparse por la capacidad de los recursos asignados al servicio que ha contratado, ya que en caso de que fuese necesario emplear mas recursos para un servicio, debido a un pico de trabajo por ejemplo, sencillamente se asignan nuevos recursos sin necesidad de parar el servicio, permitiendo de forma mas o menos dinámica  redimensionar los recursos que utiliza el servicio, una vez que las necesidades de recursos disminuyan, se podrían liberar los recursos no utilizados.
  • Auto-Billing. La facturación se realizará de forma automática sin tener que renegociar las condiciones del servicio, el modelo es el mismo que el empleado en la facturación telefónica, se cobra por lo consumido.
  • Virtualizacion. La virtualización es una tecnología imprescindible para desarrollar un servicio Cloud, ya que permite aprovechar de forma mas eficiente los recursos IT disponibles, balanceando dichos recursos entre distintos servicios si fuese necesario y sin la necesidad de parar el servicio.
  • Aceso universal. Al estar el servicio en la nube, el acceso a dicho servicio es universal ya que se debería poder acceder desde cualquier punto del planeta, ayudando de esta forma a la integración de aplicaciones en entornos corporativos distribuido en distintas localizaciones.
  • Gestion simplificada. La gestión por parte del cliente del servicio debería ser mediante una serie de procedimientos y aplicaciones sencillas que faciliten el trabajo de provisión, incidencias, cobros, etc. De los servicios contratados, así como seguimiento de los niveles de servicios acordados.
  • Reducción de los costes. Normalmente las infraestructuras que soportan servicios Cloud son utilizadas por varios clientes, lo que permite reducir los costes de inversión y mantenimiento de la misma, trasladando estos ahorros a los costes que el cliente tiene al contratar el servicio.
  • Gestion del acceso a la información. La plataforma cloud suele ser compartida por varias empresas, por lo que se necesita una gestión eficaz de acceso a la información que garantice que otra empresa no puede acceder a mis datos.

Tipos de Servicios

Cuando hablamos de servicios en la nube, encontramos tres tipos básicos de servicios, cada uno de ellos dispone de un ámbito y características determinadas y se ajusta a una serie de necesidades, por lo que somos nosotros como clientes, los que debemos decidir qué modelo elegir, según las necesidades de nuestra organización.

IaaS – Infraestructura como un Servicio

El modelo de Infraestructura como un Servicio consiste en disponer de elementos de infraestructura IT, como son máquinas, SO, almacenamiento, elementos de comunicaciones, etc. Para utilizarlos, bien como parte de nuestra propia infraestructura, bien como elementos sobre los que implementar nuestro negocio.

Un ejemplo de IaaS sería contratar máquinas virtuales con una cantidad de memoria y un número de CPUs, además de un sistema operativo que sería administrado por nosotros. Otro ejemplo de IaaS sería acceder a espacio de almacenamiento para que nuestra organización pueda almacenar los datos y que sean accesibles desde cualquier punto del globo.

PaaS –  Plataforma como un Servicio

La Plataforma como un Servicio consiste en disponer de una plataforma sobre la que se desarrolla una serie de aplicaciones que serán la base de la implementación de nuestro negocio. Se trata de un servicio compuesto por herramientas de desarrollo y gestión de datos, con las que podemos desarrollar aplicaciones. Los servicios PaaS normalmente dan acceso a una serie de APIs sobre los que se puede desarrollar para posteriormente utilizar las aplicaciones en la infraestructura que el proveedor posee en la nube.

Un ejemplo de PaaS sería una plataforma sobre la que varios equipos de nuestra organización, localizados en distintos países desarrollan una aplicación que se utilizará internamente en nuestra organización.

SaaS –  Software como un Servicio

El último modelo de servicio en la nube es el Software como un Servicio, en este modelo se ofrece un servicio para que sea utilizado directamente por los usuarios, sin necesidad de que el cliente tenga que realizar desarrollos o integrar infraestructuras en la nube. En el modelo SaaS el cliente contrata la utilización de un software y paga por su uso.
Un ejemplo de SaaS sería contratar un servicio en la nube para que nuestra organización gestione la formación de los empleados, mediante un a plataforma de formación en la nube.

Cloud Computing para Usuarios

Desde el punto de vista de un usuario que contrata un servicio alojado en la nube, existen una serie de ventajas y desventajas que debemos conocer antes de migrar algún servicio de nuestra organización a la nube.

Entra las ventajas podemos citar:

  • Solo se paga por lo que se usa, esta característica genera un ahorro directo, ya que con el modelo de nube, no hay que repercutir conceptos como los costes de mantenimientos de software y hardware o las inversiones para la ampliación de infraestructuras en caso de que nuestro negocio necesite crecer, solo debemos pagar por los recursos consumidos en la nube.
  • Se reducen los tiempos de desarrollo del Negocio. Cuando nos planteamos utilizar un servicio en la nube solo debemos contratar el servicio con unos requerimiento mínimos para que pueda sostener la implementación del negocio que vamos a realizar y pagaremos mas cuando el servicio comience a ser utilizado. Montar maquetas es un proceso sencillo y barato ya que no necesitamos realizar una inversión en infraestructura IT, únicamente contratamos un servicio en la nube, creamos una maqueta y comprobamos si es viable la implementación del negocio, una vez terminada la prueba podemos o bien terminar el contrato del servicio o reducir los recursos contratados para de esta forma reducir el coste del servicio contratado.
  • Se reducen los problemas derivados de una plataforma IT. El usuario no debe preocuparse por problemas como la escalabilidad o las copias de respaldo, la nube se encarga de todo, por lo que la organización no tiene que emplear ni tiempo ni recursos en mantener una infraestructura para el Negocio. La organización se puede concentrar en el desarrollo del Negocio.

Como desventajas podemos citar:

  • No controlar la localización de los datos. Un servicio en la nube puede almacenar los datos en distintas localizaciones y el usuario del servicio no tiene control sobre donde están sus datos. Esta falta de control puede suponer un problema dependiendo del carácter de los datos y la legislación de cada país. Por ejemplo, existen verdaderos problemas para poner datos médicos sobre pacientes en la nube o datos de organizaciones gubernamentales que sean catalogados como clasificados, ya que las leyes de cada país con respecto a este tipo de datos son muy estrictas.
  • El usuario debe preocuparse por los SLA (acuerdos de niveles de servicio). La única herramienta que el usuario posee para garantizar el servicio que está contratando son los acuerdos de niveles de servicio (SLA), con lo que se medirá la calidad del servicio.
  • Inversión en comunicaciones. Otra de las desventajas de utilizar servicios en la nube es que las comunicaciones con la nube deben ser lo suficientemente fiables como para garantizar el acceso a los servicios contratados. Además de la disponibilidad también debemos asegurarnos que el caudal que tenemos de acceso a los servicios en la nube garantizan que el acceso al servicio tiene la calidad necesaria para el desarrollo del Negocio. Las comunicaciones externas son sensiblemente mas caras que las comunicaciones internas. Al tener servicios en la nube nuestra organización podría tener que aumentar los caudales de acceso a la nube con el consiguiente gasto.
  • Nuestra información “podría” ser accedida por terceros. La gestión del acceso a nuestra información  la hemos delegado a un proveedor de servicios en la nube, un problema de seguridad en dicho proveedor puede provocar que los datos alojados en la infraestructura del proveedor pudieran ser accesibles por otras personas. Nosotros como usuarios debemos ser conscientes de este riesgo y lo que supondría que terceros tuvieran acceso a nuestra información.
  • Cuidado con los PaaS. Al desarrollar aplicaciones en Plataformas como un Servicio podemos encontrar el problema de la migración, tanto de los datos, como del código a otro proveedor. Muchos proveedores de PaaS ofrecen plataformas propias de desarrollo de aplicaciones por lo que todo lo que desarrollemos en esta plataformas, muy rara veces podremos migrarlo a otras.
  • Los recursos no son infinitos. Una de las características de los servicios en la nube es la elasticidad de los recursos, el proveedor nos dará recursos según nuestras necesidades, pero debemos ser conservadores con esta idea, ya que un proveedor de servicios no puede darnos recursos ilimitados y podemos encontrar situaciones donde nuestras necesidades de negocio requieran mas recursos y el proveedor no puede suministrarnos lo que necesitamos, quedando atrapados en un servicio que nos costará mucho esfuerzo migrar a otro proveedor.

Hemos citado ventajas y desventajas que los servicios en la nube pueden presentar para nosotros como usuarios que contratamos un servicio. No todos los servicios presentan todas las ventajas y desventajas, pero debemos recordar que los proveedores de servicios los ofrecen en unas condiciones concretas y que fuera de esa condiciones, todo lo que no esté reflejado en los acuerdos de nivel de servicio, el proveedor no estará obligado a cumplirlo, por lo tanto el utilizar servicios en la nube requiere un esfuerzo a la hora de entender perfectamente qué se está contratando y las características del servicio que se contrata, así como dejar muy claro cuales serán los SLAs que se firmarán.

Conclusión

Tecnológicamente la nube es una idea madura, ya existe la tecnología necesaria para que funcione y de hecho ya está funcionando, pero existe un elemento fundamental para su éxito que es la confianza que debe existir entre el cliente y el proveedor del servicio y es en este elemento, la confianza, en la que los proveedores deberán de trabajar en los próximos años para que los clientes vean que utilizar los servicios en la nube es una ventaja y no un inconveniente. Por lo tanto, mas allá de los ahorros de costes, tiempos de disponibilidad,  tipos de acceso o localización de los servicios, debemos preguntarnos como clientes, qué confianza tengo en el proveedor del servicio que estoy contratando, realmente ¿estoy seguro de que mis datos están en buenas manos? ¿cómo encajan los nuevos servicios en la nube con mis planes de contingencia? ¿quién puede acceder a mis datos? Si necesito crecer, ¿el servicio estará preparado? Estas cuestiones son un ejemplo de algunas de las preguntas que nos tendremos que hacer cuando nos planteamos migrar un servicio a la nube y la única respuesta posible es la  confianza que tengamos en el proveedor del servicio. Por lo tanto creo que la confianza entre proveedor y cliente es uno de los pilares fundamentales de la nube.