Informática y Sistemas (β)

2009/09/22 - 22 septiembre 2009

Evaluando arquitecturas de n-capas

alcance del Application Architecture Guide 2nd ed

alcance del Application Architecture Guide 2nd ed

Se encuentra en preparación la segunda edición de la guía de recomendaciones sobre arquitecturas de Microsoft (Patterns & Practices Microsoft Application Architecture Guide) cuya versión anterior data del año 2002 y que se constituyó en un punto obligado de referencia para todos los arquitectos de sistemas informáticos que trabajaron sobre tecnologías de Microsoft. Sin embargo se puede acceder a una versión previa o CTP fechada a Enero de 2009.

En este sentido, y dado el tiempo que ha pasado desde la primera edición donde se introducía el modelo de n-capas y que muchos hemos trabajado a lo largo de estos años; llama mucho la atención donde se recomienda explícitamente que bajo esta arquitectura cada capa debe estar físicamente en servidores separados (“N-tier architectures have at least three separate logical layers, or parts. Each layer has specific functionality that it is responsible for, and located on, physically different servers” cap 6, pag 124). Esto puede ser una condición necesaria para grandes aplicaciones, donde se necesiten equipos dedicados para atender las operaciones de cada capa en forma independiente, o además se necesite aislar de alguna manera la capa de negocios (Business Layer) por temas de seguridad.

Sin embargo, esto da por tierra cualquier comunicación entre capas que no sea dada por servicio de mensajes; lo que resulta una restricción sumamente fuerte desde el punto de vista del rendimiento (entendido como velocidad de respuesta). Obviamente, el texto en cuestión es solo un compendio de recomendaciones; donde se proponen muchos lineamientos que a veces deben balancearse antes de aplicarlos ciegamente al mundo real. De hecho, una configuración que me ha dado excelentes resultados es el de ubicar la base datos en un servidor (o storage) dedicado, y las tres capas en un solo servidor de aplicación, las que básicamente se comunican por referencias directas de sus librerías (Dynamic Link Library o dll).

Ahora bien, la pregunta que surge a partir de esto es ¿qué necesidad hay entonces de establecer el modelo de tres capas? Lógicamente ya no sería necesario, y podrían aplicarse otros modelos. Pero el criterio aquí pasa por una razón práctica, el modelo de desarrollo por capas no solo es recomendable por su versatilidad, sino que tiene otras ventajas que van más allá de lo técnico:

  • Facilita enfocar los esfuerzos de un área de desarrollo para un trabajo más coordinado de conjunto.
  • Permite dividir equipos de desarrollo en grupos que se dediquen exclusivamente a cada capa, y que interactúen entre ellos de forma metódica y documentada lo que se reflejará en un sistema optimizado de acoplamiento entre capas.
  • Es un esquema sumamente fácil de adaptar a distintas capas de presentación con mínimo esfuerzo de desarrollo y facilitando el mantenimiento (puede utilizarse un gran porcentaje del desarrollo en forma común para aplicaciones Web, Windows, o Smart Client).
  • Permite organizar mejor y en forma más enfocada la práctica de pruebas unitarias, en los casos en que se utilice este método.
  • Se allana el camino para una eventual separación de capas en servidores físicos independientes con un esfuerzo menor adicional, como evolución o ampliación futura sin necesidad de sobredimensionar la infraestructura inicial en forma innecesaria; ahorrando costos de lanzamiento y permitiendo que el mismo sistema financie sus mejoras.

Estas consideraciones han hecho de este modelo una de las arquitecturas que utilizo recurrentemente, aunque obviamente la adopción de una arquitectura no es tajante, y tal como propone la guía citada pueden combinarse diferentes opciones de modelos; y es allí donde a más allá de las recomendaciones interviene la parte creativa y experiencia del arquitecto como recurso de peso para solucionar situaciones.

(tiny)

Anuncios

Dejar un comentario »

Aún no hay comentarios.

RSS feed for comments on this post. TrackBack URI

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

Crea un blog o un sitio web gratuitos con WordPress.com.

A %d blogueros les gusta esto: