Además de seguir los patrones correctos y usar los componentes / abstracciones apropiados dentro de su aplicación, necesita tener la infraestructura adecuada para que su aplicación se adapte a millones de usuarios.
Solicitud
Use las palabras clave async-wait hasta el final de la pila. Obtiene todas las ventajas de la programación asincrónica con una fracción del esfuerzo, y su aplicación escalará mejor. Hoy en día, la mayoría de las abstracciones que realizan operaciones de E / S con uso intensivo de recursos incluyen métodos asincrónicos (por ejemplo, Stream, FileStream y MemoryStream).
- Marcos de aplicaciones web: ¿Por qué a la gente ya no le gusta Struts 2? ¿Qué funciona mejor y por qué?
- ¿Se puede construir un producto viable mínimo basado en web totalmente funcional en Python?
- ¿Por qué eBay no realiza subastas de segundo precio de oferta cerrada?
- ¿Cuáles son los consejos para un mejor desarrollo de aplicaciones web en 2017?
- ¿Cuál es la mejor manera de desarrollar una hoja de cálculo en línea?
Use TPL (Biblioteca de tareas paralelas ) para ejecutar trabajo asincrónico en lugar de crear hilos o usar el grupo de hilos directamente. La Biblioteca paralela de tareas incluye muchas características que permiten que la aplicación se escale mejor. Es compatible con el grupo local de subprocesos de trabajo (para reducir las contiendas en la cola global) con capacidades de robo de trabajo e incluye soporte para el ajuste de niveles de concurrencia (configuración del número de tareas que se pueden ejecutar en paralelo) que le permiten optimizar el rendimiento.
Trate de evitar el uso de cerraduras. Asegurándose de que solo los datos inmutables (que son seguros para subprocesos) se compartan entre los subprocesos, o utilizando sincronización sin bloqueo y primitivas de coordinación (por ejemplo, ConcurrentDictionary) cuando sea posible.
Utilice el almacenamiento NoSQL (docdb, mongodb, etc.) cuando sea posible, ya que simplificará mucho la escala. Use SQL (MySQL, MS-SQL) solo si su aplicación requiere un modelo de consistencia más fuerte o la capacidad de realizar uniones ad-hoc en las tablas.
Infraestructura
Por lo general, desearía crear un front-end ASP.NET MVC sin estado con un buen equilibrador de carga frente a él. Si está utilizando Microsoft Azure (y pronto Microsoft Azure Stack para locales) obtendrá un equilibrio de carga automático dentro del centro de datos, y puede usar Azure Traffic Manager o Akamai para cargar solicitudes de equilibrio en centros de datos (con muy poco esfuerzo) .
Si está creando un servicio con estado (o una combinación de estado y sin estado), puede usar Azure Service Fabric, que le permitirá implementar y administrar cientos o miles de aplicaciones .NET (incluido el sitio oficial de Microsoft ASP.NET) en un clúster de máquinas. Puede ampliar o reducir su clúster fácilmente, sabiendo que las aplicaciones se escalan de acuerdo con los recursos disponibles.