web-applications - high - reference architecture microsoft
Escalabilidad en la web (12)
He estado discutiendo con algunos amigos en la universidad, y no podemos llegar a un punto en el cual sea el marco con más escalabilidad para las aplicaciones web (y aún muy rápido).
Uno pide jsp, el otro para ruby otro para php y así sucesivamente. ¿Puedo pedirle que nos aclare qué más potencial de escalabilidad?
Tks, espero no estar duplicando nada que haya buscado, pero no encontré ninguna pregunta previa como esta.
Editar: Si pudieras apuntar una comparación sobre esto, sería bueno :)
A: C ISAPI dll (o módulo de apache personalizado) :)
Incluso entonces, la sobrecarga del servidor web, el análisis de las solicitudes http y el servicio a las páginas html hace que el tiempo de ejecución de sus aplicaciones sea casi irrelevante. Si ejecuta su aplicación como una aplicación CGI, entonces espera un rendimiento aún menor.
Para la escalabilidad en la web, realmente está hablando de agregar más servidores y balanceo de carga, quitando carga del servidor poniendo la base de datos (si se usa mucho) en un servidor separado.
El rendimiento bruto de esos idiomas no es motivo de preocupación. Usa el que quieras usar, con el que serás más productivo. Preocúpese por los otros problemas con los que se encontrará: red io, seguridad, corrección.
La escalabilidad del framework web es una cuestión de reflexión (algunos dirían p155ing contest). A menos que obtenga mega-dólares (buena suerte con eso en estos días) y pueda asegurar millones de visitantes por día, todos esos marcos pueden manejarlo bien (al igual que ASP.NET).
Personalmente, siempre elegiría ASP.NET. Es tan escalable como cualquier cosa y tiene las mejores herramientas de desarrollo. El único inconveniente es el alojamiento y los costos del sistema operativo.
Los algoritmos contarán más para la escalabilidad que el lenguaje utilizado.
Dicho esto, habrá diferencias en la velocidad de ejecución entre los idiomas. Creo que Java (Servlets y JSP compilan a servlets, es decir, código nativo) será más rápido que Ruby y PHP en cierta cantidad). También hay una tonelada de frameworks web para Java que lo animarán a hacer las cosas de la mejor manera para la escalabilidad.
También diseñe su aplicación para que pueda funcionar felizmente detrás de un equilibrador de carga, y la escalabilidad se vuelve mucho más fácil :) Sin embargo, este no es mi campo de experiencia.
No estoy seguro de que alguno de esos frameworks que menciona dificulte seriamente la escalabilidad.
Todo depende de la implementación.
Me concentraría en hacer que tu aplicación web funcione bien primero, y luego me preocuparé por la escalabilidad cuando se convierta en un problema. En otras palabras, "crucemos ese puente cuando lleguemos a él".
Ruby y PHP no son frameworks de aplicaciones web. Son lenguajes de programación que son populares para el desarrollo web.
En términos generales, la escalabilidad de las aplicaciones de Internet no es una propiedad de un lenguaje de programación, y un marco de aplicaciones de aplicaciones puede no obstaculizar la escalabilidad. Una buena escalabilidad es más una propiedad del diseño de la aplicación.
Hay demasiados frameworks webapp para una comparación punto por punto que es casi enciclopédica.
Además, puede abordar la escalabilidad de una aplicación determinada de varias maneras. Una forma es tener un alcance bien definido y estrecho, y tener como objetivo un rendimiento crudo impresionante, de modo que una sola máquina pueda servir miles de unidades de trabajo. El mejor ejemplo es Mailinator .
Otra forma es facilitar el servicio de cargas crecientes al "solo" agregar más hardware. Prácticamente cualquier framework webapp respaldado por una base de datos puede escalar de esta manera: simplemente agregue más servidores de aplicaciones entre un balanceador de carga y un back-end de base de datos compartida. Si enmarca el problema de esta manera, su principal preocupación es diseñar la aplicación para minimizar 1. la contención de la base de datos 2. la carga de la base de datos.
La última forma es diseñar el sistema para que sea increíblemente paralelo en todo momento. Google es el mejor ejemplo.
En resumen: los lenguajes o marcos no hacen aplicaciones escalables, los arquitectos de software sí.
EDITAR: Para ser claros, mi respuesta se centra en la escalabilidad , es decir, la capacidad de manejar cargas crecientes sin cambiar el diseño. Esta es una propiedad diferente de la velocidad de ejecución.
Un lenguaje compilado generalmente se ejecutará más rápido que un lenguaje interpretado, así que creo que Ruby y PHP comienzan detrás de la bola ocho, pero realmente se trata de cómo usas el lenguaje y cómo estructuras el código.
Todos los idiomas tendrán sus mejores prácticas y patrones para construir aplicaciones escalables y, a menudo, habrá compromisos dependiendo de la funcionalidad de la aplicación propuesta.
Varios buenos puntos ya. Mi punto principal sería este: una persona que conozca python por dentro y por fuera probablemente pueda hacer un código más escalable usando Python que usando Java. Y hay muchos sitios inmensamente grandes que usan todas las tecnologías que mencionas, así que no creo que haya ninguna gran ventaja de ninguna manera.
En su mayor parte, debe apegarse a lo que está familiarizado a menos que haya una razón realmente importante para ir por otro camino.
Si desea saber cómo los principales sitios usan LAMP para lograr la escalabilidad, debe echar un vistazo a la fragmentación de la base de datos .
La elección de un marco web tiene menos impacto en la escalabilidad (la capacidad de escalar) que la arquitectura de su sitio. La mayoría de los marcos web modernos se prestan muy bien a la escala, por lo que es realmente su configuración de implementación lo que necesita atención.
(cinco años después...)
Encontré esta publicación de blog que compara varios marcos web dependientes del idioma. Y ahora esto responde bastante bien a la pregunta que tuve en 2008.
http://www.techempower.com/blog/2013/03/28/framework-benchmarks/
Me encontré con esta pregunta y noté que algunos hablan de velocidad, otros de escalabilidad. Escribí una publicación en el blog explicando la diferencia:
http://www.fransekman.com/scalability-or-performance-what-do-you-mean/
"Un sitio web de alta escalabilidad es un sitio web, cuyo nivel de rendimiento se puede mantener agregando más capacidad cuando aumenta la carga". Esto se puede lograr en cualquier lenguaje de programación y en casi cualquier marco. Algunos frameworks tienen funcionalidad incorporada, lo que puede hacer que algunas tareas comunes de escalabilidad sean más rápidas de implementar.
También puede consultar " ¿Qué es más rápido? PHP vs ASP vs JSP vs CGI, etc. "
Creo que Java / Java EE es el único "framework" diseñado desde cero para desarrollar aplicaciones distribuidas / en clúster y que fomenta las buenas prácticas para lograrlo a partir de las especificaciones (EJB, JTA ...).
Pero como de costumbre, depende. Este tipo de preguntas a menudo tienden a provocar guerras :)