es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Dado que se tienen dos servicios, ¿debo convertir los valores en la fuente o en el destino?

Digamos que tengo Servicio A y Servicio B.
Servicio A es un rastreador que expone sus resultados a través de una API.
Servicio B eventualmente consume los datos del Servicio A y los guarda en una base de datos.

Vamos a ejemplificar el problema diciendo que Servicio A expone un campo llamado created_at, el cual se obtiene como una marca de tiempo, es decir, un int. Sin embargo, este campo debe guardarse como datetime en Servicio B.
¿Debo convertir el valor de created_at en Servicio A o en Servicio B?

(NOTA: Entiendo que incluso si convierto el valor en Servicio A, al principio será consumido como un str en Servicio B, pero hay herramientas incorporadas que realizarían esta conversión de forma gratuita al guardar en la base de datos.)

Estoy inclinado a convertirlo en Servicio A, porque Servicio B es más complejo y, por lo tanto, dejaría un poco más de “responsabilidad” a Servicio A. Solo para dejarlo claro: aún verificaría si los datos llegan en un formato adecuado en Servicio A, pero no haría ninguna conversión para ajustarlo.

¿Es mi enfoque demasiado simplificado?

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Como experto en TI especializado en arquitectura, microservicios y diseño de API, es importante considerar los principios de la arquitectura de microservicios cuando nos enfrentamos a esta pregunta. En una arquitectura de microservicios, cada servicio debería ser responsable de sus propios datos y no debería haber dependencias entre servicios.

    Con eso en mente, sería más apropiado convertir el valor de created_at en Service B. Esto se debe a que Service B es responsable de almacenar los datos en la base de datos y debe asegurarse de que los datos se almacenen en el formato correcto. Si el valor de created_at se convierte en Service A, se introduciría una dependencia entre Service A y Service B, lo cual va en contra de los principios de una arquitectura de microservicios.

    Además, si hay otros servicios que consumen las API proporcionadas por Service A, podrían esperar que la marca de tiempo esté en formato entero, y convertirla en Service A rompería sus expectativas.

    En resumen, cada servicio debería ser responsable de sus propios datos y Service B debería ser responsable de convertir el valor de created_at al formato correcto antes de almacenarlo en la base de datos.

Comments are closed.