Arquitecturas más comunes
Generalmente, no es necesario
inventar una nueva arquitectura de software para cada sistema de información.
Lo habitual es adoptar una arquitectura conocida en función de sus ventajas e
inconvenientes para cada caso en concreto. Así, las arquitecturas más
universales son:
- Monolítica : Donde el software se estructura en grupos funcionales muy acoplados.
- Cliente-servidor: Donde el software reparte su carga de cómputo en dos partes independientes pero sin reparto claro de funciones.
- Arquitectura de tres niveles: Especialización de la arquitectura cliente-servidor donde la carga se divide en tres partes (o capas) con un reparto claro de funciones: una capa para la presentación (interfaz de usuario), otra para el cálculo (donde se encuentra modelado el negocio) y otra para el almacenamiento (persistencia). Una capa solamente tiene relación con la siguiente.
- Modelo Vista Controlador: (MVC) es un patrón de arquitectura de software que separa los datos y la lógica de negocio de una aplicación de la interfaz de usuario y el módulo encargado de gestionar los eventos y las comunicaciones. Para ello MVC propone la construcción de tres componentes distintos que son el modelo, la vista y el controlador, es decir, por un lado define componentes para la representación de la información, y por otro lado para la interacción del usuario1 2 . Este patrón de diseño se basa en las ideas de reutilización de código y la separación de conceptos, características que buscan facilitar la tarea de desarrollo de aplicaciones y su posterior mantenimiento.
- La arquitectura en pipeline: (basada en filtros) consiste en ir transformando un flujo de datos en un proceso comprendido por varias fases secuenciales, siendo la entrada de cada una la salida de la anterior. Esta arquitectura es muy común en el desarrollo de programas para el intérprete de comandos, ya que se pueden concatenar comandos fácilmente con tuberías (pipe).También es una arquitectura muy natural en el paradigma de programación funcional, ya que equivale a la composición de funciones matemáticas.
- Una red peer-to-peer: red de pares, red entre iguales, red entre pares o red punto a punto (P2P, por sus siglas en inglés) es una red de computadoras en la que todos o algunos aspectos funcionan sin clientes ni servidores fijos, sino una serie de nodos que se comportan como iguales entre sí. Es decir, actúan simultáneamente como clientes y servidores respecto a los demás nodos de la red. Las redes P2P permiten el intercambio directo de información, en cualquier formato, entre los ordenadores interconectados. Normalmente este tipo de redes se implementan como redes superpuestas construidas en la capa de aplicación de redes públicas como Internet.El hecho de que sirvan para compartir e intercambiar información de forma directa entre dos o más usuarios ha propiciado que parte de los usuarios lo utilicen para intercambiar archivos cuyo contenido está sujeto a las leyes de copyright, lo que ha generado una gran polémica entre defensores y detractores de estos sistemas. Las redes peer-to-peer aprovechan, administran y optimizan el uso del ancho de banda de los demás usuarios de la red por medio de la conectividad entre los mismos, y obtienen así más rendimiento en las conexiones y transferencias que con algunos métodos centralizados convencionales, donde una cantidad relativamente pequeña de servidores provee el total del ancho de banda y recursos compartidos para un servicio o aplicación.Dichas redes son útiles para diversos propósitos. A menudo se usan para compartir ficheros (archivos) de cualquier tipo (por ejemplo, audio, vídeo o software). Este tipo de red también suele usarse en telefonía VoIP para hacer más eficiente la transmisión de datos en tiempo real. La eficacia de los nodos en el enlace y transmisión de datos puede variar según su configuración local (cortafuegos, NAT, ruteadores, etc.), velocidad de proceso, disponibilidad de ancho de banda de su conexión a la red y capacidad de almacenamiento en disco.
- Arquitectura en pizarra (informática):La arquitectura software en pizarra es un modelo arquitectónico de software habitualmente utilizado en sistemas expertos, sistemas multiagente y, en general, sistemas basados en el conocimiento.
La arquitectura en pizarra consta de múltiples elementos funcionales,
denominados agentes, y un instrumento de control denominado pizarra. Los
agentes suelen estar especializados en una tarea concreta o elemental. Todos
ellos cooperan para alcanzar una meta común, si bien, sus objetivos
individuales no están aparentemente coordinados. El comportamiento básico de
cualquier agente consiste en examinar la pizarra, realizar su tarea y escribir
sus conclusiones en la misma pizarra. De esta manera, otro agente puede
trabajar sobre los resultados generados por otro. La computación termina cuando
se alcanza alguna condición deseada entre los resultados escritos en la
pizarra. La pizarra tiene un doble papel. Por una parte, coordina a los
distintos agentes y, por otra, facilita su intercomunicación. El estado inicial
de la pizarra es una descripción del problema que resolver y el estado final
será la solución del problema. Los resultados generados por los agentes deben
responder a un lenguaje y semántica común. En general, se suelen utilizar
formalismos lógicos o matemáticos, tales como expresiones lógicas de primer
orden.
Ventajas e inconvenientes: Esta arquitectura es tremendamente útil cuando el problema a resolver (o
algoritmo a implementar) es extremadamente complejo en términos cognitivos. Es
decir, cuando el flujo de control del algoritmo es enrevesado, o simplemente,
no se tiene un conocimiento completo del problema a resolver. Las desventajas de la arquitectura son bastante
obvias a priori. Es importante no generalizar en este aspecto, puesto que cada
implementación en particular puede solventar estas desventajas en algún ámbito
limitado:
No existe garantía de que se alcanzará una solución.
Es una arquitectura ineficiente, puesto que no existe una cota respecto al
tiempo de cómputo necesario para resolver el problema.
Es difícil obtener una traza de los pasos que llevaron a la solución, es decir,
no ofrece explicaciones. Desde un punto de vista más filosófico, la
arquitectura en pizarra ofrece un interesante experimento de tipo social. Cada
agente tiene sus propios objetivos, desconoce los objetivos de los demás, y
tampoco conoce el objetivo global (la solución del problema). Sin embargo, se
produce una cooperación inconsciente entre ellos que lleva a una meta más
importante.
Arquitectura orientada a servicios
La
'Arquitectura Orientada a Servicios
de cliente' (en inglés Service Oriented Architecture),
es un concepto de arquitectura de software que define la utilización de
servicios para dar soporte a los requisitos del negocio.
Permite
la creación de sistemas de información altamente escalables que reflejan el
negocio de la organización, a su vez brinda una forma bien definida de
exposición e invocación de servicios (comúnmente pero no exclusivamente servicios web),
lo cual facilita la interacción entre diferentes sistemas propios o de
terceros.
SOA
define las siguientes capas de software:
·
Aplicaciones
básicas - Sistemas desarrollados bajo cualquier
arquitectura o tecnología, geográficamente dispersos y bajo cualquier figura de
propiedad;
·
De exposición de
funcionalidades - Donde las
funcionalidades de la capa aplicativa son expuestas en forma de servicios
(generalmente como servicios web);
·
De integración de
servicios - Facilitan el intercambio de datos entre
elementos de la capa aplicativa orientada a procesos empresariales internos o
en colaboración;
·
De composición de
procesos - Que define el proceso en términos del
negocio y sus necesidades, y que varía en función del negocio;
·
De entrega -
donde los servicios son desplegados a los usuarios finales.
SOA
proporciona una metodología y un marco de trabajo para documentar las
capacidades de negocio y puede dar soporte a las actividades de integración y
consolidación.
Arquitectura dirigida por eventos
La Arquitectura dirigida por eventos, Event-driven architecture o EDA, es
un patrón de arquitectura software que promueve la producción, detección, consumo
de, y reacción a eventos.
Un evento puede ser definido como "un cambio significativo en un
estado". Por ejemplo, cuando un consumidor compra un coche, el estado del
coche pasa de "se vende" a "vendido". La arquitectura del
sistema del vendedor de coches debe tratar este cambio de estado como un
evento, cuyo suceso puede ser conocido en otras aplicaciones en la
arquitectura. Desde una perspectiva formal, lo que es producido, publicado,
propagado, detectado o consumido es un mensaje (típicamente asíncrono) llamado
notificación del evento, y no el evento en si mismo, el cuál es el cambio de
estado que disparó la emisión del evento. Los eventos no viajan, solamente ocurren.
Por otro lado, el término evento es frecuentemente usado para denotar el
mensaje de notificación en sí mismo, lo cual puede llevar a algún tipo de
confusión.
Este patrón arquitectónico puede ser aplicado por el diseño e
implementación de aplicaciones y sistemas que transmitan eventos entre
componentes software que estén emparejados libremente y servicios. Un sistema
dirigido por eventos está compuesto típicamente de emisores de eventos (o
agentes) y consumidores de eventos (o "sink" en inglés). Los
consumidores tienen la responsabilidad de llevar a cabo una reacción tan pronto
como el evento esté presente. La reacción puede o no puede ser completamente
proporcionada por el consumidor en sí mismo. Por ejemplo, el consumidor debe
tener solamente la responsabilidad de filtrar, transformar y reenviar el evento
a otro componente o debe proporcionar una reacción propia a algún evento.
La arquitectura dirigida por eventos puede complementar la arquitectura
orientada a servicios (SOA) porque los servicios pueden ser activados por
disparadores que se encuentran en eventos entrantes. Este paradigma es
particularmente útil cuando el consumidor no proporciona algún contenedor
ejecutivo propio.
SOA 2.0 engloba las implicaciones de las arquitecturas SOA y EDA
proporcionando a un más rico y más robusto nivel, creando un nuevo patrón de
eventos. Este nuevo concepto de disparadores de patrones de inteligencia
promueve a humanos autónomos o procesamiento automático que añade valor
exponencial al negocio. Esto se debe a que se inyecta información de valor
añadido en patrón reconocido que no podía haber sido obtenido previamente.
La maquinaría computacional y los sensores (como sensores de cualquier
tipo, actuadores, controladores,...) pueden detectar cambios de estado de
objetos o condiciones y crear eventos que pueden ser procesados por un servicio
o un sistema. Los disparadores de eventos son condiciones que tienen como
resultado la creación de un evento.
MAQUINA VIRTUAL :
En informática una máquina virtual es
un software que
simula a una computadora y puede ejecutar programas como si fuese una
computadora real. Este software en un principio fue definido como "un
duplicado eficiente y aislado de una máquina física". La acepción del
término actualmente incluye a máquinas virtuales que no tienen ninguna
equivalencia directa con ningún hardware real.
Una característica
esencial de las máquinas virtuales es que los procesos que ejecutan están limitados
por los recursos y abstracciones proporcionados por ellas. Estos procesos
no pueden escaparse de esta "computadora virtual".
.jpg)

.jpg)


No hay comentarios:
Publicar un comentario