Arquitectura multinivel

Compartir Imprimir Citar
Arquitectura del sistema de computación

En ingeniería de software, la arquitectura multicapa (a menudo denominada arquitectura de ncapas) es una arquitectura cliente-servidor en la que la presentación, las funciones de procesamiento de aplicaciones y gestión de datos están separadas físicamente. El uso más generalizado de la arquitectura multinivel es la arquitectura de tres niveles.

La arquitectura de aplicaciones de N niveles proporciona un modelo mediante el cual los desarrolladores pueden crear aplicaciones flexibles y reutilizables. Al segregar una aplicación en niveles, los desarrolladores adquieren la opción de modificar o agregar un nivel específico, en lugar de volver a trabajar en toda la aplicación. Una arquitectura de tres niveles normalmente se compone de un nivel de presentación, un nivel lógico y un nivel de datos.

Si bien los conceptos de capa y nivel a menudo se usan indistintamente, un punto de vista bastante común es que, de hecho, existe una diferencia. Este punto de vista sostiene que una capa es un mecanismo de estructuración lógica para los elementos conceptuales que componen la solución de software, mientras que un nivel es un mecanismo de estructuración física para los elementos de hardware que la componen. la infraestructura del sistema. Por ejemplo, una solución de tres capas podría implementarse fácilmente en un solo nivel, como en el caso de una arquitectura extrema centrada en la base de datos denominada arquitectura solo RDBMS o en una estación de trabajo personal.

Capas

Las "Capas" El patrón arquitectónico se ha descrito en varias publicaciones.

Capas comunes

En una arquitectura lógica multicapa para un sistema de información con un diseño orientado a objetos, los siguientes cuatro son los más comunes:

El libro Domain Driven Design describe algunos usos comunes de las cuatro capas anteriores, aunque su enfoque principal es la capa de dominio.

Si la arquitectura de la aplicación no tiene una distinción explícita entre la capa empresarial y la capa de presentación (es decir, la capa de presentación se considera parte de la capa empresarial), se ha implementado un modelo tradicional cliente-servidor (dos niveles).

La convención más habitual es que la capa de aplicación (o capa de servicio) se considera una subcapa de la capa empresarial, que normalmente encapsula la definición de API que muestra la funcionalidad empresarial admitida. Las capas de aplicaciones/negocios pueden, de hecho, subdividirse aún más para enfatizar subcapas adicionales de distintas responsabilidades. Por ejemplo, si se usa el patrón modelo-vista-presentador, la subcapa del presentador podría usarse como una capa adicional entre la capa de la interfaz de usuario y la capa de negocios/aplicación (representada por la subcapa del modelo).

Algunos también identifican una capa independiente denominada capa de infraestructura empresarial (BI), ubicada entre las capas empresarial y de infraestructura. A veces también se la denomina "capa empresarial de bajo nivel" o la "capa de servicios empresariales". Esta capa es muy general y se puede utilizar en varios niveles de aplicación (por ejemplo, un convertidor de divisas).

La capa de infraestructura se puede dividir en diferentes niveles (servicios técnicos de alto o bajo nivel). Los desarrolladores a menudo se centran en las capacidades de persistencia (acceso a datos) de la capa de infraestructura y, por lo tanto, solo hablan de la capa de persistencia o la capa de acceso a datos (en lugar de una capa de infraestructura o una capa de servicios técnicos). En otras palabras, el otro tipo de servicios técnicos no siempre se considera explícitamente como parte de una capa en particular.

Una capa está encima de otra, porque depende de ella. Cada capa puede existir sin las capas superiores y requiere que las capas inferiores funcionen. Otra opinión común es que las capas no siempre dependen estrictamente solo de la capa adyacente que se encuentra debajo. Por ejemplo, en un sistema de capas relajado (a diferencia de un sistema de capas estricto), una capa también puede depender de todas las capas debajo de ella.

Arquitectura de tres niveles

Reseña de una aplicación de tres niveles.

La arquitectura de tres niveles es un patrón de arquitectura de software cliente-servidor en el que la interfaz de usuario (presentación), la lógica del proceso funcional ("reglas comerciales"), el almacenamiento de datos informáticos y el acceso a los datos se desarrollan y mantienen como módulos independientes, la mayoría de las veces en plataformas separadas. Fue desarrollado por John J. Donovan en Open Environment Corporation (OEC), una empresa de herramientas que fundó en Cambridge, Massachusetts.

