c# .net asp.net architecture distributed

c# - ¿Cómo determinar la arquitectura distribuida?



.net asp.net (4)

Estoy tratando de entender el proceso de pensamiento al diseñar una aplicación a gran escala.

Digamos que tengo un cliente que necesita un nuevo sitio web para el cliente y está estimando 40,000 pedidos por día con una base de 25,000 usuarios. Al diseñar la aplicación, ¿cómo determinar si se necesita un architecutre distribuido? ¿Debo usar una granja web? etc.

He creado principalmente aplicaciones de 2 niveles (físicas) en el pasado y realmente quiero mejorar mi comprensión.

¡Cualquier idea sería genial!


Carga Pruebe su nueva aplicación desde el primer momento.

Dado que hacer un gran diseño por adelantado nunca le dará los resultados que espera de él (más de 15 años de experiencia), lo mejor que puede hacer es diseñar para el cambio y dejar que la arquitectura adecuada emerja de sus requisitos.

Dada su descripción, adopte una metodología ágil para este proyecto y utilice sus prácticas para guiar su proyecto hacia el éxito. Una de esas prácticas vitales es tener una ''Definición de Hecho'' para todo el trabajo que realice. Claramente en tu DoD tendrás el artículo:

  • Necesita pasar la prueba de carga (40,000 pedidos; 25,000 usuarios por día).

Como luego comenzaría el desarrollo, una de las primeras cosas que debe hacer es, por supuesto, configurar el entorno para que pueda ejecutar dicha prueba de carga. Si eso nunca sucede, ya sabes muy pronto en el proyecto que estarás en problemas. Al realizar la prueba de carga tantas veces como sea necesario (al menos una vez en cada sprint), sabrá que su arquitectura puede / o puede manejar los requisitos de escala.

Hth


Dependerá de muchos otros factores además del número de pedidos por día. ¿Dónde será alojado? ¿Cómo es esa arquitectura física? ¿Qué más hace la aplicación además del comercio electrónico? ¿Necesita integrarse con otras aplicaciones (además de las pasarelas de pago, por supuesto)? Etc.

Una aplicación simple de dos niveles en el entorno de alojamiento en la nube adecuado (como VMware, por ejemplo) que puede escalarse dinámicamente funcionaría bien para un sitio web de comercio electrónico. Una aplicación simple de dos niveles en el entorno de alojamiento local correcto (granja de servidores de carga equilibrada) también debería funcionar bien para un sitio web de comercio electrónico. Es la diferencia entre la ampliación (potencialmente oculta con la virtualización, que termina siendo una escala fuera de orden) y la ampliación (agregar más servidores).

Una arquitectura distribuida le permitiría distribuir la carga del sistema (es decir, el procesamiento de pedidos) a servidores 1: M que se sientan (quizás) detrás de un equilibrador de carga. Este es un enfoque muy común, y también funcionaría muy bien para un sitio web de comercio electrónico.

En mi opinión, no hay una arquitectura o diseño de sistema que se adapte a cada molde. La arquitectura más cercana para adaptarse a cada molde (una vez más, mi opinión) sería una arquitectura orientada a servicios. Si todos los procesos y la lógica del negocio son servicios (y están diseñados correctamente), entonces no importa cómo cambien sus requisitos, no importa cómo se vea o cambie su entorno de alojamiento, y no importa qué requisitos de integración tenga, su sistema puede manejarlo con poco o no hay cambios.


El escalado se puede abordar, al menos parcialmente, con balanceo de carga.

La concurrencia puede ser su verdadero problema. Las transacciones distribuidas son una herramienta de mano pesada, pero no resolverán todos los casos de uso sin un pensamiento adicional.

Algunas compañías financieras tienen requisitos de seguridad adicionales con respecto a los servidores web que tienen acceso directo a la base de datos.


Ya que está codificando .Net, coloque la aplicación en Azure (da cLOUD man, DA CLOUD!;).

Te ayudará a obtener la potencia de procesamiento que necesitarás. La aplicación funcionará bien siempre y cuando no cometas errores estúpidos.