Las misiones espaciales, los satélites, los mercados bursátiles y las transmisiones deportivas han estado transmitiendo datos con poco o ningún retraso perceptible desde hace varias décadas. Sin embargo, históricamente, la implementación de estas soluciones de streaming ha sido prohibitivamente costosa para la mayoría de las organizaciones.
Hoy en día, las plataformas de streaming como Apache Kafka y Amazon Kinesis hacen posible que las organizaciones envíen, reciban y analicen flujos de datos en tiempo real, sin requerir una infraestructura costosa ni esfuerzos de mantenimiento hercúleos.
En este artículo, presentamos una comparación imparcial de ambas plataformas de transmisión y lo ayudamos a elegir la solución adecuada para sus necesidades.
Rendimiento
El rendimiento de una plataforma de streaming tiene en cuenta la cantidad de datos (rendimiento) y la rapidez (latencia) con los que se pueden transferir a través de una canalización. Las tasas de rendimiento más altas y el menor tiempo de latencia se traducen en una plataforma de streaming más escalable y en tiempo real.
Kafka tiene una ligera ventaja de rendimiento con respecto a Kinesis porque puede ajustarse aún más para sus necesidades únicas. Sin embargo, no hay diferencias de rendimiento notables entre las dos plataformas.
Cinesia:
Kinesis, como servicio de pago por uso totalmente administrado, funciona bien. Sus unidades de rendimiento base se denominan fragmentos. Cada fragmento de Kinesis ofrece una capacidad de 1 MB por segundo de datos de entrada, 2 MB por segundo de datos de salida y hasta 1000 PutRecords por segundo. En función de su carga de trabajo, Kinesis escala la cantidad de fragmentos según sea necesario.
Kafka:
Cuando se probó en tres servidores locales baratos, Kafka entregó 2 millones de escrituras por segundo con un pico rendimiento de 193 MB por segundo y una media latencia p99 de 3 milisegundos. Cuando se prueba en una infraestructura de nube gestionada, su rendimiento máximo fue de 605 MB por segundo con una latencia p99 de 5 milisegundos.
Despliegue
El esfuerzo acumulativo necesario para que estas dos plataformas de streaming funcionen según lo previsto debe tenerse en cuenta en relación con la capacidad actual de DevOps y hardware. De lo contrario, corre el riesgo de sufrir sobrecostos y recursos inesperados.
Kinesis es una solución fácil de implementar que se adapta mejor a los equipos con poca o ninguna experiencia en DevOps. Kafka es más adecuado para los equipos de DevOps que pueden configurar, configurar y ajustar la implementación manualmente.
Cinesia:
Kinesis viene con plantillas de despliegue automatizadas que puede configurar su entorno de producción en unas pocas horas. Como se trata de un servicio sin servidor, no es necesario configurar ni configurar manualmente ningún servidor, ya que amplía automáticamente los recursos para satisfacer los picos de carga de trabajo según sea necesario.
Kafka:
La implementación de Kafka implica varios pasos manuales. En primer lugar, debe configurar Kafka en el servidor local o en la nube de su elección y asignar los recursos necesarios. A continuación, tendrá que implementar Guardián del zoológico y un El corredor de Kafka. Por último, tendrá que configurar manualmente los nodos, las particiones y las reglas de replicación. Probar, optimizar y ajustar la implementación para adaptarla a sus necesidades puede llevar varios días.
Tolerancia a fallos
Ambas plataformas están diseñadas para ser altamente tolerantes a los errores. Kinesis incluye una configuración de tolerancia a errores predefinida que no se puede cambiar, mientras que usted puede mejorar o empeorar manualmente la configuración de tolerancia a errores de Kafka.
Tanto Kafka como Kinesis toleran las fallas al particionar los flujos de datos en unidades más pequeñas y crear múltiples réplicas de cada unidad. Kinesis aprovecha la infraestructura de AWS de Amazon para ofrecer un alto grado de tolerancia a errores para la mayoría de las aplicaciones en tiempo real. Sin embargo, las aplicaciones de misión crítica que necesitan confiabilidad adicional pueden ajustar la configuración de Kafka para aumentar la confiabilidad e implementarla en un servidor en la nube como AWS o GCP.
Cinesia:
Kinesis almacena automáticamente tres réplicas de todos sus registros de datos, cada una en un lugar diferente Zona de disponibilidad de AWS. Esto garantiza la capacidad de recuperación, incluso cuando se pierden una o dos instancias. Además de esto, Kinesis también ofrece algunos opciones de recuperación en caso de que se produzca un error inesperado en el procesador, la aplicación o la instancia.
Kafka:
Tiendas Kafka tantas réplicas según sea necesario de sus registros de datos en diferentes ubicaciones de servidores de forma predeterminada. Sin embargo, ejecutar Kafka en un servidor local no le brinda la ventaja de tener múltiples ubicaciones que ofrece Kinesis. Sin embargo, a diferencia de Kinesis, Kafka le permite aumentar o reducir la cantidad de réplicas de datos según sea necesario. También le permite especificar reglas sobre cómo se selecciona la réplica en caso de fallo.
Monitorización
Comprender los patrones de uso actuales puede ayudarlo a identificar el impacto de los cambios recientes, los cuellos de botella de recursos y los picos de carga innecesarios. También puede ayudarlo a reducir las brechas de seguridad y el consumo no autorizado de recursos. Por lo tanto, tenga en cuenta los costos de monitoreo para optimizar y proteger estas dos plataformas de transmisión.
Kinesis no requiere ningún tipo de supervisión externa. Sin embargo, debe supervisar constantemente su implementación de Kafka para detectar errores en la canalización de datos, infracciones de seguridad y riesgos de tiempo de inactividad. Los equipos que no pueden permitirse presupuestar más personal o herramientas de supervisión prefieren elegir entre Kinesis o una distribución gestionada de Kafka. Kafka es mejor para los equipos que ya tienen experiencia en DevOps e infraestructura de monitoreo.
Cinesia:
Amazon monitorea internamente toda la infraestructura de Kinesis. Por lo tanto, no tiene que preocuparse por configurar una solución de monitoreo del rendimiento de las aplicaciones (APM) o de observabilidad de datos.
Kafka:
Sin embargo, su infraestructura e implementación de Kafka deben supervisarse constantemente. Como resultado, es posible que necesite invertir en personal de DevOps adicional junto con una herramienta de monitoreo u observabilidad.
Costos
Kafka es una plataforma de código abierto que no tiene tarifas de licencia de software, pero tiene un costo de implementación elevado. Kinesis tiene un costo de implementación mínimo o nulo, además de su tarifa de pago por uso.
Las implementaciones locales de Kafka ofrecen una enorme ventaja de costos para los equipos que necesitan transmitir de manera consistente grandes volúmenes de datos en tiempo real. Sin embargo, esto debe sopesarse con los costos de DevOps y los riesgos de inactividad de los servidores. Para los equipos que no desean gestionar una implementación local, Kinesis ofrece mejores precios en comparación con la distribución Kafka en la nube totalmente gestionada de Confluent.
Cinesia:
Kinesis prácticamente no tiene costos de implementación, pero su modelo de precios de pago por uso tiene un coste por hora de 0,04 USD por transmisión de datos. La ingestión (entrada de datos) tiene un precio de 0,08 USD por GB de datos por hora, incluido el almacenamiento durante las primeras 24 horas. El almacenamiento de datos entre uno y siete días cuesta 0,10 USD por GB al mes. Y más allá de los siete días, los costos de almacenamiento se reducen a 0,023 USD por GB cada mes. La recuperación (salida de datos) cuesta 0,04 USD por GB por hora. Recuperaciones en forma de abanico mejoradas cuesta 0,05 USD por GB por hora.
Kafka:
Kafka tiene cero costos de software. Sin embargo, como se mencionó anteriormente, según sus necesidades, los ingenieros pueden tardar entre unos días y unas semanas en configurar, implementar y ajustar un entorno de Kafka para las necesidades de su empresa. Además de este costo humano, también tendrá que aprovisionar los costos de infraestructura local o en la nube.
Confluentes distribución gestionada en la nube de Kafka nos da una idea de cuánto podría costar este componente de gestión a los equipos. Su precio base de pago comienza en 1,50 dólares por hora de uso, y las particiones cuestan 0,0015 dólares/hora después de las primeras 500 particiones gratuitas. Además, cuesta entre 0,04 y 0,13 USD por GB de entrada o salida de datos y 0,10 USD por GB de almacenamiento mensual.
Transmita datos con Kafka o Kinesis sin escribir ningún código
Tanto Kafka como Kinesis ofrecen opciones de streaming rentables, escalables y de baja latencia. Como solución gestionada, Kinesis es más adecuada para equipos pequeños que tienen muy poca o ninguna capacidad de DevOps, mientras que la configurabilidad abierta de Kafka es más adecuada para equipos más grandes con necesidades de streaming más complejas.
A medida que construya su arquitectura de transmisión, puede considerar la posibilidad de aprovechar una plataforma de datos de clientes para gestionar la recopilación de eventos del lado del cliente y la transmisión de eventos. El uso de un CDP junto con Kafka o Kinesis le permite convertir rápidamente los datos de los clientes en información procesable, de modo que puede impulsar la personalización en tiempo real y mantener actualizados los modelos de aprendizaje automático.

.jpg)
.jpeg)



