¿Querés formar parte del equipo de desarrollo de NetLabs? ¡Completá el desafío!
El objetivo de este ejercicio es evaluar al candidato en el desarrollo de un simple sistema de compra de productos. El desafío consiste en varias etapas de dificultad incremental y podés implementar hasta cualquiera de ellas.
Hint: Las etapas 4 y 5 se pueden realizar antes. Es decir, no dependen del resto de las etapas 😉
Se evaluará:
- Estilo de código y desarrollo en Java SE.
- Diseño de APIs REST
- Uso de git (branches, commits, etc.) en caso de entregar la solución en un repositorio.
- Investigación y uso de tecnologías y herramientas.
- Cambios realizados y su justificación.
- Implementación con contenedores.
Si no sabes qué herramientas utilizar puedes probar con:
- Spring Framework.
- MySQL y Hibernate ORM para las bases de datos.
- ActiveMQ como broker de colas de mensaje.
- Maven para el manejo de dependencias.
Una vez finalizado el desafío compartinos un repositorio privado o envianos la solución por email. Para postularte podés hacerlo en cualquier momento llenando este formulario. Por consultas contactanos a este correo.
Introducción
Se desea implementar un sistema para la compra de productos, manejo de sus descuentos y alarmas de bajo stock.
El boceto de la arquitectura a alto nivel que se definió es el siguiente:
Gestor de Compras (GDC)
Este servicio maneja las compras de los productos. Los productos tienen nombre, precio y cantidad en stock y pertenecen a una categoría.
Las categorías tienen nombre y un valor/umbral que indica a partir de qué cantidad hay poco stock. Cuando la cantidad de stock de un producto sea menor a dicho valor, deberá notificar al Gestor de Alarmas. Esta notificación debe hacerse de manera asincrónica utilizando colas de mensaje.
La aplicación debe exponer una API REST que permita:
- Listar los productos.
- Comprar un producto indicando la cantidad deseada. Se debe tener en cuenta que el producto puede tener descuento. Ver Gestor de Descuentos.
- Consultar todas las compras hechas indicando fecha, producto y precio al que fue vendido.
- Cambiar el umbral de cada categoría.
Gestor de Descuentos (GDD)
A su vez, hay ciertos productos que poseen descuentos. Los mismos serán administrados por otro sistema. Este servicio debe exponer una API REST que permita consultar el descuento para cada producto. No todos los productos tienen descuentos.
Alarmas: Se asume que existe un sistema que consume de la cola de mensajes las notificaciones de alarma del GDC. Los mensajes contienen el nombre del producto y la cantidad restante.
1) Primera etapa
Se requiere implementar únicamente el GDC, asumiendo que no existen los descuentos ni las notificaciones de bajo stock.
2) Segunda etapa
Se requiere implementar el GDD y la integración del GDC al mismo.
3) Tercera etapa
Se requiere implementar la notificación del GDC a la cola de mensajes.
4) Cuarta etapa
Se requiere ejecutar cada una de estas aplicaciones en contenedores Docker.
5) Quinta etapa
Se requiere desplegar y orquestar los contenedores con Kubernetes.