Diagrama de flujo basada en la reparacion de automoviles.pdf
Arquitectura basada a Eventos para principiantes con Apache Kafka
1. #SGVirtual
Arquitectura basada en
eventos para
principiantes
Hugo Guerrero
APIs & Messaging Developer Advocate @ Red Hat
Unidos compartiendo y aprendiendo
#SGVirtual
10. #SGVirtual
¿Qué es la arquitectura basada en eventos (EDA)?
EVENT-DRIVEN ARCHITECTURE
10
Event-Driven Architecture
(EDA) es una forma de diseñar
aplicaciones y servicios que
respondan en tiempo real a
información basada en enviar y
recibir notificaciones de cambios
individuales en el sistema.
11. #SGVirtual
11
Source:
https://en.wikipedia.org/wiki/UNIVAC_1103
Inside Macintosh, Apple Computer Inc. Cupertino, CA, 1985.
https://en.wikipedia.org/wiki/Database_trigger
http://soft.vub.ac.be/Publications/2012/vub-soft-tr-12-13.pdf
https://en.wikipedia.org/wiki/Java_version_history
UNIVAC 1103, first computer with operating system level interrupts
debuts.
1953
Apple Macintosh interface based on main event handling loop.
1984
Database vendors Oracle, Sybase, and others add triggers.
1993
First reactive programming language, Fran (Haskell), released.
1997
Java 1.4 introduces event handlers as first class objects.
2002
12. #SGVirtual
¿Por qué arquitectura basada en eventos?
EVENT-DRIVEN ARCHITECTURE
12
Refleja el mundo real
El mundo real está basado en eventos. Como el
sistema nervioso, o una cafeteria.
Reduce el acoplamiento
EDA permite desacoplar servicios en tiempo de
ejecución así como en tecnología
Encapsulación
Servicios aislados ayudan a diseñar microservicios que
no dependen de cómo se consuman los eventos.
Escalamiento individual
Los servicios se pueden escalar independientemente.
Latencia en casi tiempo real
La desventaja de estar haciendo consultas se elimina
moviendose a EDA.
13. #SGVirtual
¿Qué es un evento?
EVENT-DRIVEN ARCHITECTURE
13
Image: https://foto.wuestenigel.com/hand-ready-to-push-domino-pieces/
Evento es una acción o un
acontecimiento procesado
por software usualmente
originado asíncronamente
fuera del sistema.
La mayoría de las veces
reemplazado por la
notificación del
acontecimiento.
20. #SGVirtual
EVENT-DRIVEN ARCHITECTURE
¿Qué es Apache Kafka?
20
Apache Kafka es un sistema distribuido
diseñado para flujos de eventos. Está
construido para ser escalable
horizontalmente, tolerante a fallos,
como un registro de bitácora, que
permite procesar flujos y datos
distribuidos.
21. #SGVirtual
EVENT-DRIVEN ARCHITECTURE
Ecosistema de Apache Kafka
21
● Kafka Core
○ Broker
○ Producer API, Consumer API, Admin API
○ Herramientas de administración
● Kafka Connect
● Kafka Streams API
● Mirror Maker / Mirror Maker 2
● REST Proxy para HTTP y Kafka
● Registro de esquemas
23. #SGVirtual
EVENT-DRIVEN ARCHITECTURE
Patrones de implementación con Apache Kafka
23
Event Sourcing
Es un patrón que permite al sistema
registrar los cambios en orden y luego
reproducirlos para conocer el estado.
Captura de cambios en la base de datos
que permite auto generar eventos para
que otros servicios puedan tener los
últimos datos.
Change Data Capture
Estos sistemas detectan y reaccionan a
condiciones críticas consultando un flujo
continuo de eventos en ventanas de
tiempo.
Procesamiento de flujos de eventos
Flujos de datos con múltiples etapas y
consumidores formando un pipeline de
información.
Broadcast and Pipelines
Source:
24. #SGVirtual
EVENT-DRIVEN ARCHITECTURE
Eventos desde la base de datos
24
Debezium Change Data Capture Platform
Source: https://debezium.io/community/users/
● Conectores CDC para varias bases de datos
○ Basado en transaction logs
○ Snapshotting, Filtering etc.
● 100% open-source, comunidad activa
● Última version: 1.1
● Compañías desplegando en producción (e.g.
WePay, JW Player, Convoy, Trivago, OYO,
BlaBlaCar etc.)
25. #SGVirtual
Una vez que se empieza a trabajar en microservicios o funciones, la forma de
mantener la comunicación es mediante notificaciones.
Los patrones de integración basados en eventos permiten escalar y
desacoplar microservicios, usando una cola o un tópico se pueden
coordinar..
Microservicios y arquitecturas basadas en eventos
EVENT-DRIVEN ARCHITECTURE
25
Migración a Microservicios
Moverse a Serverless