Conceptos Iniciales
¿Qué es streaming de eventos?
Imagina que el streaming de eventos es como el sistema nervioso de tu cuerpo digital. Así como tus nervios captan señales de todo el cuerpo y las envían al cerebro para procesamiento, el streaming de eventos captura información de varias fuentes en tiempo real.
¿Qué es en la práctica?
Es una forma de recolectar, mover y analizar datos mientras suceden:
- Recolección: Captura información en tiempo real de:
- Bases de datos
- Sensores y dispositivos
- Aplicaciones y sitios web
- Servicios en la nube
- etc
- Transporte: Mueve esos datos inmediatamente (como una cinta transportadora digital)
- Procesamiento: Analiza o reacciona a esos datos instantáneamente o más tarde.
¿Por qué es importante?
- Negocios "always-on": Permite que empresas funcionen y respondan 24/7
- Automatización: Softwares pueden reaccionar a otros softwares automáticamente
- Decisiones rápidas: Proporciona información en el momento correcto para acción inmediata
Ejemplo práctico:
Cuando usas una app de transporte por aplicación:
- La app del conductor envía continuamente su ubicación (eventos)
- El sistema de streaming procesa esos eventos
- Tu app recibe actualizaciones en tiempo real sobre la ubicación del conductor
- El sistema puede reaccionar automáticamente (ruteo, precios, etc.)
El streaming de eventos garantiza que todas esas piezas de información fluyan constantemente, permitiendo que todo funcione de forma suave y conectada.
Kafka combina tres recursos principales para implementar casos de uso para streaming de eventos de punta a punta con una única solución probada en batalla:
- Publicación (producer) y consumo (consumer) de flujos de eventos, incluyendo importación/exportación continua de datos de otros sistemas.
- Almacenamiento duradero y confiable de flujos de eventos por el tiempo deseado.
- Procesamiento de flujos de eventos a medida que ocurren o retrospectivamente.
Toda esta funcionalidad es proporcionada de manera distribuida, altamente escalable, elástica, tolerante a fallos y segura.
Ventajas en el uso de kafka
- Los datos son publicados solo una vez.
- Los consumidores interesados en los datos pueden suscribirse y consumir lo que les interesa.
- Productores y consumidores están desacoplados, pudiendo trabajar en ritmos diferentes.
- Los consumidores pueden leer datos más de una vez.
- La indisponibilidad del productor no afecta el proceso.
- Alta disponibilidad y capacidad con recursos de cluster y particionamiento.
Si kafka fuera escalado verticalmente, surgirían problemas como:
- Necesidad de interrupción para upgrade.
- Límite pequeño de escala.
- Requiere configuraciones complejas.
- Problemas de incompatibilidad.
¿Qué abordar en este estudio?
Desarrollo
Kafka ofrece bibliotecas para la utilización de funciones en prácticamente todos los lenguajes.
Uno de los principales players que desarrollan y hasta ofrecen Kafka como servicio es Confluent.
Vea aquí una lista de bibliotecas y encuentre el lenguaje deseado, incluso con ejemplos de código para uso.
DevOps
Aquí está el foco principal de nuestro estudio:
- Comprender la arquitectura de Kafka y provisionarlo de la mejor manera posible.
- Entender los límites y qué configuración sería ideal para cada escenario.
- Gestionar tópicos y permisos de acceso a través de RBAC.
- Disponibilizar las herramientas necesarias para que los desarrolladores consigan hacer su trabajo de forma fácil y objetiva, pudiendo debugar sus payloads de producción y consumo.