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.
Introducción
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. El término se usa generalmente para describir los centros de
datos disponibles desde cualquier lugar para muchos usuarios a través
de Internet desde cualquier dispositivo móvil o fijo.
A menudo, el término «computación en la nube» se lo relaciona con una
reducción de costos, disminución de vulnerabilidades y garantía de
disponibilidad. Asimismo, la computación en la nube se la relaciona con
un modelo de pago por uso. No obstante, el concepto de pago no puede
ser solo relacionado con erogación económica dado que solo se aplica
en caso de proveedores externos y, en muchos casos, hace referencia
a poder medir el consumo que se imputa a los diferentes centros de
costos de la propia empresa.
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 y una elevada capacidad de adaptación para
atender demandas variables.
El concepto de «nube informática» es muy amplio, y abarca casi todos
los posibles tipo de servicio en línea, pero cuando las empresas
predican ofrecer un utilitario alojado en la nube, por lo general se
refieren a alguna de estas tres modalidades: el software como
servicio (SaaS, por sus siglas en inglés), plataforma como servicio
(PaaS) e infraestructura como servicio (IaaS).
El software como servicio es un modelo de distribución de software en
el que las aplicaciones están alojadas por una compañía o proveedor
de servicio y puestas a disposición de los usuarios a través de una red,
generalmente internet. La plataforma como servicio es un conjunto de
utilitarios para abastecer al usuario de sistemas operativos y servicios
asociados a través de Internet sin necesidad de descargas o instalación
alguna. Infraestructura como servicio se refiere a la externalización de
los equipos utilizados para apoyar las operaciones, incluido el
almacenamiento, hardware, servidores y componentes de red.
Comienzos
El concepto de la computación en la nube empezó en proveedores de
servicio de Internet a gran escala, como Google (Google Cloud
Services), Amazon AWS (2006), Microsoft (Microsoft Azure) o Alibaba
Cloud y otros que construyeron su propia infraestructura. De entre todos
ellos emergió una arquitectura: un sistema de recursos distribuidos
horizontalmente, introducidos como servicios virtuales de TI escalados
masivamente y manejados como recursos configurados y
mancomunados de manera continua. Este modelo de arquitectura fue
inmortalizado por George Gilder en su artículo de octubre de 2006 en la
revista Wired titulado Las fábricas de información. Las granjas de
servidores, sobre las que escribió Gilder, eran similares en su
arquitectura a la computación en malla, pero mientras que las redes se
utilizan para aplicaciones de procesamiento técnico débilmente
acoplados, un sistema compuesto de subsistemas con cierta autonomía
de acción, que mantienen una interrelación continua entre ellos, este
nuevo modelo de nube se estaba aplicando a los servicios de internet
Fundamentos
El concepto fundamental de la entrega de los recursos informáticos a
través de una red global tiene sus raíces en los años sesenta. La idea
de una «red de computadoras intergaláctica» la introdujo en los años
sesenta JCR Licklider, cuya visión era que todo el mundo pudiese estar
interconectado y poder acceder a los programas y datos desde
cualquier lugar. Según Margaret Lewis, directora de mercadotecnia de
producto de AMD, «es una visión que se parece mucho a lo que
llamamos computación en la nube».
Otros expertos atribuyen el concepto científico de la computación en
nube a John McCarthy, quien propuso la idea de la computación como
un servicio público, de forma similar a las empresas de servicios que se
remontan a los años sesenta. En 1960 dijo: «algún día la computación
podrá ser organizada como un servicio público».3
Desde los años sesenta, la computación en la nube se ha desarrollado
a lo largo de una serie de líneas. La Web 2.0 es la evolución más
reciente. Sin embargo, como Internet no empezó a ofrecer ancho de
banda significativo hasta los años noventa, la computación en la nube
ha sufrido algo así como un desarrollo tardío. Uno de los primeros hitos
de la computación en nube es la llegada de Salesforce.com en 1999,
que fue pionera en el concepto de la entrega de aplicaciones
empresariales a través de una página web simple. La firma de servicios
allanó el camino para que tanto especialistas como empresas
tradicionales de software pudiesen publicar sus aplicaciones a través de
Internet.
El siguiente desarrollo fue Amazon Web Services en 2002, que prevé
un conjunto de servicios basados en la nube, incluyendo
almacenamiento, computación e incluso la inteligencia humana a través
del Amazon Mechanical Turk. Posteriormente en 2006, Amazon lanzó
su Elastic Compute Cloud (EC2) como un servicio comercial que
permite a las pequeñas empresas y los particulares alquilar equipos en
los que se ejecuten sus propias aplicaciones informáticas.
«Amazon EC2/S3 fue la primera que ofreció servicios de infraestructura
en la nube totalmente accesibles», según Jeremy Allaire, CEO de
Brightcove, que proporciona su plataforma SaaS de vídeo en línea a las
estaciones de televisión de Reino Unido y periódicos.
George Gilder dijo en 2006: "El PC de escritorio está muerto. Bienvenido
a la nube de Internet, donde un número enorme de instalaciones en todo
el planeta almacenarán todos los datos que usted podrá usar alguna
vez en su vida".
Otro hito importante se produjo en 2009, cuando Google y otros
empezaron a ofrecer aplicaciones basadas en navegador. «La
contribución más importante a la computación en nube ha sido la
aparición de "aplicaciones asesinas" de los gigantes de tecnología como
Microsoft y Google. Cuando dichas compañías llevan a cabo sus
servicios de una manera que resulta segura y sencilla para el
consumidor, el efecto "pasar la pelota" en sí crea un sentimiento de
mayor aceptación de los servicios online», según Dan Germain, jefe de
la oficina de tecnología en IT proveedor de servicios Cobweb Solutions.
Otro de los factores clave que han permitido evolucionar a la
computación en la nube han sido, según el pionero en computación en
la nube británico Jamie Turner, las tecnologías de virtualización, el
desarrollo del universal de alta velocidad de ancho de banda y normas
universales de interoperabilidad de software. Turner añadió: «A medida
que la computación en nube se extiende, su alcance va más allá de un
puñado de usuarios de Google Docs. Solo podemos empezar a
imaginar su ámbito de aplicación y alcance. Casi cualquier cosa puede
ser utilizada en la nube».
Características
Existen varias características de la computación en la nube, y según el
autor o la fuente pueden variar. Por ejemplo la NIST especifica que
existen características esenciales de una nube:
• 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 y ubícuo 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).
Ejemplos de recursos: almacenamiento, procesamiento,
memoria y ancho de banda de red.
• 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.
En un sentido más ampliado y basándose en varias fuentes, la
computación en la nube presenta las siguientes características clave:
• Autorreparable: en caso de desperfecto, los proveedores
posibilitan procesos de respaldo de información, que consiste
en crear una copia de seguridad automática de la última
reservación de datos, por lo tanto, es prácticamente imposible
que exista una pérdida de información.5
• Agilidad: capacidad de mejora para ofrecer recursos
tecnológicos al usuario por parte del proveedor.
• Costo: los recursos en la nube suelen tener costos menores a
los que un aprovisionamiento físico local podría representar.
Generalmente, la inversión inicial que representaría tener un
aprovisionamiento local se ve anulada debido a la naturaleza
bajo demanda de la nube.
• Escalabilidad y elasticidad: aprovisionamiento de recursos
sobre una base de autoservicio casi en tiempo real, sin que los
usuarios necesiten cargas de alta duración.
• Independencia entre el dispositivo y la ubicación: permite a los
usuarios acceder a los sistemas utilizando un navegador web,
independientemente de su ubicación o del dispositivo que
utilice (por ejemplo, PC, teléfono móvil).
• Virtualización: la tecnología de virtualización permite compartir
servidores y dispositivos de almacenamiento y una mayor
utilización. Las aplicaciones pueden ser fácilmente migradas
de un servidor físico a otro. El usuario posee la libertad de
manejar la plataforma que considere necesaria y en
cualquier sistema operativo, ya sea Windows, Unix o Mac,
entre otros; y si utiliza alguna de las aplicaciones informáticas
de la nube, su trabajo se verá afectado en lo mínimo posible;
en otras palabras, mantiene las mismas características.
• Rendimiento: los sistemas en la nube controlan y optimizan el
uso de los recursos de manera automática, dicha característica
permite un seguimiento, control y notificación del mismo. Esta
capacidad aporta transparencia tanto para el consumidor o el
proveedor de servicio.
• Seguridad: puede mejorar debido a la centralización de los
datos. La seguridad es a menudo tan buena o mejor que otros
sistemas tradicionales, en parte porque los proveedores son
capaces de dedicar recursos a la solución de los problemas de
seguridad que muchos clientes no pueden permitirse el lujo de
abordar. El usuario de la nube es responsable de la seguridad
a nivel de aplicación. El proveedor de la nube es responsable
de la seguridad física.
•
Mantenimiento: en el caso de las aplicaciones de computación en
la nube, es más sencillo, ya que no necesitan ser instalados en el
ordenador de cada usuario y se puede acceder desde diferentes
lugares.
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 según NIST los siguientes métodos de entrega:
software como servicio, plataforma como servicio e infraestructura como
servicio.
Software como servicio (SaaS)
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. PaaS simplifica la experiencia del usuario
al minimizar la gestión técnica, permitiendo a los usuarios concentrarse
en sus aplicaciones sin preocuparse por el control de red, servidores,
sistema operativo o almacenamiento.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 computadores, evitando asumir los
costos de soporte y el mantenimiento de hardware y software.
Plataforma como servicio (PaaS)
Ejemplos comerciales son Google App Engine, que sirve aplicaciones
de la infraestructura Google; Microsoft Azure, una plataforma 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)—8 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—. El ejemplo comercial mejor conocido es Amazon Web
Services, cuyos servicios EC2 y S3 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.
Tipos de PaaS
Públicos, privados e híbridos
Existen varios tipos de plataformas como servicio, incluyendo públicos,
privados e híbridos. Paas fue originalmente pensado para las nubes
públicas, antes de expandirse a las privadas e híbridas. Los PaaS
públicos son derivados de los software como servicio y está situado
entre esta y la infraestructura como servicio.
Los PaaS privados son comúnmente descargados e instalados desde
una infraestructura local de una empresa, o desde una nube pública.
Una vez que el software se instala en una o más máquinas, el PaaS
privado organiza la aplicación y los componentes de la base de datos
en una sola plataforma para el alojamiento.
Entre los proveedores de PaaS se encuentran Apprenda, que comenzó
en la plataforma Microsoft .NET; OpenShift, de Red Hat y su Cloud
Foundry Pivotal.
Apprenda y Microsoft eran consideradas las dos únicas PaaS que
proveían soporte .NET superior. Ahora acompañadas por la anunciada
asociación entre Microsoft e IBM
Un PaaS híbrido es típicamente un despliegue consistente en una
mezcla de despliegues públicos y privados. Un ejemplo aquí es IBM
Bluemix que se entrega como una sola plataforma de nube integrada a
través de modelos de despliegue público, dedicado y local.
Mobile PaaS
Iniciado en 2012, mobile PaaS (mPaaS) proporciona capacidades de
desarrollo para diseñadores y desarrolladores de aplicaciones móviles.
El Yankee Group identificó a mPaas como uno de sus temas para 2014,
nombrando a varios proveedores incluyendo Kinvey, CloudMine,
AnyPresence, FeedHenry, FatFractal y Point.io
PaaS para el desarrollo rápido
En 2014, Forrester Research definió Plataformas empresariales
públicas para desarrolladores rápidos como una tendencia emergente,
nombrando a varios proveedores incluyendo a Mendix, Salesforce.com,
OutSystems y Acquia Acquia.
Ventajas y desventajas
Las ventajas de las plataformas como servicio son que permite niveles
más altos de programación con una complejidad extremadamente
reducida; el desarrollo general de la aplicación puede ser más eficaz, ya
que se tiene una infraestructura integrada; y el mantenimiento y mejora
de la aplicación es más sencillo También puede ser útil en situaciones
en las que varios desarrolladores están trabajando en un mismo
proyecto y que implican a partes que no están ubicadas cerca unas de
otras. Pueden aportar nuevas características sin la necesidad de
incorporar más personal. Se ofrecen opciones de desarrollo en varias
plataformas para el manejo de diferentes aplicaciones. Es posible
colaborar en proyectos donde los miembros del equipo estén en lugares
diferentes, ya que se accede a través de Internet al entorno de
desarrollo. Gracias a las plataformas como servicio, se puede
administrar el ciclo de vida de las aplicaciones web con eficacia.
Una desventaja de las plataformas como servicio es que es posible que
los desarrolladores no pueden utilizar todas las herramientas
convencionales (bases de datos relacionales, p. ej. con uniones
[sentencias join] no restringidas). Otra posible desventaja es estar
cerrado en una cierta plataforma. Sin embargo, la mayoría de las
plataformas como servicio están relativamente libres.