Herramienta de interfaz de usuario para probar Kafka / Sudo Null IT News

¡Hola Habr! Mi nombre es Marina, soy ingeniera de control de calidad en Cooper. Trabajo en un equipo donde aproximadamente el 80% de todas las interacciones entre microservicios se realizan de forma asincrónica a través de Kafka. Esto crea una complejidad adicional en las pruebas funcionales, ya que nuestro servicio está integrado con muchos otros. Verificar la exactitud de la transmisión de mensajes requiere analizar no solo el paso de los casos felices, sino también los casos extremos y de esquina, lo que agrega complejidad a las pruebas. Estoy seguro de que muchos ingenieros y desarrolladores de control de calidad están familiarizados con desafíos similares.

En uno de los proyectos en los que trabajo, tuve un problema: las herramientas utilizadas para probar Kafka no eran lo suficientemente convenientes:

  • Utilidad de consola Protokaf no tiene una interfaz UI y los datos recibidos deben formatearse en una estructura json para una mejor legibilidad (y esta es otra aplicación adicional).

  • Aplicación de interfaz de usuario Kowl solo es conveniente para monitorear el estado de los temas, y recientemente fue posible leer mensajes sin un proceso complejo para decodificarlos, pero aún no tiene la opción de productor.

En busca de una solución más conveniente, un colega recomendó Plumber, una aplicación gráfica con capacidad de consumir y producir mensajes.

En este artículo no explicaré qué es Kafka y cómo funcionan los brokers; ya hay muchos materiales excelentes sobre estos temas, por ejemplo, aquí. Quiero compartir mi experiencia usando esta herramienta. Mi objetivo no es compararlo con otras soluciones existentes, sino simplemente contarles cómo Plumber me ayudó a simplificar el proceso de prueba manual de Kafka en etapas.

Conociendo al fontanero

Plomero es una aplicación GUI diseñada para interactuar con Apache Kafka. Proporciona una interfaz de trabajo cómoda y minimalista e incluye las siguientes características:

  • Conexión con el corredor Kafka.

  • Consumidor y productor en temas.

  • Soporte para varios formatos de datos (JSON, protobuf, Avro y otros).

  • El mensaje se muestra en formato JSON, lo que facilita su lectura y trabajo.

Instalación y configuración de fontanero.

Para empezar, la instalación y configuración no son tan complicadas.

Instalación de fontanero

  1. Ir a página de lanzamientos proyecto.

  2. Descargue la última versión de Plumber para su sistema operativo (versiones disponibles para Windows, macOS y Linux).

  3. Desempaquete el archivo e inicie la aplicación. Los ensamblados binarios no están firmados, por lo que Windows y el sistema operativo discutirán. Omitir manualmente el bloqueo de seguridad de macOS:

    – o a través del menú contextual (Control+clic), seguido de seleccionar “Abrir”
    – o eliminar atributos de seguridad usando el comando xattr:

    $ xattr -cr plumber.app

Después de iniciar Plumber, procedemos a configurar una conexión con Kafka.

Configurando Kafka

  1. Cree un clúster seleccionando Nuevo clúster Kafka

  2. Para configurar una conexión con su agente Kafka, debe especificar los siguientes parámetros:

2.1. Nombre del clúster: Ingrese un nombre de clúster descriptivo para identificar rápidamente a cuál desea conectarse si tiene varios configurados al mismo tiempo. No podrás ejecutar dos al mismo tiempo, pero es conveniente cambiar.

2.2. Dirección del corredor Kafka (bootstrap.servers): especifique el nombre DNS o la dirección IP del servidor. Kafka utiliza la dirección del corredor para establecer comunicaciones y transmitir mensajes.

2.3. Opciones de autenticación y seguridad:

  • mecanismo — un mecanismo de autenticación que determina cómo se autoriza al cliente. En la mayoría de los casos se utiliza el mecanismo PLAIN o SCRAM-SHA-256/512. La elección del mecanismo depende de la configuración de su clúster Kafka.

  • sasl.nombre de usuario Y sasl.contraseña — credenciales para la autenticación en el clúster de Kafka. Estos parámetros utilizados junto con el mecanismo SASL deben coincidir con las credenciales configuradas en el lado del corredor de Kafka.

  • protocolo.de.seguridad – un protocolo de seguridad que especifica cómo se transferirán los datos entre el cliente y el corredor. Los valores más comunes son SASL_SSL o SASL_PLAINTEXT. El uso de SASL_SSL supone una conexión segura, mientras que SASL_PLAINTEXT es adecuado para entornos de prueba sin cifrado.

3. Para comprobar si todo está configurado correctamente, haga clic en Probar conectividad Kafka. Recibimos un OK de aprobación. A continuación, “Guardar” y vaya al clúster recién creado.

4. La cantidad de todos los temas a los que se puede acceder a través del corredor Kafka especificado se mostrará automáticamente en la sección Descripción general.

Empecemos escuchando los mensajes.

Configuración del consumidor (lectura de mensajes)

1. Vaya a la sección Temas.

2. Por supuesto, la forma más rápida de encontrar el tema deseado es mediante la búsqueda.

3. Selecciona el tema que deseas escuchar haciendo clic en la lupa.
4. Configure los parámetros de consumo de mensajes, por ejemplo, tipo de clave (si corresponde), formato de deserialización (protobuf, JSON y otros).

Escuchar temas en Apache Kafka cuando los mensajes se serializan en formato protobuf requiere un archivo .proto. Este archivo describe la estructura de datos, lo que permite a la aplicación deserializar correctamente los mensajes y mostrarlos en un formato legible por humanos. Por lo tanto, primero lo descargué del repositorio del proyecto y especifiqué la ruta al archivo .proto.

