La computación en la nube (del inglés cloud computing),[1] 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.
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.
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.[2]
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».
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[4] especifica que existen características esenciales de una nube:
En un sentido más ampliado y basándose en varias fuentes, la computación en la nube presenta las siguientes características clave:
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[4] los siguientes métodos de entrega: software como servicio, plataforma como servicio e infraestructura como servicio.[5]
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 —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 computadores, evitando asumir los costos de soporte y el mantenimiento de hardware y software.
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.[7]
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.
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.
Existen varios tipos de plataformas como servicio, incluyendo públicos, privados e híbridos.[9] Paas fue originalmente pensado para las nubes públicas, antes de expandirse a las privadas e híbridas.[9] Los PaaS públicos son derivados de los software como servicio y está situado entre esta y la infraestructura como servicio.[10]
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.[11] Entre los proveedores de PaaS se encuentran Apprenda, que comenzó en la plataforma Microsoft .NET; OpenShift, de Red Hat y su Cloud Foundry Pivotal.[12] Apprenda y Microsoft eran consideradas las dos únicas PaaS que proveían soporte .NET superior.[9] Ahora acompañadas por la anunciada[13] asociación entre Microsoft e IBM[14]
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[15] que se entrega como una sola plataforma de nube integrada a través de modelos de despliegue público, dedicado y local.
Iniciado en 2012, mobile PaaS (mPaaS) proporciona capacidades de desarrollo para diseñadores y desarrolladores de aplicaciones móviles.[16] 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.[17][18]
PaaS abierto no incluye alojamiento, sino que proporciona software de código abierto que permite a un proveedor PaaS ejecutar aplicaciones en un entorno de código abierto. Por ejemplo, AppScale permite a un usuario desplegar algunas aplicaciones escritas para Google App Engine a sus propios servidores, proporcionando acceso a almacén de datos desde una base de datos SQL o NoSQL estándar. Algunas plataformas abiertas permiten al desarrollador utilizar cualquier lenguaje de programación, base de datos, sistema operativo o servidor para implementar sus aplicaciones.[19][20]
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.[21]
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[22] 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.[23] 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.[24]
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.[25]
Según NIST[4] podemos identificar los siguientes modelos de implementación:
Dentro de estas nubes podemos encontrar englobadas las nube privada virtual, [27] consideradas como nubes de dominio público pero que mejoran la seguridad de los datos. Estos datos se encriptan a través de la implantación de una VPN. Algunas grandes empresas como Amazon ya permiten aprovisionar una sección de su AWS con esta posibilidad VPN.
Adicionalmente podemos identificar un modelo que cada vez tienen más presencia en el mercado:
El uso de las multinubes presenta una serie de ventajas como: mayor rendimiento, en el caso de fallar alguna nube se puede operar con otras; la transferencia de datos se realiza a través de varias plataformas, acelerando tal operación; la seguridad es mayor ya que se pueden utilizar varios hosts, los costes se reducen y permiten la difusión con las regulaciones de diferentes países.[31]
La multinube puede confundirse con nube híbrida. Su principal diferencia es que la multinube combina servicios de diferentes proveedores no conectados entre sí y la nube híbrida es una mezcla de nube privada local y nube pública de terceros pero conectados entre ellos.[32]
Las principales ventajas de la computación en la nube son:
Las desventajas de la computación en la nube, generalmente, se encuentran relacionadas con la confiabilidad, disponibilidad de los servicios, acceso, seguridad y, sobre todo, con el almacenamiento. A continuación se detallan:
La computación en la nube usualmente se confunde con la computación en malla (una forma de computación distribuida por la que "un supercomputador virtual" está compuesto de un conjunto o clúster enlazado de ordenadores débilmente acoplados, que funcionan en concierto para realizar tareas muy grandes).[36]
Dado que la computación en nube no permite a los usuarios poseer físicamente los dispositivos de almacenamiento de sus datos (con la excepción de la posibilidad de copiar los datos a un dispositivo de almacenamiento externo, como una unidad flash USB o un disco duro), deja la responsabilidad del almacenamiento de datos y su control en manos del proveedor.
La computación en nube ha sido criticada por limitar la libertad de los usuarios y hacerlos dependientes del proveedor de servicios.[37] Algunos críticos afirman que solo es posible usar las aplicaciones y servicios que el proveedor esté dispuesto a ofrecer. Así, The Times compara la computación en nube con los sistemas centralizados de los años 50 y 60, en los que los usuarios se conectaban a través de terminales "gregarios" con ordenadores centrales. Generalmente, los usuarios no tenían libertad para instalar nuevas aplicaciones, y necesitaban la aprobación de administradores para desempeñar determinadas tareas. En suma, se limitaba tanto la libertad como la creatividad. El Times argumenta que la computación en nube es un retorno a esa época y numerosos expertos respaldan la teoría.[38]
De forma similar, Richard Stallman, fundador de la Free Software Foundation, cree que la computación en nube pone en peligro las libertades de los usuarios, porque estos dejan su privacidad y datos personales en manos de terceros. Ha afirmado que la computación en nube es «simplemente una trampa destinada a obligar a más gente a adquirir sistemas propietarios, bloqueados, que les costarán cada vez más conforme pase el tiempo».[39]
La seguridad en la computación en la nube puede ser tan buena o mejor que la que existía en los sistemas tradicionales, porque los proveedores son capaces de proporcionar recursos que resuelvan problemas de seguridad que muchos clientes no pueden afrontar. Sin embargo, la seguridad todavía sigue siendo un asunto importante, cuando los datos tienen un matiz confidencial. Esto atrasa la adopción de la computación en la nube hasta cierto punto.
En el entorno de la nube, la seguridad es provista por los proveedores. Se pueden distinguir dos métodos: El primer método, es que cualquiera puede cambiar sus métodos de entrega incluidos en los servicios de la nube. El segundo método es que los proveedores de servicio de la nube proveen seguridad solo como servicio en la nube, con información de seguridad de las compañías. Los servicios de seguridad están clasificados en categorías, según la organización Cloud Security Alliance:
En el entorno de la nube, los servidores remotos son usados para la computación. Los nodos del cliente se usan solo para entrada/salida de operaciones, y para la autorización y autenticación de la información en la nube. Un navegador web estándar es una plataforma normalmente utilizada para todos los usuarios del mundo. Esto puede ser catalogado en dos tipos diferentes: software como servicio, aplicaciones web, o Web 2.0. La seguridad en la capa de transporte (TLS) se suele emplear para la encriptación de datos y la autentificación del equipo anfitrión.
En el entorno de la nube, la base para el control de acceso es la autentificación, el control de acceso es más importante que nunca desde que la nube y todos sus datos son accesibles para todo el mundo a través de internet. Trusted Platform Module (TPM) es extensamente utilizado y un sistema de autentificación más fuerte que el nombre de usuario y la contraseña. Trusted Computing Group (TCG) es un estándar sobre la autorización de usuarios y otras herramientas de seguridad de comunicación en tiempo real entre el proveedor y el cliente.
En las infraestructuras de la nube, el cliente necesariamente cede el control al proveedor de la nube en varios asuntos, los cuales influyen negativamente sobre la seguridad. Al mismo tiempo, el acuerdo de nivel de servicio no suele tener el cometido de surtir este tipo de servicios en la parte del proveedor de la nube, lo que deja una brecha en las defensas de seguridad.
Esta es una pequeña oferta en este tipo de herramientas, los procedimientos o estándares de formatos de datos o interfaces de servicios que podrían garantizar los datos, las aplicaciones y el servicio de portabilidad. Esto puede hacer difícil para el cliente migrar de un proveedor a otro, o migrar los datos y servicios de nuevo a otro entorno informático, bloqueándolo en el ecosistema elegido. Esto introduce una particular dependencia en el proveedor de la nube para la provisión del servicio, especialmente en lo referente a la portabilidad de los datos, el aspecto más fundamental.
En España, la Agencia Española de Protección de Datos y el Instituto Nacional de Tecnologías de la Comunicación (INTECO) son los organismos que se encargan de la privacidad y de la protección de los datos personales; aspectos claves para operar en la nube.[41] La computación en la nube pone en riesgo la protección de datos para los usuarios de la nube y sus proveedores. En muchos casos, ocasiona dificultades para el proveedor (en el rol del controlador de la información) para asegurar la efectividad práctica del manejo de los datos del proveedor de la nube y para cerciorar que los datos van por el camino correcto. Este problema se suele agravar en casos de múltiples transferencias de datos, por ejemplo entre sistemas federados. Por otra parte, algunos proveedores de la nube, proporcionan información de sus prácticas de cercenamiento de datos. También hay algunas ofertas de certificaciones en el procesamiento de datos, las actividades de seguridad, y los controles de datos que tienen lugar; ejemplo, la certificación SAS70. Las corrientes de datos de Internet están unidas al malware y de paquetes señuelo para meter al usuario en una desconocida participación en actividades delictivas.
Algunas limitaciones que están retrasando un poco a la computación en la nube son algunas de las siguientes:
Tener datos en la nube tiene numerosas ventajas pero pueden ser comprometidos de diferentes maneras. Pueden ser modificados o borrados sin un respaldo o copia de seguridad, pueden ser desvinculados de su contexto o accedidos por gente no autorizada.
Si los proveedores Cloud son parte de nuestra sociedad, visto de manera estadística, alguien de su personal o algún subcontratado podría no ser alguien de fiar. Es por esto que se deben tomar buenos procedimientos de investigación de antecedentes de recursos humanos, políticas y procedimientos de seguridad de la información fuertes.
En la nube hay muchísimos datos, aplicaciones y recursos almacenados. La computación en la nube es muy débil en los mecanismos de autentificación, por lo tanto el atacante puede fácilmente obtener la cuenta de usuario cliente y acceder a la máquina virtual.[42]
Multitud de universidades, institutos, proveedores e instituciones gubernamentales están invirtiendo en computación en la nube:[43][44]