Contexto
Una compañía fabricante de vidrio desea ofertar sus productos a empresas que manufacturan teléfonos inteligentes y tabletas electrónicas, ya que reconoce que la demanda por este tipo de productos ha ido creciendo exponencialmente. Ante tal expectativa, reconoce que es necesario hacer un ajuste a la arquitectura de su software de su sistema de administración de órdenes de compra que había sido controlado de forma centralizada.
Su arquitecto de software sabe que será necesario implementar un diseño que sea capaz de aprovechar los recursos de cómputo y distribuir los servicios para que los mismos clientes puedan intercambiar información, solicitar órdenes de compra, revisar estatus de órdenes en progreso y controlar el stock en sus inventarios.
Con este cambio, la compañía podrá generar valor a sus clientes, al responderle con rapidez y calidad, atributos que pueden ser diferenciadores en el servicio y generar una ventaja competitiva en un mercado cada vez más exigente.
Explicación
Los sistemas de cómputo pueden presentar diferentes arquitecturas físicas que permiten aprovechar mejor su poder de procesamiento de información. El sistema distribuido es una configuración en la que el hardware se encuentra interconectado, haciendo que el lugar físico y el tipo de equipo sean recursos asequibles y a la vez transparentes para el usuario.
Sommerville (2011), citando a otros autores, considera que las ventajas de los sistemas que tienen un enfoque distribuido son las siguientes:
Haz clic en cada concepto para conocer más detalle.
Es posible que los recursos (hardware y software) puedan ser compartidos entre los elementos que pertenecen al sistema, haciéndose más eficiente en su operación.
Estos sistemas deben utilizar protocolos de interconexión estándar, lo que les permite que cualquier dispositivo o aplicación pueda ser parte del sistema.
Dada la facilidad de compartir recursos, los sistemas distribuidos permiten procesar información en diferentes computadoras al mismo tiempo.
Al agregar más recursos al sistema, se pone a disposición mayores capacidades a todos los elementos.
Los sistemas distribuidos tienen la capacidad de reproducir información, lo que permite aumentar su disponibilidad en caso de alguna falla en algún elemento.
Enseguida analizarás las arquitecturas de software de los sistemas distribuidos más comunes.
8.1 Arquitectura cliente-servidor
El uso de la arquitectura cliente-servidor es la más extendida dentro de las arquitecturas de los sistemas distribuidos ya que permiten administrar las funcionalidades y los recursos en dos elementos fundamentales: un cliente y un servidor, mientras que para el usuario, el acceso a aplicaciones, bases de datos y servicios es transparente. Esta arquitectura la puedes encontrar en muchos sistemas COTS (Commercial Off-The Shelf).
A continuación se describen sus características.
Haz clic en cada concepto para conocer más detalle.
Arquitectura cliente-Servidor
Esta arquitectura establece un paradigma del software en la que los servicios o funcionalidades del sistema son ofrecidos por un elemento llamado Servidor, mientras que los usuarios solicitan estos servicios a través del componente llamado Cliente.
Es posible que un servidor pueda ser cliente de otros servidores, formando así una red de interconexión.
Arquitectura Cliente-Servidor. Tomado de Spamer, M. (2009). Client Server architecture pattern. Recuperado de http://www.spamer.me.uk/wiki/doku.php/client-server_architecture_patterns Sólo para fines educativos.
En el siguiente ejemplo se muestra la arquitectura Cliente/Servidor de un sistema de cajeros automáticos de un banco. En el diagrama se observa que pueden existir replicas de clientes (diferentes cajeros automáticos) y servidores (que pueden estar atendiendo a un grupo de cajeros de una zona o ciudades diferentes).
Observa que hay un proceso principal ATM que envía una solicitud de autorización sobre la operación (por ejemplo un retiro). El servidor de reconfiguración se conecta con el proceso que permite que un cajero active o desactive alguna función específica, por ejemplo, transferencias bancarias o pago de servicios. Cada cajero es controlado por personal de seguidad a través de los servidores de monitoreo. Si existe algún problema con el cajero, el servidor envía una alarma a las estaciones de trabajo del personal de seguridad.
Las siglas FTX se refieren a servidores “Fault Tolerance Unix”. Son servidores que ejecutan procesos de conexión a través del protocolo TCP.
Arquitectura Cliente-Servidor de un Sistema Bancario ATM. Tomado de Clements, P., Bachmann, F., Bass, L., Garlan, D., Ivers, J., Little, R., Merson, P., Nord. R., Stafford, J. (2010). Documenting Software Architectures: Views and Beyond (2a ed.). EE. UU: Addison-Wesley Professional. Sólo para fines educativos.
Los clientes hacen solicitudes al servidor a través de conectores que enviarán mensajes del tipo request / response.
8.2 Arquitectura Peer to Peer
En la arquitectura cliente-servidor, la carga de procesamiento de información se encuentra en el servidor, mientras que los clientes mantienen una capacidad ociosa de procesamiento que por lo general se desaprovecha. Ante esta situación se diseñó la arquitectura P2P (peer to peer o entre iguales). En esta arquitectura el procesamiento puede realizarse en cada uno de los clientes, aprovechando así su poder de computación y almacenamiento.
Uno de los primeros ejemplos de este tipo de redes fue Napster, una arquitectura P2P centralizada, que permitía a los usuarios compartir archivos en formato MP3, a través de un servidor central. Actualmente, las arquitecturas P2P no requieren de servidores.
Aplicaciones como Gnutella, BitTorrent, Ares, Limewire, entre otras, están basadas en esta arquitectura.
Haz clic en cada concepto para conocer más detalle.
Peer to Peer (P2P)
Es una arquitectura en la que cada nodo o terminal permite conectarse con otro nodo o terminal sin necesidad de servidores o clientes. Cada nodo es capaz de detectar otros nodos de forma autónoma.
En una arquitectura P2P descentralizada, los nodos de la red mantienen funciones de conmutación de datos entre los nodos.
Arquitectura P2P Puro.
En el siguiente ejemplo propuesto por Sommerville (2011), se muestra una arquitectura de un consorcio de investigadores. Los nodos comparten archivos, mientras cada uno de ellos mantiene su capacidad de almacenamiento independiente del resto. Si un nodo obtiene algún archivo de otro nodo, éste pone a disposición el mismo archivo al resto de los nodos.
La eficiencia de búsqueda de archivos está basada en revisar primero en los nodos locales antes de consultar nodos lejanos.
Por ejemplo, si el n1 solicita un archivo que se encuentre el n13, el algoritmo de búsqueda empezará en los nodos más cercanos hasta detectar el archivo, creando un camino de regreso en una conexión punto a punto entre el n13 y el n1. Ahora n1 podrá ofrecer este mismo archivo al resto de los nodos.
Arquitectura P2P descentralizada. Tomado del libro de Sommerville, I. (2011). Ingeniería de Software (9ª ed.). México: Pearson. Fig. 18.14. Sólo para fines educativos
En opinión de Sommerville (2011), esta arquitectura es ideal en dos escenarios principalmente:
Esta arquitectura es utilizada cuando se requieren funcionalidades de e-business para el intercambio de información entre clientes y proveedores.
8.3 Arquitectura orientada al servicio
Las arquitecturas orientadas al servicio o SOA por sus siglas en inglés “service oriented architectures”, surgen de la necesidad de hacer disponible información o recursos computacionales para cualquier programa sin depender del tipo de plataforma o el lenguaje de programación utilizado. La forma para cumplir este objetivo es a través de una interfaz de un web service. Esta interfaz permite reconocer si la información se encuentra disponible y establece los mecanismos para acceder a ella.
Para Sommerville (2011), las SOA son una respuesta para los sistemas distribuidos que requieren convertir sus componentes en servicios independientes ejecutándose en computadoras geográficamente distantes.
Haz clic en cada concepto para conocer más detalle.
Arquitectura orientada al servicio
Permiten desarrollar sistemas distribuidos con componentes que ofrecen servicios de manera independiente con la facilidad de estar geográficamente distribuidos.
En una arquitectura basada en servicio, los proveedores ofrecen servicios a través de una o varias interfaces. Los programas que requieren de estos servicios ubican al proveedor a través de las especificaciones del servicio, establecen una conexión por medio de un protocolo de comunicación y hacen uso del servicio.
Arquitectura orientada a servicios. Tomado del libro de Sommerville, I. (2011). Ingeniería de Software (9ª ed.). México: Pearson. Sólo para fines educativos.
En el siguiente ejemplo, Bass et al (2012), ofrecen la arquitectura SOA a través de un sistema llamado Adventure Builder.
Este sistema permite a los clientes elegir las actividades, alojamiento y transporte que requieren para vacacionar. Adventure Builder interactúa con proveedores de este tipo de servicios y con servicios de bancarios que les permite procesar el pago de sus clientes.
Observa en el siguiente diagrama, la existencia de una unidad central de procesamiento de órdenes llamada OPC, que coordina la interacción entre los consumidores y los proveedores (internos y externos) de los servicios que solicita el cliente. Es importante hacer notar que no importa el tipo de plataforma que utilicen los proveedores (Sistemas JAVA o .NET), cada uno de ellos utiliza un web service que permite la interoperabilidad necesaria para crear valor al cliente.
Ejemplo de la arquitectura SOA. Tomado del libro de Bass, L., Clements, P. y Kazman, R. (2012). Software Architecture in Practice. EE. UU.: Addison - Wesley Professional.
Cuando se requieren ejecutar servicios que se encuentran distribuidos en diferentes plataformas, implementados en diferentes lenguajes de programación y que son provistos por diferentes organizaciones.
Se requieren algunos componentes intermedios para utilizar servicios que ofrecen los proveedores.
Cierre
Los sistemas distribuidos son implementados a través de las arquitecturas cliente-servidor, peer to peer y orientados al servicio. Cada una de ellas ofrece la posibilidad de ubicar diferentes servicios en diferentes lugares, compartir información con entidades ajenas a la organización y aprovechar recursos de cómputo.
Estas arquitecturas han revolucionado la forma en cómo puedes acceder a una amplia gama de información y solicitar servicios o artículos desde la comodidad de tu hogar. Incluso han puesto en jaque a negocios que no habían podido reinventarse con el uso de la tecnología como son las industrias de la música y el cine, al enfrentarse a la funcionalidad de compartir archivos a través de las arquitecturas P2P.
El reto para todo arquitecto o diseñador de software es aprovechar las ventajas que ofrecen las arquitecturas de los sistemas distribuidos y apoyar las estrategias de negocio que se convertirán en innovaciones y generando así ventajas competitivas que le aseguren su permanencia en el mercado.
Checkpoint
Asegúrate de poder:
Glosario
COTS: Commercial Off-The Shelf. Son sistemas de información basados en computadora que se ofrecen al mercado como un desarrollo de software genérico. Tratan de abarcar los requerimientos que pudieran tener los clientes de forma general sin la necesidad de cambiar el código. ERP’s como SAP, People Soft, y Microsoft Dynamics son ejemplos de este tipo de sistemas.
Referencias