5. Haga clic en Iniciar. Si no se establece el límite, se recibirán nuevos mensajes en tiempo real.

Una de las características útiles de Plumber es la capacidad de configurar filtros para encontrar los mensajes deseados en la transmisión. Pero quiero señalar que encontré un problema: a veces el filtrado no funcionaba correctamente y los mensajes enviados anteriormente no se mostraban. Sin embargo, después de configurar los filtros, no hubo problemas con los mensajes nuevos: se mostraban de manera estable.

No puedo evitar señalar que otra característica útil para mí es el historial de mensajes. La aplicación te permite ver no solo los mensajes actuales, sino también el historial, permitiéndote analizar eventos anteriores o errores que puedan haber ocurrido.

6. Para leer el mensaje, ábralo haciendo doble clic o usando el botón de detalles. Puedes usarlos en más pruebas de productor o para grabar en artefactos.

El consumidor tiene Borrar historial si el flujo de mensajes se vuelve demasiado grande o cuando desea eliminar datos anteriores para facilitar el análisis. Esto es muy conveniente cuando necesita verificar con una secuencia limpia para probar un nuevo script.

Configurar Producer (enviar mensajes)

Hemos llegado a la función más útil del fontanero: el productor. La herramienta le permite simular el envío de mensajes desde un servicio relacionado, lo que abre muchas oportunidades de prueba. Por ejemplo, modifico los datos: reemplazo el valor en campos como id, fechas, estados, etc., para comprobar la estabilidad del procesamiento. O cambio la estructura del mensaje: reorganizando el orden de los campos o eliminando/agregando nuevos para simular cambios en los protocolos de interacción. Ayuda y acelera el trabajo al probar casos extremos: pasar datos incorrectos o valores vacíos. Al probar casos raros o complejos que son difíciles de reproducir de forma natural, por ejemplo, cuando un mensaje se genera solo en condiciones excepcionales o hay una larga espera para enviarse. En tales casos, el uso del productor acelerará significativamente el proceso de prueba sin esperar a que ocurran tales situaciones.

El uso de un productor le permite probar la lógica de manera efectiva durante las comprobaciones iniciales, por ejemplo, cuando su servicio con modificaciones está listo antes que el servicio de productor. Esto le permite detectar posibles errores antes de las pruebas de integración y ahorra tiempo. Por supuesto, aún se necesita una integración total para garantizar que todos los servicios interactúen correctamente y que todo funcione según lo previsto.

Empecemos.

1. Haga clic en el botón Productor.

2. En la ventana que se abre, seleccione un tema de la lista. Lamentablemente no hay búsqueda, hay que buscar con los ojos y esto puede resultar doloroso si hay muchos temas.
3. Seleccione el formato de datos que se enviará. Todavía selecciono protobuf y cargo el archivo proto.

4. Copie el mensaje del consumidor y cambie un poco los datos. Por ejemplo, configuraré el campo en automaticRouting significado falsey en el campo deleted_at Te indico la fecha. Hacer clic Producir al tema para enviar un mensaje. En la columna de la derecha puedes ver a qué hora se envió el mensaje.

5. Puede verificar en la base de datos qué ha cambiado/registrado al recibir dicho mensaje.

Beneficios de usar fontanero

En resumen, me gustaría destacar una vez más las ventajas clave, basadas en mi experiencia:

  1. Interfaz gráfica minimalista e intuitiva: Plumber hace que trabajar con Kafka sea más fácil y rápido. Gracias a una interfaz sencilla y funcional, la interacción con los mensajes se vuelve clara y no requiere esfuerzos adicionales (aplicaciones).

  2. Flexibilidad al trabajar con formatos de datos: Plumber admite varios formatos como protobuf, JSON, lo que le permite adaptarse a los requisitos específicos del proyecto.

  3. Configuración de simplicidad: La configuración es fácil y rápida, lo cual es especialmente importante en entornos de trabajo dinámicos.

  4. Código abierto y de uso gratuito.

  5. Perspectiva a largo plazo. En las condiciones modernas, es importante contar con herramientas que no dependan de situaciones políticas (o de otro tipo). Pero aquí también hay un inconveniente: por el momento, el desarrollador ha suspendido el soporte para la aplicación.

Sin embargo, como ya mencioné, la aplicación también tiene algunos inconvenientes menores. Otro problema que encontré fue que el programa se cerró inesperadamente. Afortunadamente, la configuración del clúster se guarda para que no tengas que volver a ingresarla. Pero esto se vuelve desagradable si preparó un mensaje para el productor directamente en Plumber y no en un editor de texto. Después del primer incidente de este tipo, comencé a preparar el cuerpo del mensaje en un bloc de notas y luego se lo pasé a Plumber. Esto permite volver a los datos preparados en caso de fallo.

Conclusión

Plumber se ha convertido en una gran herramienta para probar manualmente microservicios usando Kafka. No estoy llamando ni afirmando que esta sea una súper aplicación sin fallas, pero me ha simplificado enormemente el proceso de prueba en comparación con las herramientas anteriores.

Si trabaja con Kafka y busca una herramienta de prueba de UI conveniente, Plumber es la solución que puede hacer su trabajo mucho más fácil. Espero que mi experiencia sea útil para quienes se enfrentan a tareas similares.

El equipo técnico de Cooper (ex SberMarket) gestiona las redes sociales con noticias y anuncios. Si desea saber qué hay detrás del comercio electrónico de alta carga, síganos en Telegrama y en YouTube. Y también escucha podcast “Para la tecnología y estos” de nuestros responsables de TI.

Publicaciones Similares

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *