5. Arquitectura del SoftwareEscueladeIngenieríaInformáticaUniversidaddeOviedo
Secuencial - Batch
Programas separados son ejecutados en orden
Los datos deben pasarse de un programa al
siguiente
Nota
El estilo secuencial (batch) puede considerarse el
abuelo de los estilos arquitectónicos
Etapa
Puerto
escritura
Etapa
Componente
Etapa
Conector
entre etapas
Etapa
Puerto
Lectura
7. Arquitectura del SoftwareEscueladeIngenieríaInformáticaUniversidaddeOviedo
Secuencial - Batch
Ventajas
Débil acoplamiento entre componentes
Re-configurabilidad
Etapas identificadas facilitan depuración de proceso
Problemas
No proporciona interfaz interactivo
Requiere intervención externa
No hay soporta para concurrencia
Baja velocidad (throughput)
Alta latencia
9. Arquitectura del SoftwareEscueladeIngenieríaInformáticaUniversidaddeOviedo
Pipes & Filters
Elementos
Filtro: componente que transforma los datos. Los
filtros pueden ejecutarse concurréntemente.
Tubería (Pipe): Lleva datos de la salida de un filtro
a la entrada de otro filtro
Propiedades: tamaño de búffer, formato de
datos, protocolo de interacción
11. Arquitectura del SoftwareEscueladeIngenieríaInformáticaUniversidaddeOviedo
Pipes & Filters
Ventajas
Facilita comprensión
Comportamiento total = suma de comportamiento de
cada filtro
Reusabilidad:
2 filtros cualquiera pueden recombinarse
Extensibilidad: crear/añadir nuevos filtros
Evolución: Substuirse filtros viejos por nuevos
Verificación independiente de cada filtro
Mejora rendimiento
Permite ejecución concurrente entre filtros
23. Arquitectura del SoftwareEscueladeIngenieríaInformáticaUniversidaddeOviedo
MVC
MVC: Modelo - Vista - Controlador
Creado por Trygve Reenskaug a finales de los 70
Solución para GUI
Incorpora un controlador para separar el modelo
de la vista que se ofrece al usuario
El usuario trabaja con un "modelo mental" del
modelo real, que se ofrece a través de vistas
39. Arquitectura del SoftwareEscueladeIngenieríaInformáticaUniversidaddeOviedo
Datos compartidos
Elementos
Almacén de datos
Base de datos o repositorio centralizado
Componentes
Procesadores que acceden a la memoria compartida
Restricciones
Componentes actúan sobre el estado global
Los componentes no se comunican entre sí
Sólo a través del estado compartido
El estado garantiza la estabilidad de los datos
50. Arquitectura del SoftwareEscueladeIngenieríaInformáticaUniversidaddeOviedo
Sistemas basados en reglas
Elementos:
Base de conocimiento: Conjunto de hechos y reglas
sobre un determinado dominio
Interfaz de usuario: Accede a la base de
conocimiento para consultar/modificar
Motor de inferencia: Sistema encargado de
responder consultas a partir de los datos y la base
de conocimiento
73. Arquitectura del SoftwareEscueladeIngenieríaInformáticaUniversidaddeOviedo
Basados en eventos
Elementos:
Evento:
Algo que ha ocurrido (≠ petición)
Productor de eventos
Generador de eventos (sensores, sistemas, ...)
Consumidor de eventos
BD, aplicaciones, cuadros de mando, ...
Procesador de eventos
Canal de transmisión
Procesador que filtra y transforma eventos
75. Arquitectura del SoftwareEscueladeIngenieríaInformáticaUniversidaddeOviedo
Basados en eventos
Ventajas
Desacoplamiento: el productor de eventos no
depende del consumidor, ni viceversa.
Atemporalidad: los eventos se publican sin
necesidad de esperar por la finalización de un ciclo
Asincronicidad: Para publicar un evento no es
necesario esperar a terminar de procesar otro
evento
97. Arquitectura del SoftwareEscueladeIngenieríaInformáticaUniversidaddeOviedo
MapReduce - Esquema
Inspirado en P. funcional:
2 componentes: mapper y reducer
Los datos se trocean para su procesamiento
Cada dato asociado a una clave
Transforma [(clave1,valor1)] en [(clave2,valor2)]
c1
Entrada:
[(Clave1,Valor1)]
v1
c1 v1
c1 v1
Salida:
[(Clave2,Valor2)]
c2 v2
c2 v2
c2 v2
c2 v2
MapReduce
102. Arquitectura del SoftwareEscueladeIngenieríaInformáticaUniversidaddeOviedo
MapReduce - Cuenta palabras
d1 a b
d2 a c a
d3 a c
4
1
2
a
b
c
a 1
b 1
a 1
c 1
a 1
a 1
c 1
mapper
mapper
mapper
reducer
reducer
reducera 1 1 1 1
b 1
c 1 1
Mezcla
y
ordena
MapReduce
// devuelve cada palabra con un 1
mapper(d,ps) {
for each p in ps:
emit (p, 1)
}
// suma la lista de números de cada palabra
reducer(p,ns) {
sum = 0
for each n in ns { sum += n; }
emit (p, sum)
}
103. Arquitectura del SoftwareEscueladeIngenieríaInformáticaUniversidaddeOviedo
MapReduce - Entorno ejecución
El entorno de ejecución se encarga de
Planificación: Cada trabajo (job) se divide en tareas
(tasks)
Co-localización de datos/código
Cada nodo computacional contiene sus datos de forma
local (no existe un sistema central)
Sincronización:
Tareas reduce deben esperar final de fase map
Gestión de errores y fallos
Alta tolerancia a fallos de los nodos computacionales
104. Arquitectura del SoftwareEscueladeIngenieríaInformáticaUniversidaddeOviedo
MapReduce - Sistema de ficheros
Google desarrolló sistema distribuido GFS
Hadoop creó HDFS
Ficheros se dividen en bloques (chunks)
2 tipos de nodos:
Namenode (maestro), datanodes (servidores datos)
Datanodes almacenan diferentes bloques
Replicación de bloques
Namenode contiene metadatos
En qué nodo está cada trozo
Comunicación directa entre clientes y datanodes
106. Arquitectura del SoftwareEscueladeIngenieríaInformáticaUniversidaddeOviedo
MapReduce - Índice Inverso
Dada una serie de documentos, obtener la lista de
palabras asociando a cada palabra el documento
en el que aparece.
Ordenar los documentos según el mayor número de
apariciones
Documento 1
En un lugar de la Mancha , de
cuyo nombre no quiero
acordarme no ha mucho tiempo
que vivía un hidalgo de los de
lanza en astillero, adarga antigua,
rocín flaco y galgo corredor. Una
olla de algo más…
Índice
inverso
lugar doc16, doc21, doc23, doc45
Mancha doc22, doc2, doc4, doc9, doc11
Quijote doc22, doc1, doc2, doc7
. . .
108. Arquitectura del SoftwareEscueladeIngenieríaInformáticaUniversidaddeOviedo
MapReduce - Índice inverso
d1 a b
d2 a c a
d3 a c
d2
d1
d2
a
b
c
a d1
b d1
a d2
c d2
a d2
a d3
c d3
mapper
mapper
mapper
reducer
reducer
reducera d1 d2 d2 d3
b d1
c d2 d3
Mezcla
y
ordena
MapReduce
// devuelve cada palabra con su
// documento
mapper(d,ps) {
for each p in ps:
emit (p, d)
}
// ordena la lista de documentos por
// importancia
reducer(p,ds) {
ds1 = ordena(ds)
emit (p, ds1)
}
d1 d3
d3
109. Arquitectura del SoftwareEscueladeIngenieríaInformáticaUniversidaddeOviedo
MapReduce - Canciones populares
A partir de los logs de los usuarios de un servidor
de música, obtener el número de veces que se
escucha cada canción
Inspirado en last.fm
2/3/2010 9:41 Ana C1
2/3/2010 9:42 Dani C2
2/3/2010 9:44 Ana C2
2/3/2010 10:01 Luis C1
2/3/2010 10:10 Ana C3
2/3/2010 10:15 Ana C2
2/3/2010 10:20 Dani C2
2/3/2010 10:21 Luis C4
2/3/2010 10:24 Luis C2
2/3/2010 10:26 Luis C4
2/3/2010 10:27 Ana C4
Analizador
C1 2 oyentes, 2 escuchas
C2 3 oyentes, 5 escuchas
C3 2 oyentes, 2 escuchas
C4 2 oyentes, 3 escuchas
110. Arquitectura del SoftwareEscueladeIngenieríaInformáticaUniversidaddeOviedo
MapReduce: canciones populares
9:41 A C1
MapReduce
reducer
reducer
reducer
reducer
C1 2
C2 3
C3 1
C4 2
9:42 D C2
9:44 A C2
10:01 L C1
10:10 A C3
10:15 A C2
10:20 D C2
10:21 L C4
10:24 L C2
10:26 L C4
2
5
3
10:27 A C4
mapper
mapper
mapper
mapper
C1 A
C2 D
C2 A
C1 L
C3 A
C2 A
C2 D
C4 L
C2 L
C4 L
C4 A
C1 A C
C2 D
C3 A
C4 L L
Mezcla
y
ordena
A A D L
A
111. Arquitectura del SoftwareEscueladeIngenieríaInformáticaUniversidaddeOviedo
MapReduce: Amigos comunes
Encontrar la lista de amigos comunes
Inspirado en Facebook
Ana Dani Juan Luis
Dani Ana Juan Luis Mar
Juan Ana Dani Luis Mar
Luis Ana Dani Juan Mar
Mar Dani Juan Luis
Si Ana visita la página de Juan, el sistema debería mostrar Dani, Luis
Dan
i
Juan
Luis
Mar
Ana
112. Arquitectura del SoftwareEscueladeIngenieríaInformáticaUniversidaddeOviedo
MapReduce: Amigos comunes
A D J L
D A J L M
J A D L M
reducer
reducer
reducer
MapReduce
L A D J M
M D J L
A D D J L
A J D J L
A L D J L
A D A J L M
D J
D L
D M
mapper
mapper
mapper
mapper
D M D J L
J M D J Lmapper
A J A D L M
D J
J L
J M
L M D J L
A L A D J M
D L
J L
L M
A J L M
A J L M
A J L M
A D L M
A D L M
A D L M
A D J M
A D J M
A D J M
reducer
reducer
reducer
reducer
reducer
reducer
A D J L
A J D L
A L D J
D J A L M
D L A J M
D M J L
J L A D M
J M D L
L M D J
A D D J L A J L M
A J D J L A D L M
A L D J L A D J M
D J A J L M A D L M
D L A J L M A D J M
D M A J L M D J L
J L A D L M A D J M
J M A D L M D J L
L M A D J M D J L
Mezcla
y
ordena
114. Arquitectura del SoftwareEscueladeIngenieríaInformáticaUniversidaddeOviedo
MapReduce2
MapReduce: Similaridad
9:41 A C1
9:42 D C2
9:44 A C2
10:01 L C1
10:10 A C3
10:15 A C2
10:20 D C2
10:21 L C4
10:24 L C2
10:26 L C4
10:27 A C4
A C C1, 1
A D C2, 2
A L C2, 1
A L
mapper
mapper
C4, 2
A C C1, 1
A D C2, 2
A L C2 1 C4 2
Mezcla
y
ordena
reducer
reducer
reducer
A C 1
A D 2
A L 3
C1 A C
C2 D
C3 A
C4 L L
A A D L
A
MapReduce1
115. Arquitectura del SoftwareEscueladeIngenieríaInformáticaUniversidaddeOviedo
MapReduce: Aplicaciones
Múltiples aplicaciones:
Google en 2007, 20petabytes al día, en una media
de 100mil trabajos mapreduce/día
El algoritmo PageRank puede implementarse
mediante MapReduce
Casos de éxito:
Traducción automática, Similaridad entre
ítems, ordenamiento (Hadoop ordena 500GB/59sg
(véase: sortbenchmark.org)
Otras compañías:
last.fm, facebook, Yahoo!, twitter, etc.
138. Arquitectura del SoftwareEscueladeIngenieríaInformáticaUniversidaddeOviedo
Intérpretes y DSLs
Elementos
Intérprete: Módulo que ejecuta el programa
Programa: Programa escrito en el lenguaje de
dominio específico (DSL)
El DSL puede estar pensado para que el propio
usuario final pueda escribir sus programas en él
Contexto: Entorno en el que se ejecuta el programa
149. Arquitectura del SoftwareEscueladeIngenieríaInformáticaUniversidaddeOviedo
Código bajo demanda
Elementos
Cliente
Servidor
Código que se transmite del servidor al cliente
Restricciones
El código reside o se genera en el servidor
Se transmite al cliente cuando el cliente lo solicita
Se ejecuta en el cliente
El cliente debe tener un intérprete del lenguaje
correspondiente
150. Arquitectura del SoftwareEscueladeIngenieríaInformáticaUniversidaddeOviedo
Código bajo demanda
Ventajas
Mejora experiencia de usuario
Extensibilidad: La aplicación puede añadir nuevas
funcionalidades no previstas
No es necesario descargar o instalar la aplicación
Concepto de Beta permanente
Adaptación a entorno del cliente
152. Arquitectura del SoftwareEscueladeIngenieríaInformáticaUniversidaddeOviedo
Código bajo demanda
Aplicaciones:
RIA (Rich Internet Applications)
HTML5 estandariza gran cantidad de APIs
Mejora coherencia entre clientes
Variaciones
AJAX
Originalmente: Asynchronous Javascript and XML
El programa que se ejecuta en el cliente envía
peticiones asíncronas de información al servidor sin
detener su ejecución
154. Arquitectura del SoftwareEscueladeIngenieríaInformáticaUniversidaddeOviedo
Evaluación remota
Elementos
Sistema emisor: Realiza una petición adjuntando un
programa
Sistema receptor: Ejecuta el programa y devuelve
una respuesta con los resultados
Restricciones
Sistema receptor ejecuta el programa
Debe tener intérprete del lenguaje correspondiente
Protocolo de red transfiere el programa y las
respuestas
158. Arquitectura del SoftwareEscueladeIngenieríaInformáticaUniversidaddeOviedo
Agentes móviles
Elementos
Agente móvil: Programa que se ejecuta de un
sistema a otro de forma autónoma
Sistema: Entorno de ejecución en que se ejecuta el
agente móvil
Protocolo de red: transfiere el estado del agente
Restricciones
Los sistemas alojan y ejecutan los agentes móviles
Los agentes móviles pueden decidir cambiar su
ejecución de un sistema a otro
Pueden comunicarse con otros agentes
159. Arquitectura del SoftwareEscueladeIngenieríaInformáticaUniversidaddeOviedo
Agentes móviles
Ventajas
Reducción de tráfico en la red
Se transmiten bloques de código que se ejecutan
Paralelismo implícito
Tolerancia a fallos de red
Conceptualmente sencillos
Agente = unidad independiente de ejecución
Posibilidad de sistemas de agentes móviles
Adaptación a cambios en el entorno
Sistemas reactivos y de aprendizaje