2009-06-01 13 views
15

Al leer acerca de frameworks (.net, ruby ​​on rails, django, spring, etc.), sigo viendo algo así y lo hace o no escala bien.¿Qué significa decir que un marco "se escala bien"?

¿Qué significa cuando alguien dice que un marco "se escala bien" y qué significa decir que un marco "no escala bien"?

Gracias.

+9

Una báscula es un dispositivo anticuado para medir mediante comparación. Generalmente se construyen por medio de un equilibrio ... Desafortunadamente, esto hace que sea difícil medir cosas que se mueven y saltan mucho, por lo que se considera que un marco que permanece quieto "escala bien", mientras que uno se comporta como si mezcló demasiado coque en su galón diario de escamas de café pobremente. – Shog9

+0

Jajaja, buena comparación, Shog9. –

+6

Decir que "Framework X no escala bien" con frecuencia significa "Tengo un odio irracional hacia Framework X". Por otro lado, decir "Framework Y se escala bien" significa algo como "Me gusta Framework Y, pero no quiero admitir que me gusta porque hace que sea fácil crear botones brillantes". – Pesto

Respuesta

15

Cuando grafica algunos usos de recursos (memoria, tiempo, espacio en disco, ancho de banda de red) contra usuarios concurrentes, obtiene una función que describe cómo funciona la aplicación en diferentes factores de escala.

Pequeña escala: algunos usuarios usan algunos recursos.

En gran escala, una gran cantidad de usuarios utiliza una gran cantidad de recursos.

La pregunta crítica es "¿qué tan cerca de lineal es la escala?" Si se amplía linealmente, servir a 2,000 usuarios simultáneos cuesta 2 veces más que atender a 1,000 usuarios y 4 veces más que atender a 500 usuarios. Esta es una herramienta/framework/language/platform/os que se adapta bien.Es predecible, y la predicción es lineal.

Si no se escala linealmente, atender a 4.000 usuarios cuesta 1,000 veces más que atender a 2,000 usuarios que cuestan 100 veces servir a 500 usuarios. Esto no se escalo bien Algo salió mal a medida que aumentaba el uso; no parece predecible y no es lineal.

+1

Y lineal tampoco siempre es bueno. Lo ideal sería que se estabilice o nivele a medida que el número de usuarios alcanza un volumen crítico. Sin embargo, esto no siempre es posible y probablemente no sea posible muchas veces ... simplemente ideal. –

+0

Diría que esta respuesta es un poco genérica. Describe escalas o escalas lineales. De hecho, frente a la memoria, el tiempo, el disco y el ancho de banda que son parámetros de una sola estación. Por lo general, se usará un marco en un entorno distribuido donde estos parámetros pueden no ser tan obvios de evaluar. ¿Puedes comentar sobre 1000 usuarios frente a la escala de 10000 usuarios? – mariotti

+0

La escalabilidad de la administración es otra consideración clave. Si ejecutar una configuración de 5 servidores requiere 1 DBA, y 10 servidores requieren 2 DBA, es posible que no pueda contratar y entrenar DBA lo suficientemente rápido. El elemento humano de mantener un marco es muy importante. –

7

Significa que un marco particular satisface (o no satisface) la demanda creciente que más usuarios le dan. Si tiene una aplicación escrita en VBScript, podría no hacer un buen trabajo manejando los 40,000,000 de usuarios de Facebook, por ejemplo.

This blog post explica algunos de los problemas de escalabilidad que Twitter experimentó hace más o menos un año. Podría proporcionar más información sobre la respuesta a su pregunta.

A veces la falta de escalabilidad se utiliza para denigrar un idioma o marco, así que ten cuidado con eso. Cíñase a los estudios que muestran métricas reales. Esto también se aplica a mi ejemplo de VBScript en el párrafo anterior.

+0

Supongo que Facebook tenía 40 millones de usuarios en 2009, y si no tenían una plataforma que escalara bien, no podrían manejar los 1000 millones de usuarios que tienen ahora – Ozzy

+0

¿No es una locura? Qué diferencia hacen 3 años. Buena atrapada. –

3

Si un marco o una aplicación se escala bien, significa que puede manejar cargas más grandes. A medida que su sitio se vuelve más popular con más visitantes y más visitas por día, un marco que se adapta bien manejará la carga más grande al igual que maneja una carga más pequeña. Un marco que se adapta bien actuará de la misma manera cuando reciba 200,000 golpes por hora que cuando recibe 1 golpe por hora. No solo funciona, sino que se implementa en varios servidores, posiblemente detrás del equilibrio de carga, posiblemente con varios servidores de bases de datos diferentes. Un marco que se adapta bien también puede manejar estas crecientes demandas.

Por ejemplo, Twitter explotó casi toda la noche el año pasado. Fue desarrollado usando Ruby On Rails, y fue presentado en el debate en curso sobre si Rails escala bien o no.

+0

Entonces, ¿qué pasó? ¿Continuaron con Rails? – johnny

+0

Están en parte en Rails y en parte cambian a Scala. http://www.theregister.co.uk/2009/04/01/twitter_on_scala/ –

2

Hay algunos elementos a él en mi mente. El primero es obvio: escala de rendimiento. ¿Se puede usar su infraestructura para construir un sistema de alta capacidad o alto rendimiento o solo puede usarse para construir aplicaciones más pequeñas? ¿Escalará verticalmente en el hardware (bibliotecas paralelas, por ejemplo) y se escalará horizontalmente (por ejemplo, granjas web).

El segundo es ¿se puede escalar a equipos más grandes o la empresa. Es decir, ¿funciona bien con grandes bases de código? Grandes equipos de desarrollo? ¿Tiene un buen soporte de herramientas? ¿Qué tan fácil es desplegar? ¿Se puede lanzar a decenas o cientos o incluso miles de usuarios? Todo el camino hasta es fácil de contratar personas que tienen esta habilidad. Piense en tratar de armar un equipo de desarrollo de 20 o 50 personas que trabajen en este marco. ¿Sería fácil o casi imposible?

0

En mi humilde opinión, decir que un marco "escala bien" por lo general significa que alguien en la cadena de rumores pudo usarlo para manejar gran cantidad de volumen.

En paralelo, la escalabilidad de programación generalmente se usa para describir cómo funciona un algoritmo cuando está paralelizado. Un algoritmo que tiene una aceleración 1: 1 es una bestia rara pero duplicará el rendimiento en dos veces el hardware/cpu, triplicará el hardware/CPU, etc ...

Según mi experiencia, prácticamente cualquier marco puede ser hecho a escala con suficiente experiencia.

Cuanto más fácil sea el marco para usar, mayores serán las posibilidades de que un desarrollador con experiencia insuficiente se encuentre con problemas de escalabilidad.

0

Significa que alguna empresa respetada está haciendo algo serio con ella y no está teniendo ningún problema con ella.

0

Escalar significa qué fácil es satisfacer más demanda utilizando más hardware.

Ejemplo: Usted tiene un sitio web escrito en un idioma que recibe 1000 visitas por día. Usted aparece en alguna revista destacada y su número de usuarios crece. De repente, tienes 1000000 visitas por día, eso es 1000 veces más. Si puede usar 1000 servidores más para satisfacer la creciente necesidad de recursos, su sitio web se adapta bien. Si, por otro lado, agrega 2000 servidores pero aún así los usuarios no pueden conectarse, porque su base de datos solo puede manejar 1000 solicitudes por día, entonces su sitio web no se adapta bien.

Cuestiones relacionadas