Al ver a un CEO de una nueva compañía de "computación en la nube" describir su compañía en un programa de televisión financiera hoy, dijo algo así como "la computación en la nube es superior a la computación cliente-servidor pasada de moda".
Ahora estoy confundido. ¿Alguien puede explicar qué significa "computación en la nube" en contraste con cliente-servidor?
Hasta donde yo entiendo, la computación en la nube es más un modelo de servicios de red, de modo que no poseo ni mantengo el hardware físico. La "nube" es todo el material de fondo. Pero aún podría tener una aplicación que se comunica con ese entorno "en la nube". Y si ejecuto un sitio web presenta un formulario que un usuario completa, presiona un botón en la página y devuelve algún informe generado por el servidor web, ¿no es eso lo mismo que la computación "en la nube"? ¿Y no consideraría mi navegador web como el "cliente"?
Tenga en cuenta que mi pregunta es específica del concepto de "computación en la nube" con respecto a "cliente-servidor".
Lo sentimos si esta es una pregunta inapropiada para este sitio; es el más cercano en el universo de Stack y esta es mi primera vez aquí. Soy un viejo temporizador, programando desde los días de mainframe a finales de los 70.
fuente
Respuestas:
Estrictamente hablando, no hay 'Nube'. No en el sentido de lo que estaba diciendo ese CEO. Hay internet, por supuesto. Hay servicios alojados. Hay VPS's. Hay sistemas de entrega de contenido. Nosotros (técnicos) nos hemos adaptado al término para hacer referencia a ciertos modelos de servicios alojados. Pero 'Nube' en los medios de consumo es en gran medida un término de marketing traducido libremente como 'internet'. La mayoría de las veces, también significa 'puedo cobrarle por mes'.
Tiene razón al pensar que los dos términos, 'nube' y 'cliente-servidor' no están relacionados. Tener un servicio alojado 'en la nube' (siempre quiero agregar un dramático 'dun-dun-daaaaaaa' después de usar esa frase) no hace que una aplicación cliente-servidor sea menos cliente-servidor-y. Por ejemplo, la 'web' usa principalmente un modelo cliente-servidor. El navegador web es el cliente. El servidor web es el servidor. Que un servidor web esté alojado 'en la nube' no cambia el hecho de que la relación navegador web / servidor web es cliente-servidor.
Entonces, el término cliente-servidor define la relación entre dos entidades en un sistema. Donde las entidades están alojadas físicamente es irrelevante.
Básicamente, tienes razón. Los dos no son comparables.
fuente
"Computación en la nube" es un término general destinado a hacer dos cosas: primero, abstraer todos los usos posibles de un modelo cliente-servidor detrás de un solo término, en oposición a casos de uso más específicos como "servidores de archivos", "servidores de bases de datos", "servidores web", "servidores de aplicaciones", etc .; y segundo, abstraer la arquitectura del servidor en sí, en términos de hardware, topología, ubicación e incluso propiedad.
En un modelo tradicional de cliente-servidor, que definitivamente todavía es de uso común en la actualidad, un cliente se conecta a un servidor que realiza un trabajo en particular. Este servidor puede alojar una base de datos, o una serie de archivos compartidos, o una página web. Cuando el cliente se conecta a ese servidor, existe una comprensión implícita del tipo de comunicación y transmisión de datos que se producirá entre las dos computadoras. También puede haber una comprensión por parte del cliente, o del usuario final, de las capacidades del hardware del servidor y sus limitaciones. Este relativamente "acoplamiento estrecho" entre la máquina del cliente y su servidor puede plantear problemas a un administrador de sistemas que necesita eliminar un servidor para su mantenimiento; todas las aplicaciones que dependen de los recursos proporcionados por este servidor deben apuntar a otro servidor,
En un modelo de nube, el hardware, la topología, la división del trabajo e incluso el número de máquinas reales involucradas se abstraen detrás de un único punto final. La analogía podría extraerse de una "aplicación web" moderna, a diferencia de las generaciones anteriores de "sitio web" que eran más estáticas. Podríamos adivinar que hay un servidor de aplicaciones y un servidor de base de datos detrás de escena, pero realmente no tenemos que preocuparnos; El servidor web, como parte de su trabajo para servir la aplicación completa a los usuarios más allá del "borde", proporciona un punto final unificado que permite el acceso controlado a todos los datos y servicios proporcionados por otras máquinas detrás de esta puerta principal.
El resultado es que, con un único punto final expuesto para proporcionar la funcionalidad de la aplicación, eso es todo lo que un cliente consumidor de la aplicación tiene que preocuparse, en lugar de dónde obtener sus datos, dónde llamar a tal o cual proceso de aplicación remota etc. eso significa que los administradores y arquitectos del proveedor de servicios dentro de esta nube son más o menos libres de cambiar las máquinas, la topología y otros detalles de implementación específicos de este "servicio en la nube" sin que los clientes sean más sabios. Facebook podría, si lo considerara conveniente, reconstruir todo su sistema de almacenamiento de datos desde cero utilizando un DBMS diferente y todos los servidores nuevos, y mientras el sitio permaneciera disponible durante la transición, nadie sería más sabio; de hecho, Facebook hizo exactamente eso, muchas veces,
fuente
Una parte clave de la "computación en la nube" son las herramientas de administración de implementación.
En implementaciones "clásicas", se ordenó una máquina específica para una aplicación específica y se realizó una configuración bastante fija.
En un entorno de nube, hay un hardware más o menos estandarizado en un grupo y una API que crea y configura máquinas virtuales en él a partir de algún tipo de plantillas. De este modo, los sistemas defectuosos pueden reemplazarse, ampliarse o reducirse fácilmente según las necesidades y el hardware puede asignarse según sea necesario, incluso de forma automatizada.
Por supuesto, los administradores adecuados también hicieron la mayor parte de eso antes, pero además del marketing puro, existe una base de API estandarizadas (API Aamzons AWS que también ofrecen herramientas como Eucalyptus para "nubes privadas") y herramientas (es decir, títeres) emergentes.
fuente
En la arquitectura cliente-servidor 'tradicional', usted tenía recursos asignados estáticamente (o al menos se presenta como tal; no tengo experiencia en el período anterior a la nube, así que corríjame si me equivoco y confío en un marketing falso). El servidor de la base de datos se llamó db.yourcompany.com y su servidor web se comunicó con él. Si desea aumentar los recursos, puede agregar otro servidor web dedicado y proporcionar equilibrio de carga, etc.
Por otro lado, en el estrés de la nube se han puesto en abstracción de niveles inferiores y denotan cómo se construye el 'servidor'. En Por ejemplo, tienes:
Tenga en cuenta que, si bien en la mayoría de los casos está implícito que el servicio real se subcontrata a una gran empresa (por ejemplo, Amazon o Google), no es necesariamente el caso: las grandes empresas o universidades implementan sus propias nubes internas para permitir una gestión más fácil de los recursos. Esto permite agregar los recursos a la aplicación de su ejecución para agregarlos según sea necesario. Si el nuevo inicio interno tuvo éxito, no tienen que preocuparse de que los servidores se hayan sobrecargado. Sin embargo, como papel de la economía de escala, generalmente se hace solo cuando hay requisitos especiales (por ejemplo, con respecto a la seguridad).
Desde la perspectiva del usuario, es transparente y tiene un aspecto de la arquitectura cliente-servidor. El servidor web podría vivir 'en la nube' mientras usa HTTP antiguo. Los problemas y las soluciones de las ideas se remontan a los mainframes de los años 50 y actualmente vuelven más como un contraste con las PC de clientes gruesos.
Habiendo dicho eso, también podría ser una palabra de moda en una oración dada y afirmar que la compañía es dinámica y se enfoca en su competencia central al tiempo que permite a sus empleados.
fuente
Eso depende de tu perspectiva. Para las empresas, la computación en la nube es buena porque (por lo general) le permite ser más flexible con la cantidad de máquinas que admiten sus servicios. Esa flexibilidad le permite ser más receptivo, lo que debería ahorrarle dinero. Las empresas también pueden aprovechar el hecho de permitir que el proveedor de la nube haga copias de seguridad, recuperación ante desastres, seguridad física y todas las demás cosas de infraestructura con las que no quieren lidiar. Esto generalmente conduce a ahorros y una mejor calidad.
Desde la perspectiva del consumidor, la mayor calidad y fiabilidad de la conexión son buenas. Algunos proveedores de la nube también ayudan a distribuir sus servidores para ayudar a la latencia del consumidor.
Para los programadores ... es más o menos la programación cliente-servidor donde el servidor es difícil de encontrar y ocasionalmente necesitas usar algunas API especializadas.
fuente
Creo que es justo decir que "cloud computing" y "cliente-servidor" son muy similares. Desde mi perspectiva, la computación en la nube parece confiar más en el servidor que en el modelo "cliente-servidor". En teoría, algunas formas de computación en la nube pueden ocurrir independientemente de la conexión de un cliente. El beneficio de una aplicación que solo se ejecuta en la nube sin comunicación del cliente no parece muy útil, por lo que tiene sentido crear alguna forma de comunicación del cliente con ese servidor.
Esencialmente, creo que se basa principalmente en dónde se está haciendo la mayor parte de su potencia informática. Un servidor generalmente tiene mejores especificaciones, en términos de hardware y potencia informática, que una computadora de usuario estándar con el fin de administrar simplemente muchas conexiones de clientes y operaciones concurrentes para servir esas conexiones. La computación en la nube utiliza esto como una ventaja al mover lo que normalmente sería el código de ejecución del cliente al servidor y permitir que el cliente sea lo más "tonto" posible. Por lo tanto, requiere menos recursos de usuario para manejar el mismo tipo de operaciones.
Puede que no sea la mejor respuesta, pero así es como lo veo.
fuente