Hola,
Hablamos muchas veces de arquitecturas n-capas, aunque muchas menos veces se trata el tema de los n-niveles.
Los n-niveles es un concepto que seguro que habéis usado, aunque no le hayáis etiquetado con este nombre.
Los niveles (tiers en inglés), identifican capas físicas diferenciadas; como ejemplo, diferentes servidores.
En una arquitectura típica en n-capas podemos mantener todas las capas en la misma aplicación o en diferentes aplicaciones pero corriendo en el mismo servidor; acabamos de ver un ejemplo de n-capas y 1-nivel.
Por otro lado, podríamos tener una aplicación asp.net corriendo en una máquina concreta, estando al mismo tiempo una aplicación Windows Communication Foundation corriendo en otro servidor y conteniendo ésta toda la lógica de negocio, caché y acceso a datos. Por íºltimo, la base de datos y los procedimientos almacenados en una tercera máquina. Este sería un ejemplo de arquitectura en n-capas y 3-niveles.
A continuación os dejo un UML de componentes que describe este íºltimo ejemplo.
Y ya una vez situados todos, las ventajas de usar una arquitectura en n-niveles:
* Separación de responsabilidades físicas: puede dimensionarse cada servidor adaptándolo a las exigencias de las capas que en él se despliegan.
* Separación de la carga de trabajo: seguramente la BBDD tirará más de disco duro que el servidor de negocio que tirará más memoria; al estar en máquinas separadas los procesos que ocurran en una o en otra no afectarán al rendimiento global.
* Tolerancia a fallos: al tratarse de diferentes máquinas, si se cae una no se cae todo el sistema (aunque si sólo tienes una aplicación corriendo y necesita de todas las partes, de poco te va a servir)
* Escalabilidad: es posible añadir más de una máquina por nivel y poder permitir así un mayor rendimiento global. Por otro lado este punto mejoraría también la tolerancia a fallos.
Un saludo.
Miguel.