El término cloud computing o computación en la nube, nos es ya muy familiar. La posibilidad de disponer de recursos de computación, alquilándolos a un tercero por el tiempo que se necesitan, en lugar de hacer costosas adquisiciones para instalar estos recursos en nuestro propio datacenter es, me atrevo a decir, uno de los cambios más revolucionarios que se han vivido en en el mundo de la T.I. en décadas.

El pionero de todo esto fue Amazon Web Services (AWS) que ya por el año 2006 decidió ofrecer como paquete comercial a sus clientes todos los recursos que ya estaba usando internamente para soportar su tiende de e-commerce, el amazon.com

La definición más sencilla de qué es cloud computing podría ser esta: “La entrega de recursos T.I. y aplicaciones vía Internet, bajo demanda con una política de precios de pago por uso.”. A esto hay que tener en cuenta que los recusos de los que podemos disponer son virtualmente infinitos y sólo dependerá de lo que podamos pagar. Tantos recursos como se necesiten de manera casi instantánea, el sueño de todo desarrollador de aplicaciones 😉

Ventajas de la computación en la nube

A modo de resumen, se suelen considerar estas ventajas como las importantes del uso de la nube:

  1. Transformar un gasto fijo en infraestructura en uno variable
  2. Economía de escala.
    • El proveedor de cloud, con miles o millones de clientes, podrá obtener un menor precio unitario por cada recurso que si los comprásemos nosotros directamente.
    • Además, al proporcionar recursos virtualizados, cuando un cliente no está usando el 100% de sus recursos contratados puede disponibilizarlos a otro cliente, realmente es como si cobrase dos veces por lo mismo…
  3. Fin de la capacitación de recursos para el caso peor
    • Uno de los mayores problemas que existen en la informática tradicional es que el dimensionamiento de los recursos (máquinas, memoria, disco, etc.) tenía que hacerse sobre el cálculo de la máxima carga que debían soportar. Estos mismos recursos podían permanecer ociosos desaprovechando una gran parte de su capacidad y haciendo un gasto inútil.
  4. Mayor agilidad y velocidad
    • los servicios de están pensados para poder darlos de alta, y de baja, desde una consola web, desde una línea de comandos e incluso mediante un API de servicios.
    • usualmente obtener los recursos necesarios para ejecutar una aplicación web puede llevar unos pocos minutos en lugar de los días o semanas que puede tardar en un entorno tradicional.
  5. Minimizar el gasto en mantenimiento de datacenters y concentrarse en el negocio
  6. Alcance global en minutos
    • los proveedores cloud proporcionan varias regiones alrededor del mundo donde residen sus datacenters
    • cada región es una área geográfica separada, y cada una de ellas tiene varias localizaciones denominadas zonas de disponibilidad.
    • cada región es totalmente independiente y está diseñada para estar completamente aislada de otras regiones. De esta manera, ante cualquier desastre en una región no se afectará a las otras.
    • las zonas de disponibilidad también están aisladas, aunque como diferencia, las diferentes zonas dentro de una región están comunicadas entre sí por un enlace de red de baja latencia.
    • con unos pocos clicks es posible desplegar una aplicación por todo el mundo de manera segura y con tolerancia a fallos

Amazon Web Services

Como proveedor veterano en Cloud, Amazon tiene una amplia lista de servicios disponibles para la construcción de aplicaciones (aunque sus directos competidores Azure y Google Cloud, no se quedan atrás). En el caso de AWS, tiene un curioso estilo de nombrado de sus servicios que hace que un primer momento te encuentres un poco perdido respecto al servicio del que estamos hablando. Ahí va una pequeña lista de alguno de los servicios más importantes que ofrece:

  • EC2 Elastic Compute Cloud
    • Este es el servicio clásico del IaaS, es decir, proporciona máquinas virtuales que podemos usar como si fueran máquinas físicas para desplegar nuestras aplicaciones.
    • Es posible seleccionar estos recursos de una completa lista con diferente tipo de CPU, cantidad de memoria y capacidad de entrada/salida.
  • Amazon Simple Storage Service (S3)
    • Proporciona a los equipos de T.I. un almacenamiento de objetos (no es un filesystem) altamente fiable y con alta disponibilidad, escalable, que puede manejar virtualmente cantidades ilimitadas de objetos de información y de usuarios concurrentes.
    • Como todos los servicios de Amazon, proporciona un API invocable mediante HTTP en el que es posible hacer su configuración y también su uso principal: guardar y recuperar objetos (ficheros, fotos, videos, etc).
    • Con un par de clics, se puede configurar para que pueda servir contenido html como un servidor web.
  • Amazon Glacier
    • Es el almacenamiento para información que no se utiliza a menudo ya que normalmente tendremos que esperar 4 o 5 horas para recuperarla.
    • Como contrapartida, tiene un bajo coste de uso.
    • Un uso muy habitual sería el guardado de backups a largo plazo.
  • Amazon Elastic Block Store (EBS)
    • Proporciona volúmenes de almacenamiento para las máquinas de EC2.
    • Se puede considerar como un sistema de archivos “conectable” a las instancias de la máquina (no es posible usar para esto S3).
  • Amazon CloudFront
    • Es el CDN (Content Delivery Service) de Amazon.
    • Ofrece la posibilidad de distribuir contenido a usuarios distribuidos por todo el mundo, con una baja latencia
    • Las peticiones de los usuarios son redirigidas automáticamente a la localización de “borde” más cercana, optimizando la velocidad de acceso.
  • AWS Lambda
    • Las lambda son funciones o trozos de código que se ejecutan en el servidor de Amazon de manera transparente. Es decir, como desarrolladores, no tenemos que preocuparnos de configurar servidores de aplicaciones, únicamente hay que elegir el lenguaje que queremos usar para programar y la cantidad de memoria RAM que queremos asignar a nuestras funciones.
    • Este nuevo estilo de programación ha dado lugar al paradigma de serverless, y más en concreto en la posibilidad que ofrece de implementar microservicios dirigido a eventos. Además de la ejecución de una función mediante una invocación por HTTP GET, por poner un ejemplo, también se es posible disparar la ejecución de la lambda a partir de una subida de un fichero, de la escritura de un registro en base de datos, etc.
    • La escalabilidad viene de caja y es virtualmente infinita (siempre claro que nuestro código lo permita). De manera automática se utilizan los recursos necesarios para poder servir la carga de trabajo de necesaria.
    • El modelo de precio, es el habitual en este tipo de servicios, pago por uso. Si no se ejecuta la función no se paga nada.
  • AWS RDS (Relational Database Service)
    • Esta es la familia de servicios que engloba las bases de datos relacionales totalmente gestionadas de Amazon: Oracle, MySQL, María, SQL Server, etc.
    • Es posible lanzar base de datos con seguridad, tolerancia a fallos listas para us uso en producción en minutos.
    • Backups, instalación de parches, monitorización, escalado las hace Amazon liberando al equipo de T.I. de estas tareas.
  • Amazon DynamoDB
    • Es el servicio de base de datos NoSQL
    • Admite el modelo clave-valor y también el estilo documento para guardar información
  • Amazon Redshift
    • Es el servicio de data warehouse gestionado (a nivel de petabytes)
    • Proporciona un interfaz de SQL estándar

Hasta aquí un pequeño resumen. Como decía hay literalmente decenas de servicios en la nube de Amazon y prácticamente cada semana se incorporan otros nuevos.

Espero que en próximos post pueda profundizar en los servicios más importantes de Amazon AWS.

Anuncios