.net - practices - web application architecture diagram
¿Qué tan bien escala.NET? (16)
(Comenzaré por aclararlo, no soy desarrollador de .NET y no estoy vinculado a ningún otro entorno).
Recientemente, escuché que la Bolsa de Londres cayó durante todo un día. También escuché que el software fue escrito en .NET. Hasta este punto, experimentarían éxitos de rendimiento en días ocupados. La gente parece estar culpando a .NET.
No quiero debatir la historia, pero trajo a la mente la pregunta de ¿cómo escala .NET? ¿Qué tan grande es demasiado grande para .NET?
¿Por qué .NET tendría limitaciones de tamaño que otras plataformas no tendrían? No me puedo imaginar ninguna situación en la que te vayas a hacer demasiado grande para .NET. Sin embargo, realmente debe especificar si está hablando de una aplicación .NET winforms o ASP.NET, así como de otros factores relevantes. Esta pregunta es demasiado vaga como para responderla en detalle.
El hecho de que su nombre sea ''Dr Unix'' implica cierto sesgo, por cierto.
Aquí hay un gran libro grueso para leer sobre este tema:
Mejorando el rendimiento y la escalabilidad de la aplicación .NET (Microsoft Press)
Bueno, creo que este sitio está en un .NET Framework. Además, los sitios de Microsoft están basados en él. Entonces, creo que si se hace correctamente, entonces un sitio .net escalará. Vea algunos de los comentarios que Jeff hizo sobre este sitio y los problemas tienden a llegar a problemas de codificación o arquitectura.
Desafortunadamente, hay tantos otros problemas que pueden causar que un proyecto disminuya a medida que aumenta, que tienes mucho que pasar antes de que puedas llegar a un marco al que culpar. Y a menos que pueda ver y analizar minuciosamente el código fuente, sería difícil decir cuál fue la causa raíz. Estaría dispuesto a apostar que no era el marco.
Y no, no trabajo con .NET todos los días.
Dot Net escalas bien. Tenemos grupos de servidores que ejecutan el servidor IIS y las aplicaciones y sitios web asp.net y cuando aumenta la carga de nuestros usuarios, podemos agregar servidores (fácilmente) para aumentar la capacidad. Esto ocurre durante ciertos eventos y la escalabilidad de la arquitectura .net no nos decepcionó.
Me atrevería a adivinar (como los otros) que esto no era un problema de .net.
En realidad, el tiempo de inactividad en el LSE no tuvo absolutamente nada que ver con su plataforma de negociación .NET:
La LSE dijo que el sistema había sido golpeado por un "problema de conectividad" e insistió en que el problema no residía en su plataforma comercial insignia TradElect.
http://www.itworld.com/networking/54760/london-stock-exchange-trading-stops-network-fails
Honestamente, creo que se reduce a la optimización del código, aparte de solo la infraestructura.
En Podcast 19 , Jeff discutió sobre cómo tuvieron que ajustar SQL Server para manejar los tipos de cargas que tiene ; observe que no era .NET lo que necesitaba ajustes aquí.
También se debe tener en cuenta que MySpace.com, una de las redes sociales más masivas que existen, se ejecuta en ASP.NET .
El uso de MySpace de ASP.NET solo es un testimonio de su escalabilidad. Se reducirá a cómo los desarrolladores escribirán sus aplicaciones de tal manera que aproveche mejor esa capacidad.
Muchos sitios grandes como MySpace , Dell.com se ejecuta en asp.net. Además, consulte este artículo de MSDN que ofrece una buena perspectiva de los expertos.
Puede escribir un código incorrecto que no puede escalar en ningún idioma.
.Net es bastante capaz de escalar a cualquier tamaño de sistema, pero, al igual que con cualquier otra pila de tecnología, debe crear el sistema teniendo en cuenta la escala.
La LSE cayó en el peor día posible, pero sea cual sea el motivo por el que dudo que fuera la pila subyacente, ese era el problema. Sospecho que este es un caso de trabajadores pobres culpando a sus herramientas.
Si se hace bien, la arquitectura descarga el estado más transitorio al cliente, lo que facilita la agrupación, lo que lo hace sorprendentemente escalable. Por lo tanto, es un problema del sistema como un todo, en oposición a ASP.NET directamente en ese punto.
Mis 2 centavos.
Tal vez fue el volumen de transacciones lo que provocó el cambio.
Si bien muchos ejemplos dados hasta ahora son buenos, son solo grandes sitios web. (Me odias por decir "solo") Distribuyen páginas y la aplicación ocasional (es decir, escandalosa) a los usuarios. Los procesos de una bolsa de valores compra / vende y combina compradores / vendedores. Eso sería unos pocos órdenes de magnitud más de trabajo para los servidores de aplicaciones.
Sin embargo, pude ver las bases de datos cayendo.
Como dijeron otras personas, no es una cuestión de plataforma.
Lo que importa es la arquitectura de su aplicación: equilibrio de carga, administración de estado, partición, etc. ... No son específicos de la plataforma.
Todo se reduce a 3 cosas:
- Qué tan bien está planificada la aplicación
- ¿Cuál fue el objetivo de escala inicial de la persona que lo construyó?
- Trabajo continuo en los pozos para mejorar y escalar una solución.
MySpace fue mencionado anteriormente, es un hecho conocido que han reescrito su aplicación varias veces cuando alcanzan un nuevo paso de escala (n. ° de usuarios / páginas vistas / etc.). Si han elegido construir la última versión para empezar, habría sido demasiado costoso de mantener y no fue rentable: la escalabilidad debe basarse en la posición actual y el siguiente objetivo de escala.
Una última cosa: aunque a menudo se considera evasivo, las pruebas de resistencia sólidas pueden darle una buena idea de cómo su aplicación trata con la carga a la que apunta antes de que los usuarios la experimenten y ocurra un desastre.
Dirijo un sitio web asp.net relativamente grande, y he encontrado que escala de manera excelente. Por supuesto, gran parte de esto lo atribuyo a tener algunas excelentes herramientas para diagnosticar y corregir los cuellos de botella en el código. Me atrevería a adivinar que los problemas de codificación causan el 99,99% de los problemas que las personas tienen en cualquier marco.
Realmente me molesta cuando la gente dice que .NET es una plataforma de elección porque ''es escalable'', no es más o menos escalable que cualquier otra plataforma: PHP, ColdFusion, JSP o aplicaciones nativas compiladas con C ++ / Delphi, etc ... Escalabilidad isn No es una característica del marco, es una característica del diseño de la aplicación.
MySpace ciertamente no es partidario de la escalabilidad, en su lugar mira la tecnología detrás de la búsqueda de Google o el proyecto SETI @ home.
.NET es en realidad mi plataforma menos favorita para trabajar porque ha ido demasiado lejos al tratar de simplificar el software, tanto que hay cosas que quiero hacer que no puedo, y tratar de superar las limitaciones de .NET es perder tiempo donde se hubiera logrado de manera fácil y rápida con C ++ o PHP. .NET es para el desarrollo de software lo que los bloques duplo son para la ingeniería mecánica: ningún ingeniero mecánico que se precie se verá obligado a utilizar bloques cuadrados de una pulgada de ancho.
Si una aplicación necesita ser escalable, debe pensar en qué datos se deben compartir entre los servidores y cuáles son los datos mínimos necesarios para que la aplicación se ejecute y cumpla con su propósito. La necesidad de escalar una aplicación a menudo puede evitarse teniendo un código súper eficiente en primer lugar (por ejemplo, no .NET o Java), pero esto generalmente requiere una comprensión básica del ensamblaje y cómo se traduce a máquina el idioma elegido. código.
Más tarde noticias ...
"TradElect, la tecnología de la plataforma de negociación del grupo que será reemplazada más adelante este año por un software desarrollado por MillenniumIT, el proveedor de tecnología de Sri Lanka que pertenece a la LSE". ...
http://www.efinancialnews.com/story/2010-09-13/ex-lse-tech-chief-joins-green-investment-company
"Esta transacción permite al Grupo implementar una nueva, más ágil, innovadora y eficiente capacidad de TI para nuestro futuro desarrollo comercial, así como también ejecutar una nueva plataforma de comercio en efectivo que proporcionará una latencia sustancialmente menor, una capacidad significativamente mayor y una escalabilidad mejorada". ..