Diseño de Servicios de Lectura Escalables y Stateless

Clase 22 de 25Curso Práctico de Arquitectura Backend

Resumen

¿Cómo abordar el diseño de un servicio de lectura?

El reto del diseño de un servicio de lectura es un desafío fascinante y crucial en el mundo de la arquitectura de sistemas back end. Los servicios deben construirse sobre una base sólida que asegure que la información que hemos publicado a través del servicio de escritura se recupere de manera eficiente. Este reto te invita a diseñar un documento de diseño a bajo nivel, detallando cada aspecto de la implementación del servicio de lectura. Es fundamental elaborar este trabajo con esmero, buscando retroalimentación varias veces para mejorar el diseño. ¡Veamos cómo lograrlo!

¿Qué elementos deben incluirse en el diseño de la entidad de reseña?

Para que el servicio de lectura funcione correctamente, es esencial definir con claridad y precisión el diseño de la entidad de reseña (review). Este diseño es el principal entregable y debe satisfacer las necesidades del cliente. Algunos puntos a considerar son:

  • Detallar la entidad: Proporcionar una definición clara de qué elementos conforman la reseña.
  • Método de extracción de información: Definir cómo se extraerá la información desde la base de datos no relacional.
  • Transformación y regreso de los datos: Describir la manera en que los datos serán transformados y devueltos a través de una petición GET.
  • Incluir todos los componentes necesarios: Desde bases de datos adicionales hasta servicios cache, serverless o dedicados.

¿Cuáles son las consideraciones clave al diseñar la arquitectura?

La arquitectura debe estar bien pensada para servir de la mejor manera a millones de usuarios. Algunas recomendaciones incluyen:

  • Elegir un diseño escalable: Debe ser capaz de manejar millones de lecturas simultáneamente.
  • Incluir un servicio stateless: Sugiere que el servicio de lectura no debe guardar estado, permitiendo escalar horizontalmente utilizando máquinas virtuales. Esto implica que ninguna VM debe guardar operaciones de almacenamiento.
  • Conectar adecuadamente con la base de datos no relacional: La base de datos es la fuente de información y debe ser eficiente.

¿Cómo determinar el modelo de datos y el payload del JSON?

Definir el modelo de datos es una parte crucial del proceso de diseño. Debe incluir ejemplos claros de cómo se verá el payload de JSON que el API devolverá. Al desarrollar este modelo:

  • Proporciona ejemplos JSON: Ayuda al cliente a entender los datos que recibirá.
  • Define claramente el API GET: Este diseño mostrará lo que el cliente puede esperar al consumir el API.

¿Qué tecnologías pueden ser utilizadas?

El diseño a bajo nivel debe incluir detalles sobre las tecnologías y proveedores que se utilizarán. Aunque el lenguaje de programación es opcional, es necesario definir:

  • Proveedor cloud: Escoger el entorno o servicio cloud que mejor se adapte a las necesidades del proyecto.
  • Tecnologías específicas para el sistema: Determinar las herramientas más eficaces para cada parte del servicio.

Para concluir, hay que utilizar todos los recursos a nuestra disposición y aplicar la creatividad y el análisis propio para desarrollar una solución única. Esto enriquecerá tu capacidad de creación y te preparará mejor para enfrentar desafíos futuros en el campo de la arquitectura back end. ¡Adelante con la implementación de este reto!