Estoy desarrollando una aplicación basada en la web cuyo objetivo principal es obtener datos de la base de datos, mostrarlos en la interfaz de usuario, tomar las entradas de los usuarios y volver a escribirlas en la base de datos. La aplicación no va a hacer ningún algoritmo de fuerza industrial, pero recibirá un número muy alto de visitas en las horas pico (que se describen a continuación) que cambiarán a lo largo del día.
Las capas son su típica presentación, negocio, datos. El servidor de bases de datos se encarga de la capa de datos. La capa empresarial contendrá el componente DAL para acceder al servidor de base de datos a través de tcp. Las opciones que tengo para separar estas capas en niveles son:
- La presentación y las capas empresariales pueden mantenerse en el mismo nivel.
- La capa de presentación en un nivel separado por sí misma y la capa empresarial en un nivel separado por sí misma.
En el caso de la opción 2, la capa de presentación accederá a la capa empresarial mediante un servicio WCF a través de http o tcp.
No veo ningún procesamiento pesado en la capa Business, por lo que me estoy inclinando hacia la opción 1 anterior. También siento por la misma razón, agregar un nuevo nivel solo introducirá la latencia de la red. Sin embargo, en términos de escalabilidad en caso de que necesite escalar o escalar, ¿cuál es una mejor manera de hacerlo? Esta aplicación deberá ser capaz de soportar hasta 6 millones de usuarios por hora. Habrá una cantidad razonable de datos en cada sesión de usuario, almacenando las preferencias del usuario y otros detalles. También usaré el almacenamiento en caché a nivel de página.