En el mundo de la tecnología, los sistemas de procesamiento de datos están en constante evolución para brindar soluciones más rápidas y eficientes. Una de las principales tecnologías dentro de este ámbito es Apache Kafka, un sistema para la integración y el procesamiento de datos totalmente aceptado por la comunidad tecnológica, y del que hemos hablado en el blog en numerosas ocasiones.

Una de las últimas incorporaciones a esta lista de sistemas de procesamiento de datos es Redpanda, que está dando mucho de qué hablar en los últimos tiempos.

En este artículo vamos a ver qué es Redpanda, cómo funciona y por qué está generando mucho debate como opción para implementar soluciones para la integración y el procesamiento de datos en tiempo real.

En primer lugar, ¿qué es Redpanda?

Como hemos introducido anteriormente, Redpanda es otra plataforma para la integración y procesamiento de datos, distribuida y de alto rendimiento, que fue desarrollada por la empresa estadounidense Vectorized. Esta empresa se fundó en 2018 y, desde entonces, ha estado trabajando en el desarrollo de esta tecnología.

Su arquitectura se basa en la arquitectura de Apache Kafka, aunque con una serie de cambios en su diseño y en su implementación con el objetivo de construir una plataforma más fácil de usar, más eficiente y que permita marcar diferencias con sus competidores.

Como dato interesante, y dada la naturaleza de su arquitectura, esta tecnología es compatible con el protocolo Kafka, por lo que permite usar la gran mayoría de aplicaciones, librerías y clientes alrededor de Apache Kafka para interactuar con Redpanda.

Si bien el objetivo del equipo de Redpanda es ambicioso, ¿cómo esperan conseguir una plataforma capaz de superar a sus antecesores?

¿Por qué puede ser atractivo usar Redpanda?

Desde el equipo de Redpanda aseguran, de forma rotunda, que esta tecnología está diseñada para marcar grandes diferencias respecto a sus competidores a la hora de crear soluciones que requieran procesamiento de datos. Si bien es una afirmación bastante arriesgada, sí que vamos a centrarnos en algunos puntos que pueden resultar interesantes para entender la idea tras esta tecnología.

En primer lugar, vamos a centrarnos en algunas certezas que ofrece Redpanda respecto a su competencia, las cuales están muy ligadas a la simplicidad de esta tecnología.

Redpanda es una tecnología 100% libre de dependencias externas (no necesita de un zookeeper o de una JVM), que consta de un único binario que contiene todo lo necesario para su funcionamiento, como pueden ser sus capacidades de mensajería o su propio schema registry. Esto facilita el despliegue y la escalabilidad de los clústeres de Redpanda, que se van a ejecutar de manera eficiente independientemente de dónde se despliegue, especialmente interesante en entornos modernos como Kubernetes o edge computing.

Además, proporciona una herramienta única para administrar al completo los distintos clústeres de Redpanda, tanto ajustes de bajo nivel hasta otros ajustes de alto nivel. Esto se completa con una interfaz web sencilla desde la que podremos acceder a mucha información con potentes funciones para la depuración y la administración de dichos clústeres.

Y hasta aquí tenemos las certezas de Redpanda como plataforma. A partir de ahora, vamos a centrarnos en algunos puntos que requieren de un estudio más profundo.

Posiblemente, uno de los aspectos que más nos pueda llamar la atención es cómo se comporta la plataforma y el rendimiento que pueda llegar a dar. Pues bien, desde la propia compañía aseguran que Redpanda es una tecnología realmente rápida, con latencias promedio hasta diez veces más bajas que Apache Kafka, incluso en situaciones de cargas sostenidas en el tiempo. De hecho, han publicado varios artículos con pruebas de rendimiento en la que comparan su rendimiento con el de Apache Kafka, en el que demuestran esta situación.

Si bien más adelante hablaremos en profundidad sobre este tipo de artículos comparativos respecto a Apache Kafka, una de las principales preguntas que nos podemos hacer es: ¿cómo son capaces de conseguir este rendimiento que dicen?

