Estoy trabajando en un producto web que se compone de muchas aplicaciones web modulares. Para el usuario final, parece ser una sola aplicación, aunque varios componentes se dividen en sus propias aplicaciones.Estrategias de escala para Service Tiers en .NET
Parte del razonamiento para esto es que se puede escalar fácilmente horizontalmente a través de múltiples servidores de aplicaciones.
Para facilitar el escalado horizontal del nivel de datos, estamos planeando utilizar una capa de servicio web delante de la base de datos. Esta capa se puede escalar a N máquinas, y cada instancia de la misma manejaría el almacenamiento en caché individualmente.
La idea es que una aplicación haga una llamada al equilibrador de carga de nivel de servicio, que asignaría la llamada a una instancia de servicio, esto usaría su caché para devolver datos o conectarse a la base de datos y consultar el datos. Parece que esta sería la solución más sencilla para escalar sin tener que modificar mucho el código de la aplicación.
[N Amount of Databases]
|
\/
[Service Tier X N amount of Machines]
|
\/
[Application Tier X n amount of Machines]
Algunas preguntas surgen, sin embargo, me gustaría que persista sesión de usuario en el nivel de servicio, por lo que cada aplicación acaba de autenticar con un token, sin embargo estoy seguro de cómo me mantengo datos de la sesión en todas las máquinas de servicio sin tener un solo punto de falla.
¿Alguna idea sobre cómo llevarlo a cabo? ¿Alguna otra idea sobre arquitectura? ¿Alguien más tuvo el proyecto de diseñar un sitio que podría manejar millones de visitas por día?
EDIT: ¿Ni siquiera una idea? :(