Introducción
Los registros de servicios son bases de datos que posibilitan la comunicación entre las aplicaciones gracias a que almacenan sus estructuras de datos. Funcionan como ubicaciones centrales donde los desarrolladores pueden registrar y buscar los esquemas utilizados para ciertas aplicaciones.
La importancia de los registros de servicios
El diseño de software moderno se basa en los microservicios distribuidos y sin conexión directa que intercambian datos a través de interfaces de programación de aplicaciones (API).
El intercambio entre las aplicaciones es fundamental tanto dentro como fuera de las grandes empresas, ya que les permite recibir y enviar datos cada segundo para mantener en marcha los negocios. Por eso es fundamental conservar la integridad de los datos, y una de las soluciones clave que garantiza que todas las aplicaciones estén preparadas para procesarlos es el registro de servicios.
Los sistemas de mensajería que transmiten datos, como Apache Kafka, no ofrecen una verificación inherente de los datos. Si, por ejemplo, el productor modifica su formato, o agrega o elimina un campo, y el usuario no está al tanto de los cambios, no podrá procesarlos correctamente y, en el peor de los casos, se podría producir una falla general en el sistema.
Antes de intercambiar datos, el usuario debe conocer la estructura (es decir, el esquema) que utiliza el productor, así como los cambios que se produzcan en él. Es necesario poder modificarlos sin causar interrupciones en el sistema de mensajería.
El productor puede enviar el esquema a los usuarios de forma manual (por ejemplo, a través de un correo electrónico con el archivo adjunto). Sin embargo, al igual que todos los procesos manuales, este procedimiento puede ser complejo, propenso a errores y difícil de auditar, así que podría generar una interrupción en el funcionamiento de los servicios, y no es sencillo descubrir la causa de la falla.
El registro de servicios brinda esta información a través de una plataforma accesible y funciona como una ubicación central donde los desarrolladores de aplicaciones que generan datos pueden registrar los esquemas que utilizan. Por su parte, los desarrolladores de aplicaciones que usan los datos pueden buscar los esquemas en el registro de servicios para permitir que estas los procesen. Algunos de los esquemas que pueden almacenarse en un registro de servicios son Apache Avro, JSON Schema y Google Protocol Buffer.
También se pueden almacenar otros recursos llamados artefactos, como las especificaciones de las API para la comunicación sincrónica entre las aplicaciones. Mientras más complejos y numerosos sean sus servicios, más útil resultará el registro.
El concepto de registro de servicios surgió hace varios años, pero se ha convertido en el centro de atención recientemente porque es ideal para satisfacer las necesidades en la era de los microservicios. Sirve como fuente única de información sobre la estructura de datos de una aplicación determinada, con la aprobación de los desarrolladores de los sistemas que los producen y utilizan. Además, respalda un enfoque que prioriza los contratos, ya que en vez de codificar la aplicación y luego ofrecer un acuerdo para que otras aplicaciones o empresas puedan comunicarse con ella, especifica el contrato en primer lugar, el cual incluye la entrada de información, los resultados, las especificaciones de carga y hasta las reglas de validación. Se exponen con claridad todos los aspectos para que no haya dudas sobre el funcionamiento de las interacciones.
Recursos de Red Hat
El uso de un registro de servicios con Apache Kafka
A continuación se analiza el funcionamiento de un registro de servicios con Apache Kafka. El registro de servicios es ideal para este caso práctico en particular porque Kafka no brinda el esquema a los usuarios de forma automática ni verifica los datos. Tampoco utiliza recursos vitales, ya que no analiza ni lee los datos, por lo que puede distribuirlos directamente a los usuarios con rapidez. Si se tomara el tiempo de realizar una verificación, disminuiría su rendimiento en gran medida. Por eso, la falta de control no representa un problema con Kafka, sino que posibilita una de sus principales ventajas: el alto rendimiento.
Sin embargo, es importante implementar algún tipo de control en la estructura de los datos para garantizar que las aplicaciones que los utilizan puedan procesarlos correctamente. La solución es un registro de servicios que determina las normas y exige su cumplimiento.
Los usuarios y los productores intercambian datos por medio de Kafka, y el registro de servicios les permite documentar, compartir y acordar los metadatos que definen el tráfico desde el primer momento, para evitar que se produzcan errores relacionados con ellos más adelante. Los metadatos se proporcionan como esquemas almacenados en el registro de servicios.
El desarrollador de la aplicación que produce los datos registra el esquema, lo cual garantiza que se adhiere a sus especificaciones; el registro de servicios incluso rechazará los datos que no correspondan al esquema indicado.
Las empresas también pueden incorporar esquemas para el uso general por parte del equipo de desarrollo. En este caso, el registro de servicios funciona como una biblioteca para los desarrolladores de aplicaciones que producen y utilizan los datos.
A su vez, ellos pueden recuperar los esquemas para diseñar las aplicaciones que procesarán los datos. Cuando se realicen modificaciones en el esquema, el registro de servicios pondrá las actualizaciones a disposición de los usuarios.
Ventajas del registro de servicios
Los registros de servicios ofrecen las siguientes ventajas para la empresa y el equipo de desarrollo:
Posibilidad de separar la estructura de datos de las aplicaciones
Puede utilizar un registro de servicios para separar la estructura de datos de las aplicaciones, así como para compartir y gestionar los esquemas y las descripciones de las API durante el tiempo de ejecución con una interfaz de REST.
Calidad superior de los datos
El registro de servicios valida el esquema y detecta errores en los datos para garantizar su integridad. Puede incluir normas para comprobar que el contenido cargado sea válido en cuanto a la sintaxis y la semántica, así como para garantizar que sea compatible con otras versiones anteriores y posteriores. También evitará que un productor envíe datos que no se correspondan con ese esquema.
Fuente única de información documentada
El registro de servicios funciona como una fuente única de información, que cuenta con la validación y aprobación de todas las partes involucradas.
Aumento en la productividad de los desarrolladores
El registro de servicios posibilita la reutilización uniforme de los esquemas y los diseños de las API, lo cual permite que los desarrolladores ahorren tiempo al diseñar una aplicación que produzca o utilice datos.
Ahorro de costos
La posibilidad de detectar los errores en el ciclo de vida del desarrollo, en lugar de hacerlo durante la ejecución, permite un mayor ahorro de los costos que surgen de corregir los fallos en las etapas más avanzadas del proceso.
Blogs de Red Hat
Aquí encuentras la información más reciente sobre nuestros clientes, partners y comunidades open source.