Si recordamos lo que hemos visto anteriormente, aunque Redpanda se basa en la arquitectura de Apache Kafka, tiene un diseño y una implementación distintas. Han introducido varios cambios que permiten optimizar la solución en algunos puntos, como pueden ser:

Estos han sido un par de ejemplos de algunos detalles que permiten a Redpanda obtener un rendimiento mayor que la competencia, especialmente sobre Apache Kafka, aunque hay muchos otros aspectos sobre el rendimiento de Redpanda que pueden resultar interesantes.

También existen otros aspectos de gran importancia en los que Redpanda pone foco para ofrecer una plataforma idónea para la integración y el procesamiento de datos, como puede ser la gestión de la seguridad y la confiabilidad de Redpanda, su coste y comparativas de mercado o sus capacidades de alojamiento on-premise y cloud. Por todo esto, invitamos a completar todo este conocimiento visitando su documentación.

Como podemos observar, el equipo de Redpanda expone algunas características con certezas y otras con puntos a estudiar más en detalle, sobre todo en la parte en la que hace comparativas con otras tecnologías del mercado. Teniendo en cuenta esto, vamos a ver cómo podemos implementar un caso de uso que nos permita sacar alguna conclusión más sobre el uso de esta tecnología.

Trabajando con Redpanda

Vamos a implementar un pequeño caso de uso en el que Redpanda sea la plataforma de integración y procesamiento de datos. Comenzaremos definiendo un proceso que se encargue de detectar movimientos fraudulentos de las tarjetas de crédito de una entidad bancaria en tiempo real. Este caso de uso es similar al que podemos encontrar en la serie de soluciones de streaming en Apache Kafka, en el que vamos a sustituir el clúster de Apache Kafka por un clúster de Redpanda.

El objetivo que nos marcamos en este caso es el de comprobar la funcionalidad y el comportamiento de Redpanda como alternativa a Apache Kafka, tanto para la integración de sistemas como para el procesamiento de datos en tiempo real, por lo que no se va a poner foco en el resto de las partes. Además, también va a ser de interés comprobar cómo funciona la compatibilidad de Redpanda con aplicaciones diseñadas para Apache Kafka.

Teniendo en cuenta todo esto, se diseña la solución que nos permita cumplir con el objetivo marcado.

Solución que se diseña con el objetivo cumplido.

Como podemos observar, la solución propuesta contiene una serie de elementos que nos permite diseñar el proceso de fraude en tiempo real.

La forma en la que van a interactuar los distintos componentes de la solución para poder realizar el proceso de fraude es relativamente sencilla:

Distintos componentes de la solución para poder realizar el proceso de fraude

A partir de aquí, ya estamos preparados para poder ejecutar el proceso implementado que nos permita sacar algunas conclusiones acerca de la tecnología Redpanda.

Ejecución del caso de uso

Se han simplificado los pasos para la ejecución del caso de uso de manera que resulte lo más sencillo posible: toda la infraestructura y los componentes necesarios se van a desplegar en el entorno local dockerizado, por lo que debemos tener docker y docker-compose instalado en nuestro entorno.

Es importante mencionar que, en el desarrollo de este caso de uso, se opta por un enfoque precario a la hora de dimensionar el clúster de Redpanda. Como hemos mencionado anteriormente, no se busca analizar el rendimiento de una tecnología u otra, sino que se busca una primera toma de contacto con Redpanda que nos permita verificar su funcionamiento. Hay que tener en cuenta que, cuanto más se acerque la configuración a las cotas de un sistema productivo, ya sea tanto en dimensionamiento como en la configuración hardware necesario, el rendimiento será mayor.

Dicho esto, vamos a ver cómo podemos ejecutar el caso de uso para probar el funcionamiento de Redpanda.

