5

En un sentido tradicional, N-tier significa separar la aplicación en "niveles" y poner cada "nivel" en servidores diferentes. Esto se hizo durante al menos 3 razones:¿Qué significa N-tier Architecture hoy en día?

  1. Mantenimiento:

    a) Mantenimiento Código: más fácil de hacer correcciones de errores y nuevas características.

    b) Mantenimiento de hardware: Eliminar un servidor no interrumpe el servicio desde otro nivel.

  2. Rendimiento: Un servidor a menudo no era lo suficientemente rápido como para manejar solicitudes web, cálculos de lógica de negocios y acceso a bases de datos/archivos al mismo tiempo.

  3. Escalabilidad: Específicamente escalabilidad horizontal

    a) Tolerancia a fallos: Capacidad para tener más de 1 servidor físico por nivel significa que cuando 1 servidor está abajo, la aplicación todavía puede funcionar como un todo.

    b) Equilibrio de carga: Tener múltiples instancias de un nivel ayuda a dar servicio a una gran cantidad de solicitudes.

Hoy en día, el hardware y las redes son lo suficientemente rápidos como para atender miles de solicitudes por segundo en un solo servidor. Además, la palabra de moda para TI en este momento es "consolidación". Por lo tanto, incluso si la aplicación se divide en niveles, probablemente terminarán hospedando en máquinas virtuales en un solo servidor.

Creo que hoy en día, cuando las personas hablan sobre la arquitectura de N-niveles, están hablando de la separación de las preocupaciones dentro de la aplicación. Es más una separación lógica que física. Creo que siempre que logremos una buena separación de preocupaciones y un acoplamiento flexible, las aplicaciones no tienen que ser N-tier. Parece que muchos programadores piensan que la arquitectura N-tier es un estándar de oro que todas las aplicaciones web deben cumplir.

Entonces, ¿qué es la arquitectura N-tier para usted hoy en día?

Respuesta

1

¿Seguridad para uno? ¡Prefiero que llegues a mis servidores web que a mis servidores de aplicaciones!

2

Creo que es, y siempre ha sido, una distinción artificial. Estoy de acuerdo con su premisa de que se refiere principalmente a la separación lógica de componentes en estos días. Sin embargo, todavía hay muchas aplicaciones que son demasiado grandes (basadas en el uso o en datos) para adaptarse a una sola máquina, por lo que la idea de separar una aplicación en componentes discretos por razones de escalabilidad definitivamente no está muerta.

+0

De acuerdo. La separación en componentes discretos por razones de escalabilidad aún no está muerta, pero la consolidación más rápida del hardware y la red y el servidor definitivamente reduce la cantidad de aplicaciones que necesitan hacer esto. –

+0

Probablemente no esté muerto, pero, por ejemplo, en el caso de los sitios web, existen formas más efectivas de manejar más vistas de página. – Durden81

3

De artículo de Wikipedia leí:

general, los niveles término se utiliza para describir la distribución física de componentes de un sistema en servidores independientes, ordenadores o redes (nodos de procesamiento). Una arquitectura de tres niveles tendrá tres nodos de procesamiento . Las capas se refieren a una agrupación lógica de los componentes que pueden estar ubicados físicamente o no en un nodo de procesamiento.

Creo que el concepto de "capa" y el concepto de "nivel" se mezclaron con el tiempo. Personalmente, me gusta hablar solo de capas en lugar de niveles, prefiero las soluciones PAAS, donde mis preocupaciones se centran solo en el software y la industria se está moviendo lentamente en esta dirección.

Además, cuando planifica una aplicación que podría ampliarse en gran medida, todavía no creo que deba pensar en n-tier para la escalabilidad. De hecho, los sitios web muy populares con mucho tráfico solo se separan en 3 componentes: Servidores de base de datos, servidores web (incluidos los servidores de almacenamiento en caché) y algunos CDN (redes de entrega de contenido). Este tipo de separación se puede lograr en cualquier aplicación.

Pero para concluir, creo que un programador solo debe pensar en capas abuot y separación de preocupaciones dentro de la aplicación para lograr la tarea más importante (y difícil): mantenibilidad a largo plazo.

+1

De acuerdo. Supongo que a los gerentes/gerentes superiores/entrevistadores les gusta utilizar la palabra 'N-tier' porque está demostrado que N-tier proporciona mantenimiento, rendimiento y escalabilidad si se hace bien. Pero debe ser visto al revés. Además, pienso en [este artículo] (http://teddziuba.com/2008/04/im-going-to-scale-my-foot-up-y.html) cada vez que hablo de escalabilidad. –

+1

+1 - Las capas son lógicas, los niveles son físicos. Ambos conceptos son todavía muy relevantes y no deben confundirse. –

Cuestiones relacionadas