¿Qué es Cloud Computing?
Cloud Computing, tambien conocido como computación en la nube, es un paradigma o modo de consumir u ofrecer recursos de computación. Es ofrecer servicios a través de la conectividad y gran escala de Internet.
La computación en la nube es la disponibilidad a pedido de los recursos del sistema informático, especialmente el almacenamiento de datos y la capacidad de cómputo, sin una gestión activa directa por parte del usuario.
La computación en la nube es un nuevo modelo de prestación de servicios tecnológicos que impacta sin lugar a dudas en diversos negocios. Este modelo se apoya en infraestructuras tecnológicas dinámicas, caracterizadas por la virtualización de recursos, un alto grado de automatización, una elevada capacidad de adaptación para atender demandas variables.
Caso práctico
Imaginaos que necesitas desplegar toda la infraestructura web para una plataforma de un servicio. Necesitan desplegar máquinas virtuales, instancias de bases de datos, servidores web, etc. Todo esto, por lo pronto, la primera opción que muchas empresas considerarán sería comprar el equipamiento y se arman su propio centro de datos. Pero esta solución si bien ganan en soberanía lleva un gran costo implícito: mantenimiento, espacio físico para guarecer los equipos, licencias, patentes, personal y mucho más.
Desde una perspectiva de Cloud Computing podemos también contratar a un proveedor de Cloud Computing y emplear los recursos que se nos brindan de modo que solo debemos preocuparnos por el mantenimiento de nuestro producto, entiéndase software, y nos despreocupamos de cómo es servido o escalado nuestro producto.
Si aún no te queda claro imagina este escenario: tienes el producto desplegado en un centro de datos privado de tu empresa y tu producto comienza a tener una demanda creciente en el tiempo: ¿cómo le haces frente? Imagina que en 2 días tienes el doble, el triple o 10 veces más visitas: ¿Cómo escalas tu sitio web tan rápido para que soporte la demanda? Pues déjame comentarte que en un uso de Cloud Computing el proveedor puede escalar la infraestructura de modo automático o bajo determinadas reglas, de modo que no debes preocuparte por eso. Al aumentar la demanda la aplicación se escala tanto vertical como horizontalmente y al bajar la demanda igual se eliminan réplicas o se le disminuye los recursos a las instancias para ahorrar en costes.
Características
Veamos ahora las características que nos brinda Cloud Computing.
Dependiendo del proveedor las características pueden variar pero esencialmente son:
- Autoservicio bajo demanda: un consumidor puede aprovisionar por sus propios medios capacidades informáticas, como cómputo, almacenamiento y redes, en forma automática sin requerir la interacción humana del proveedor de servicios.
- Acceso amplio a toda la red: todas las capacidades están disponibles a través de la red y se accede a ellas a través de mecanismos estándares y plataformas heterogéneas como por ejemplo: teléfonos móviles, tabletas, computadoras portátiles y estaciones de trabajo.
- Ubicación transparente y agrupación de recursos: los recursos informáticos del proveedor de servicios se agrupan para brindar servicio a múltiples consumidores, con diferentes recursos físicos virtualizados que se asignan y reasignan dinámicamente de acuerdo con la demanda. Existe una sensación de independencia de ubicación en el sentido de que el cliente generalmente no tiene control o conocimiento sobre la ubicación exacta de los recursos proporcionados, pero puede especificar la ubicación en un nivel más alto de abstracción (por ejemplo, país, estado o centro de datos).
- Rápida elasticidad: los recursos se pueden aprovisionar y liberar rápidamente según la demanda. Para el consumidor, las capacidades disponibles para el aprovisionamiento a menudo parecen ser ilimitadas y pueden ser apropiadas en cualquier cantidad en cualquier momento.
- Servicio medido: quizás una de las características determinantes. Los sistemas en la nube tienen mecanismos de medición en alguno de los niveles de abstracción para el tipo de servicio (por ejemplo, almacenamiento, procesamiento, ancho de banda y cuentas de usuario activas). El uso de los recursos se puede monitorear, controlar e informar, proporcionando transparencia tanto para el proveedor como para el consumidor del servicio utilizado. A veces esta posibilidad de medición deriva en una cobranza por parte del proveedor hacia el cliente según el uso final. En otros casos, el servicio medido sirve para alocar un valor referencial a un centro de costos, bajo una medida pre-acordada.
A modo de resumen Cloud Computing es una forma de abstraerse de la infraestructura necesaria para que un producto funcione mientras los usuarios se preocupan solamente, en la mayoría de los casos, en su producto.
Métodos de entrega
La computación en la nube establece su arquitectura a partir de una fragmentación entre aplicación informática, plataforma y hardware, dando como resultado los siguientes métodos de entrega: software como servicio, plataforma como servicio e infraestructura como servicio.
Software como servicio (SaaS)
El software como servicio se encuentra en la capa más alta y caracteriza una aplicación completa ofrecida como un servicio bajo demanda a través de multitenencia. Esto no es más que una sola instancia del software que corre en la infraestructura del proveedor sirve a múltiples organizaciones de clientes. Las aplicaciones que suministran este modelo de servicio son accesibles a través de un navegador web o de cualquier aplicación diseñada para tal efecto y el usuario no tiene control sobre ellas, aunque en algunos casos se le permite realizar algunas configuraciones. Esto le elimina la necesidad al cliente de instalar la aplicación en sus propios ordenadores, evitando asumir los costos de soporte y el mantenimiento de hardware y software.
Plataforma como servicio (PaaS)
La capa del medio, la plataforma como servicio, es la encapsulación de una abstracción de un ambiente de desarrollo y el empaquetamiento de una serie de módulos o complementos que proporcionan, normalmente, una funcionalidad horizontal (persistencia de datos, autenticación, mensajería, etc.). De esta forma, un arquetipo de plataforma como servicio podría consistir en un entorno conteniendo una pila básica de sistemas, componentes o APIs preconfiguradas y listas para integrarse sobre una tecnología concreta de desarrollo (por ejemplo, un sistema Linux, un servidor web, y un ambiente de programación como Perl o Ruby). Las ofertas de plataformas como servicio pueden servir a todas las fases del ciclo de desarrollo y pruebas del software, o pueden estar especializadas en cualquier área en particular, tal como la administración del contenido.
Ejemplos comerciales son Google App Engine, que sirve aplicaciones de la infraestructura Google; Microsoft Azure App Service, una servicio en la nube que permite el desarrollo y ejecución de aplicaciones codificadas en varios lenguajes y tecnologías como .NET, Java, Go y PHP o la Plataforma G, desarrollada en Perl. Servicios PaaS como estos permiten gran flexibilidad, pero puede ser restringida por las capacidades disponibles a través del proveedor. En este modelo de servicio al usuario se le ofrece la plataforma de desarrollo y las herramientas de programación por lo que puede desarrollar aplicaciones propias y controlar la aplicación, pero no controla la infraestructura.
Infraestructura como servicio (IaaS)
La infraestructura como servicio, también llamada en algunos casos hardware as a service, HaaS), se encuentra en la capa inferior y es un medio de entregar almacenamiento básico y capacidades de cómputo como servicios estandarizados en la red. Servidores, sistemas de almacenamiento, conexiones, enrutadores, y otros sistemas se concentran (por ejemplo a través de la tecnología de virtualización) para manejar tipos específicos de cargas de trabajo, desde procesamiento en lotes (“batch”), hasta aumento de servidor/almacenamiento durante las cargas pico. Los ejemplos comerciales más conocidos serían Amazon Web Services, Google Cloud Platform y Microsoft Azure, cuyos servicios ofrecen cómputo y servicios de almacenamiento esenciales (respectivamente). Otro ejemplo es Joyent, cuyo producto principal es una línea de servidores virtualizados, que proveen una infraestructura en demanda altamente escalable para manejar sitios web, incluidas aplicaciones web complejas escritas en Python, Ruby, PHP y Java.
La computación en la Nube es un paradigma que ha sabido ganarse su lugar en el mercado sobre todo para nuevas pequeñas y medianas empresas que no pueden costearse su propia infraestructura IT. En próximos capítulos estaremos hablando sobre Azure, Amazon Web Services y Google Cloud Platform con incluso ejemplos prácticos de adopción de Cloud Computing.