Primero, hay que ejecutar el script de inicialización que se va a encargar de todo lo necesario para desplegar toda la infraestructura de Redpanda y las aplicaciones mencionadas anteriormente en nuestro entorno docker local.

sh infra/init-infrastructure.sh

Una vez finalizado el script, se tienen cuatro contenedores docker en ejecución correspondientes a los componentes de la solución que se ha definido anteriormente.

docker ps -a

Cuatro contenedores docker en ejecución

Además, se puede acceder a Redpanda Console (http://localhost:8080), donde encontraremos información relevante acerca del clúster de Redpanda y podremos visualizar información de los topics o de su grupo de consumidores, entre otras cosas.

Redpanda Console nos muestra información de los topics o grupos

Una vez desplegada la infraestructura, vamos a simular el caso de uso que nos permita comprobar el funcionamiento de Redpanda teniendo en cuenta el objetivo marcado. A partir de aquí, ya estamos en disposición de simular nuestros eventos.

Para simular los eventos con los movimientos de las tarjetas de crédito y poder detectar el fraude en tiempo real, vamos a ejecutar un script que permitar que la aplicación movements genere una cantidad de movimientos de tarjetas de crédito en el topic correspondiente de Redpanda.

sh demo/generate-movements-sh

Hay que tener en cuenta que, de todos los movimientos generados, algunos ya están preparados para ser fraudulentos (una misma tarjeta tiene varios movimientos en un pequeño período de tiempo).

Una vez generados los eventos, la aplicación stream va a ser capaz de detectar aquellas tarjetas que contienen movimientos fraudulentos y lo va a notificar a otro topic de Redpanda.

Tarjetas que contienen movimientos fraudulentos y lo va a notificar a otro topic de Redpanda.
Tarjetas con movimientos fraudulentos y lo va a notificar a otro topic de Redpanda.

Como hemos comentado anteriormente, podemos verificar el funcionamiento del proceso usando Redpanda Console.

Es importante dejar claro que, aunque el caso de uso que hemos visto es un ejemplo sencillo, parte de la compatibilidad con la API de Apache Kafka y nos permite ver el comportamiento de Redpanda desde un punto de vista funcional.

Todo el código necesario con la infraestructura de Redpanda, la implementación de las distintas aplicaciones utilizadas que simulan el proceso de detección de fraude y los scripts necesarios para inicializar y terminar el caso de uso están accesibles en el siguiente repositorio.

Redpanda y Apache Kafka, ¿cuál debería usar?

Una vez conocido el objetivo, las características, y una pequeña demostración del uso de Redpanda, vamos a hablar sobre uno de los puntos que puede generar más controversia en la comunidad tecnológica, que no es otra que la comparativa entre Redpanda y Apache Kafka.

En la documentación y en los artículos comparativos que comparte el equipo de Redpanda aseguran que su tecnología tiene un rendimiento y una eficiencia muy por encima de Apache Kafka con un coste inferior. Pero ¿qué hay de real en estas afirmaciones?

Algunas diferencias funcionales

En primer lugar, vamos a centrarnos en algunos detalles funcionales que nos permitan dejar claras algunas diferencias entre ambas tecnologías.

Redpanda no es una distribución de Apache Kafka al uso, sino que se basa en ella e implementa el protocolo Kafka para proporcionar compatibilidad con la API. Esto es un detalle importante, ya que no garantiza que los componentes adicionales alrededor del ecosistema de Apache Kafka se comporten de la misma manera en Redpanda, debido a que todavía no ha alcanzado el 100% de compatibilidad con la API.

Otro aspecto interesante es que Redpanda no incluye ni Kafka Streams ni Kafka Connect en su oferta. Por tanto, no ofrece todas las posibilidades como el proyecto Apache Kafka.

Es importante contextualizar el marco en el que se realizan las comparativas entre las distintas tecnologías. Desde el equipo de Redpanda sacan partido a sus características respecto al rendimiento bajo determinados escenarios, pero hay que tener en cuenta que existen otras condiciones en las que estas características no afectan al rendimiento de la solución. Por poner un ejemplo, hemos hablado sobre el beneficio de un uso más eficiente de la CPU gracias a su diseño con C++, pero dicho beneficio va a depender del caso de uso que se requiera implementar, ya que podría ser despreciable debido a la iteración que puede tener con otros componentes o plataformas.

Algunas diferencias no funcionales

También hay que tener en cuenta algunas diferencias no funcionales entre ambas tecnologías que son cruciales para una decisión estratégica en la elección de la plataforma para la transmisión de datos.

Antes de entrar en si utilizan o no estrategias de marketing lanzadas desde los distintos lados, existe la evidencia de que Redpanda y Apache Kafka están en niveles distintos. Si bien Redpanda es una tecnología incipiente y que puede resultar interesante, Apache Kafka se ha convertido en el estándar de facto para la transmisión de datos, con una gran comunidad por detrás y un sinfín de casos de uso que avalan dicha tecnología, por no hablar de todo el ecosistema de tecnologías existente a su alrededor.

Por otro lado, hay que tener en cuenta la manera de licenciamiento de ambas tecnologías. Apache Kafka es una tecnología de código abierto que se distribuye bajo una licencia Apache 2.0 y Redpanda se distribuye bajo una licencia BSL, la cual impone restricciones en su uso y distribución.

Como en las diferencias funcionales, también hay que analizar las distintas características de Redpanda en comparación con otras tecnologías desde distintos planos para tener una visión más completa de las distintas herramientas y evitar confusiones. Si volvemos al ejemplo de que Redpanda ofrece un uso más eficiente de la CPU al estar implementado con C++ con un impacto directo en el coste, también hay que tener en cuenta que Apache Kafka está más vinculado a IO que a la CPU, por lo que en muchas ocasiones se tienen los mismos requisitos de red y disco.

Entonces, ¿Redpanda es humo?

Una vez vistos algunos detalles funcionales y no funcionales que se pueden escapar a la hora de comparar y valorar dichas tecnologías, ¿quiere decir que Redpanda no vale la pena? Por supuesto que vale la pena.

Redpanda puede mostrar puntos de referencia en los que su desempeño es mejor que otras alternativas para determinadas situaciones, como se puede ver en las publicaciones sobre el rendimiento y los costes que hemos comentado anteriormente. En cambio, Apache Kafka se puede desempeñar mejor en otro tipo de situaciones. La competencia de este tipo de tecnologías siempre es buena, pero las estrategias de marketing provenientes de cada lado y las falsas narrativas no ayudan a la comunidad.

Entonces, ¿cuál es mejor? Pues como casi siempre, la realidad es que depende del contexto en el que te encuentres. Para algunos casos de uso puede ser una y para otros, otra. O incluso habrá casos en que puedas combinar ambas plataformas.

Lo que se recomienda es evaluar los requisitos del proyecto, su riesgo y los costos totales antes de tomar una decisión. De esta forma podremos verificar que las características del producto sean adecuadas para las necesidades específicas del proyecto.

Conclusión

Redpanda es una plataforma de streaming de datos de alto rendimiento, escalable y distribuida que ofrece una alternativa sólida a Kafka. Su motor de almacenamiento de datos en disco y su arquitectura distribuida lo hacen una opción atractiva para una variedad de casos de uso en tiempo real.

Está en una etapa temprana de desarrollo, por lo que hay que ver cómo evoluciona. Por ello, desde Paradigma os animamos a que lo probéis dentro de vuestro contexto, siempre en entornos muy controlados y acotados para poder sacar vuestras propias conclusiones.

Cuéntanos qué te parece.

Los comentarios serán moderados. Serán visibles si aportan un argumento constructivo. Si no estás de acuerdo con algún punto, por favor, muestra tus opiniones de manera educada.

Suscríbete

Estamos comprometidos.

Tecnología, personas e impacto positivo.