frameworks - two - ¿Qué significa decir que un marco "se adapta bien"?
which two areas are part of the scaled agile framework core values (8)
Cuando traza el uso de recursos (memoria, tiempo, espacio en disco, ancho de banda de la red) contra usuarios concurrentes, obtiene una función que describe cómo funciona la aplicación en diferentes factores de escala.
A pequeña escala, unos pocos usuarios, utiliza algunos recursos.
A 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 escala linealmente, entonces atender 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 de forma lineal, entonces dar servicio a 4,000 usuarios cuesta 1,000 veces más que atender a 2,000 usuarios, lo que cuesta 100 veces atender a 500 usuarios. Esto no escala bien. Algo salió mal al aumentar el uso; No parece predecible y no es lineal.
Cuando leo sobre frameworks (.net. Ruby on rails, django, spring, etc.), sigo viendo esto y lo otro o no se escala bien.
¿Qué significa cuando alguien dice que un marco "se escala bien" y qué significa decir que un marco "no se escala bien"?
Gracias.
El escalado significa lo fácil que es satisfacer una mayor demanda utilizando más hardware.
Ejemplo: tiene un sitio web escrito en algún idioma que recibe 1000 visitas al día. Usted aparece en algún magazin prominente y su número de usuarios crece. De repente tienes 1000000 visitas al día, eso es 1000 veces más. Si solo 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 los usuarios aún no pueden conectarse, porque su base de datos solo puede manejar 1000 solicitudes por día, entonces su sitio web no se adapta bien.
En mi humilde opinión, decir que un marco "se adapta bien" por lo general significa que alguien en la cadena de oídos fue capaz de usarlo para manejar gran cantidad de volumen.
En la programación en paralelo, la escalabilidad se usa generalmente para describir el rendimiento de un algoritmo en paralelo. Un algoritmo que tiene una velocidad de 1: 1 es una bestia rara pero duplicará su rendimiento en dos veces el hardware / cpu, triplicará en tres veces el hardware / cpu, etc.
En mi experiencia, prácticamente cualquier marco se puede hacer a escala con suficiente experiencia.
Cuanto más fácil sea el marco para usar, mayor será la posibilidad de que un desarrollador con experiencia insuficiente se encuentre con problemas de escalabilidad.
Hay algunos elementos en mi mente. El primero es el obvio: la escala de rendimiento. ¿Se puede usar su marco para construir un sistema de alta capacidad y alto rendimiento o simplemente se puede usar para construir aplicaciones más pequeñas? Se escalará verticalmente en el hardware (bibliotecas paralelas, por ejemplo) y se escalará horizontalmente (granjas de servidores web, por ejemplo).
El segundo es puede escalar a equipos más grandes o la empresa. Es decir, ¿funciona bien con bases de código grandes? ¿Grandes equipos de desarrollo? ¿Tiene buena herramienta de soporte? ¿Qué tan fácil es de implementar? ¿Se puede extender a decenas, cientos o incluso miles de usuarios? Hasta el final es fácil contratar personas que tengan esta habilidad. Piense en tratar de reunir un equipo de desarrollo de 20 o 50 personas que trabajen en este marco. ¿Sería fácil o casi imposible?
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 adapte bien manejará la carga más grande de la misma manera que maneja una carga más pequeña. Un marco que se adapte bien actuará de la misma manera cuando reciba 200,000 visitas por hora y cuando recibe 1 visita por hora. No solo aciertos, 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 puede manejar bien estas crecientes demandas.
Por ejemplo, Twitter explotó casi de la noche a la mañana el año pasado. Fue desarrollado utilizando Ruby on Rails, y fue destacado en el debate en curso sobre si Rails se escala bien o no.
Significa que alguna compañía respetada está haciendo algo serio con ella y no tiene ningún problema con ella.
Significa que un marco en particular cumple (o no cumple) la demanda creciente que más usuarios ponen en ella. Si tiene una aplicación escrita en VBScript, es posible que no haga un buen trabajo en el manejo de los 40,000,000 usuarios de Facebook, por ejemplo.
Esta publicación del blog explica algunos de los problemas de escalabilidad que experimentó Twitter hace aproximadamente 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 lenguaje o un marco, así que ten cuidado. Se adhieren a los estudios que muestran métricas reales. Esto se aplica también a mi ejemplo de VBScript en el párrafo anterior.
Sustituya la frase "manejar expansión" por "escala"