Además de las ventajas habituales del software modular con interfaces bien definidas, la arquitectura de tres niveles está diseñada para permitir que cualquiera de los tres niveles se actualice o reemplace de forma independiente en respuesta a cambios en los requisitos o la tecnología. Por ejemplo, un cambio de sistema operativo en el nivel de presentación solo afectaría el código de la interfaz de usuario.

Por lo general, la interfaz de usuario se ejecuta en una PC de escritorio o estación de trabajo y utiliza una interfaz gráfica de usuario estándar, una lógica de proceso funcional que puede consistir en uno o más módulos separados que se ejecutan en una estación de trabajo o servidor de aplicaciones y un RDBMS en un servidor de base de datos. o mainframe que contiene la lógica de almacenamiento de datos de la computadora. El nivel intermedio puede tener varios niveles (en cuyo caso, la arquitectura general se denomina arquitectura de 'n niveles').

Presentación del timón
Este es el nivel más alto de la aplicación. El nivel de presentación muestra información relacionada con servicios tales como la navegación de mercancías, la compra y el contenido del carrito de compras. Se comunica con otros niveles por los cuales pone los resultados al nivel del navegador/cliente y todos los demás niveles de la red. En términos simples, es una capa que los usuarios pueden acceder directamente (como una página web, o un sistema operativo GUI).
Nivel de aplicación (lógica empresarial, nivel lógico o nivel medio)
El nivel lógico se extrae del nivel de presentación y, como su capa, controla la funcionalidad de una aplicación mediante el procesamiento detallado.
Titular de datos
El nivel de datos incluye los mecanismos de persistencia de datos (servidores de base de datos, acciones de archivos, etc.) y la capa de acceso de datos que encapsula los mecanismos de persistencia y expone los datos. La capa de acceso a los datos debe proporcionar una API al nivel de aplicación que expone métodos para gestionar los datos almacenados sin exponer ni crear dependencias de los mecanismos de almacenamiento de datos. Evitar las dependencias de los mecanismos de almacenamiento permite actualizaciones o cambios sin que los clientes de nivel de aplicación sean afectados por o incluso conscientes del cambio. Al igual que con la separación de cualquier nivel, hay costos de ejecución y a menudo costos de rendimiento a cambio de una mayor escalabilidad y mantenimiento.

Uso de desarrollo web

En el campo del desarrollo web, los tres niveles se utilizan a menudo para referirse a sitios web, comúnmente sitios web de comercio electrónico, que se construyen utilizando tres niveles:

  1. Un servidor web de gama frontal que sirve contenido estático, y potencialmente algún contenido dinámico caché. En la aplicación basada en web, el extremo frontal es el contenido renderizado por el navegador. El contenido puede ser estático o generado dinámicamente.
  2. Un servidor de aplicaciones de nivel medio dinámico de procesamiento y generación (por ejemplo, Symfony, Spring, ASP.NET, Django, Rails, Node.js).
  3. Una base de datos o una tienda de datos de back-end, que comprende conjuntos de datos y el software del sistema de gestión de bases de datos que gestiona y proporciona acceso a los datos.

Otras consideraciones

La transferencia de datos entre niveles es parte de la arquitectura. Los protocolos involucrados pueden incluir uno o más de SNMP, CORBA, Java RMI,.NET Remoting, Windows Communication Foundation, sockets, UDP, servicios web u otros protocolos estándar o propietarios. A menudo, se utiliza middleware para conectar los niveles separados. Los niveles separados a menudo (pero no necesariamente) se ejecutan en servidores físicos separados, y cada nivel puede ejecutarse en un clúster.

Trazabilidad

La trazabilidad de extremo a extremo de los flujos de datos a través de sistemas de n-niveles es una tarea desafiante que se vuelve más importante cuando los sistemas aumentan en complejidad. La medición de la respuesta de la aplicación define conceptos y API para medir el rendimiento y correlacionar transacciones entre niveles. Generalmente, el término "niveles" se utiliza para describir la distribución física de los componentes de un sistema en servidores, computadoras o redes independientes (nodos de procesamiento). Entonces, una arquitectura de tres niveles tendrá tres nodos de procesamiento. El término "capas" se refiere a una agrupación lógica de componentes que pueden o no estar ubicados físicamente en un nodo de procesamiento.