¿Qué es una arquitectura de n niveles?

Completado

Una arquitectura de n niveles divide una aplicación en capas lógicas y niveles físicos. La n representa el número de niveles físicos en los que se divide la aplicación, que normalmente coincide con el número de capas. Podríamos tener una arquitectura de dos niveles (cliente y servidor), o incluso una arquitectura de cinco niveles, aunque es habitual y normalmente recomendable mantener el número de niveles en cuatro o menos.

Veamos de qué se componen los niveles y las capas.

¿Qué son las capas?

Las capas separan de forma lógica el código de aplicación que conforma una aplicación. Cada capa tiene una responsabilidad específica, como el control de las solicitudes de los usuarios, la ejecución de la lógica de negocios o el control del almacenamiento de datos.

Al separar una aplicación en estas capas lógicas, cada una se trata por separado. Esto hace que los componentes de la aplicación sean modulares y facilita el mantenimiento de la aplicación. Se puede optimizar la aplicación para cada una de las responsabilidades. La capa que controla las solicitudes web se centra en su tarea principal: el control de las solicitudes web. No tiene que preocuparse del almacenamiento de los datos ni de la ejecución de la lógica de negocios. Por el contrario, la capa de acceso a datos se centra en optimizar la comunicación con el almacén de datos e ignora los detalles de la presentación de los datos al usuario. Este concepto de limitar el foco a características concretas se denomina separación de preocupaciones.

Este es un diagrama en el que se muestran las capas en una arquitectura común de n niveles. Cada capa controla un aspecto de la aplicación. La capa de negocio administra la comunicación entre la capa de interfaz de usuario y la capa de acceso a datos.

Visualización de las capas.

¿Qué son los niveles?

Los niveles representan la separación física de los elementos de la aplicación en recursos de proceso independientes. En general, en cada nivel físico se ejecuta una capa lógica de la aplicación.

La separación de la arquitectura en niveles físicos conlleva varias ventajas:

  • Los componentes de aplicación se pueden escalar por separado mediante la adición de recursos a cada nivel.
  • Se puede aumentar la resistencia de la aplicación mediante la adición de equilibrio de carga para detectar recursos con errores y redirigir las solicitudes a sistemas en buen estado.
  • Se puede aumentar la seguridad de la aplicación mediante la restricción de la comunicación de red entre los niveles y permitir solo el acceso que sea necesario.

La comunicación entre los niveles se debe realizar de arriba a abajo. Se permite que cada nivel se comunique con el siguiente situado debajo, pero generalmente no está permitido omitir niveles. Esto se hace para mejorar la seguridad al limitar el área expuesta de un nivel.

Visualización de los niveles.

La arquitectura de tres niveles

De todas las arquitecturas de n niveles, la de tres niveles es la más común. Las responsabilidades y los nombres de cada capa y cada nivel varían por aplicación y empresa, pero una aplicación típica de tres niveles tiene: un nivel de presentación, uno de aplicación o nivel intermedio, y un nivel de datos. Este es el estilo de n niveles más común, y en el resto de este módulo se hará referencia a un modelo de tres niveles en el que cada uno ejecuta una sola capa de la aplicación, y se hará referencia a ellos como niveles.

Nivel de presentación

El nivel de presentación normalmente facilita las solicitudes de usuario. Se podría tratar de usuarios que acceden a una página web, o bien del acceso público a la aplicación a través de una API expuesta. Este nivel se centra en la experiencia del usuario, y proporciona funciones como una interfaz intuitiva y garantiza la comunicación segura entre el usuario final y la aplicación.

En este nivel no hay que preocuparse por los datos, excepto por la forma en que se presentan al usuario. Normalmente, en este nivel no hay ningún procesamiento ni acceso a los datos. Esta es la responsabilidad de los niveles inferiores.

Nivel de aplicación

El nivel de aplicación (denominado también nivel intermedio) normalmente se centra en controlar la lógica de negocios de la aplicación. Esto podría ser el control de un pedido de cliente, el seguimiento de un envío o la actualización del inventario en función de los materiales recibidos. Este nivel también es responsable de las actividades de creación, lectura, actualización y eliminación (CRUD) en el nivel de datos. También es un buen lugar para realizar llamadas a servicios dependientes, como API externas.

Este nivel no se preocupa de cómo se presenta la información al usuario, ni tampoco de la forma de almacenar y recuperar los datos. El foco está en la lógica de negocios necesaria para satisfacer la solicitud que ha recibido la aplicación.

Nivel de datos

En este nivel, el foco está en el almacenamiento de los datos. Este nivel es responsable de almacenar los datos en tablas, archivos o cualquier otro medio. Este nivel proporciona una interfaz (por ejemplo, Transact-SQL) para acceder a los datos. En una arquitectura de tres niveles, el nivel de datos proporciona acceso de datos al nivel de aplicación.

Este nivel no se centra en cómo se presentan los datos al usuario, ni tampoco en la lógica relacionada con los datos. El uso de procedimientos almacenados se puede incluir en este nivel, pero la mayoría de la lógica relacionada con los datos en sí se debe controlar en un nivel superior.

Cuándo usar las arquitecturas de n niveles

Después de hablar sobre qué es una arquitectura de n niveles, se describirá cuándo se usaría una arquitectura de este estilo. Considere una arquitectura de n niveles para:

  • Aplicaciones web pequeñas y medianas.
  • La migración de una aplicación local a Azure con mínima refactorización.
  • El aprovechamiento de conjuntos de habilidades y funcionalidades para desarrolladores con experiencia en el desarrollo local.

Las aplicaciones web constituyen un buen caso de uso para las arquitecturas de este estilo. Dada la complejidad reducida de este estilo de arquitectura y la separación natural habitual entre las responsabilidades en las aplicaciones web, las arquitecturas de n niveles pueden funcionar bien. Podría tratarse de aplicaciones de acceso público, o bien aplicaciones de línea de negocio que una organización use de forma interna. Para aplicaciones más pequeñas o menos complejas, puede ser suficiente con una arquitectura de dos niveles (cliente/servidor), con los niveles de presentación y aplicación combinados en lugar de separados.

Las arquitecturas de n niveles son comunes en las aplicaciones locales tradicionales, por lo que es una opción ideal para migrar las cargas de trabajo existentes a Azure. A menudo, las aplicaciones de este estilo se migran a Azure con una refactorización o modificaciones mínimas, lo que simplifica la migración inicial. Una vez en Azure, puede beneficiarse de los servicios de plataforma como servicio (PaaS) para mejorar aún más la aplicación.

Como se trata de un estilo arquitectónico común, los ingenieros suelen tener un mayor nivel de experiencia y familiaridad con él. Al elegir esta arquitectura, puede usar conjuntos de aptitudes existentes para implementar aplicaciones sin tener que recurrir a patrones de arquitectura nuevos.

Comprobación de conocimientos

1.

Es necesario actualizar una aplicación de tres niveles para integrarla con una API de asociado. ¿A qué nivel se debería agregar esta funcionalidad?

2.

¿En qué nivel es aceptable permitir el acceso a los usuarios?