7,8 E&p, E&p
7,8 E&p, E&p
7,8 E&p, E&p
patrones – III
Pipe & Filter |
Event driven
IIC2173 - Arquitectura de sistemas de software
Departamento de Ciencia de la Computación
Escuela de Ingeniería – PUC
Hans Findel - Nicolás Acosta
Repaso
• Main y subrutinas
• Estilo capas
• MicroKernel
En máquina virtual
• Pipes en Linux
• Pipes de procesamiento de
objetos (e.g. machine learning
en imagen)
• Procesamiento de audio
• ETLs
Pipe and filter : Pros
• Modular
• Fácil de modificar módulos
• Reusable
• Cada componente puede ser
escalable
• Flexible
• Testeabilidad
Pipe and filter : Cons
• Reducción de acoplamiento
• Más compatible con agilidad
• Flexible
EDA: Pros •
•
Modularizable
Compatible con microservicios
• Alto performance
• No integración punto a punto: agregar
consumidores es muy sencillo en cantidad y
capacidad
• Idempotencia: Manejo de
eventos
duplicados/desordenados
• Publishers
• RSS
• Chats & gaming
• XMPP
• IoT
• MQTT
• Ecommerce
• Eventos críticos
• Stock
• Envío de correos
MQTT
Pub/sub: Pros
• Ventajas de EDA
• Desacoplamiento
• Cualquiera podría entrar a un
tópico
• Asincronía
• Fire-and-forget
• Podrías esperar un evento
• Escalable
• Aprovechamos broadcasting
Pub/sub: Cons
• Mensajería confiable
• Como me aseguro de que llegue
• Realmente los brokers son tan
confiables?
• QoS
• Seguridad
• Control de acceso (RBAC, CBAC)
• Complejidad
• Podrían enredarse muchos tópicos
y contenidos
Pub/sub: Otros ejemplos
En su proyecto
https://commons.wikimedia.org/wiki/File:MQTT_protocol_example_without_QoS.svg#/media/File:M
QTT_protocol_example_without_QoS.svg
En su
proyecto
• Van a poder conversar de
vuelta
• Redundancia en los
subscribers?
Sobre los debates
• Componentes
• Intérprete de comandos, programa
de interpretación del estado,
interfaz de usuario
Intérprete: Ejemplos
• Intérpretes de py/js
• Bash
Intérprete: Ejemplos
• Intérpretes de py/js
• Bash
https://www.researchgate.net/figure/Software-architecture-of-CPython-python-
command_fig11_344044674
Intérprete: Código
móvil
• Variantes
• Código bajo demanda
• Evaluación remota
• Agentes móviles (e.g. agentes de
monitoreo)
https://medium.com/nerd-for-tech/v8-engine-explained-where-the-
actual-fun-happens-cbb1662147d
Flutter
https://www.linkedin.com/pulse/jvm-architecture-how-internally-work-ali-as-ad
WASM
https://blog.logrocket.com/webassembly-how-and-why-559b7f96cd71/
Código móvil: Pros
• Portabilidad suprema
• Contenido mejorado
• Dinámico
• Interactivo
https://www.alibabacloud.com/blog/using-webassembly-and-kubernetes-in-combination_596177
Código móvil: Contras
• Privacidad
• Trabajo en compatibilidades
• 1 base en cada plataforma
• Puede pasar que el código móvil corre sobre alguna máquina virtual
• Componentes
• Interfaz de usuario, Motor de inferencia, Base de conocimiento
• Conectores
• Componentes fuertemente interconectados vía llamadas a procedimientos y/o
llamadas a memoria compartida
• Elementos de datos
• Hechos y consultas
Estilo: Memoria Compartida
Jess (Java
Expert System
Shell)
Estilo: Memoria
Compartida
• La “conducta” de la aplicación se
extiende mediante reglas
• If/else, arboles de decisión, otros…
• IPC mediante almacenes de
datos o buffers
• Riesgo: Al aumentar el número
de reglas es muy dificil entender
las interaccciones entre las reglas
• Ejemplos
• Sistemas de tráfico
• Memoria compartida
• Reglas de tránsito
• Manejo de concurrencia
• Sistemas de seguridad
Estilo: Pizarra
• Aplicaciones
• Sistemas expertos
• Ias
• Problemas complejos evolutivos
• Pros
• Posibilidad de problemas
complejos
• Arquitectura colaborativa
• Cons
• Escaso uso
• Complejo de implementar
correctamente
• P2P
• Arqui internet
Siguiente • Cloud computing
• Comunicación y conectores
Estrategias para varios patrones
Bass, Kazman