Este proyecto se trata de un juego de Ruleta, donde se exponen diferentes endpoints para poder ser consumidos. La aplicación tiene una arquitectura orientada a microservicios, se utiliza servicio de cache Azure Redis para mejorar la escalabilidad y rendimiento de la aplicación, se encuentra actualmente desplegada en AWS Lambda.
- POST -> Crea una nueva Ruleta /v1/roulettes [Endpoint Protegido por JWT]
- Ejemplo de uso
{ "name": "Ruleta 6", "state": "OPEN" }
- Ejemplo de uso
- PATCH -> Cambia el estado de una Ruleta (CLOSE-OPEN) /v1/roulettes [Endpoint Protegido por JWT]
- Ejemplo de uso https://oim5y3xrfn7mez4yo4x3k5atxu0bbuol.lambda-url.us-east-1.on.aws/v1/roulettes/{id de ruleta}
- GET -> Obtiene todas las ruletas existentes /v1/roulettes [Endpoint abierto]
- GET{id} -> Retorna una ruleta dado un id /v1/roulettes [Endpoint abierto]
- POST -> Abre una nueva apuesta en una ruleta abierta /v1/bets [Endpoint Protegido por JWT]
- Ejemplo de Uso
{ "number": 31, (entre 0 y 36) "color": "red", (red o black) "quantity": 206, (Mayor que 0 y menor que 10000) "rouletteId": "648d1291c75700597a89ac03" (Id de Ruleta que esté abierta) }
- Ejemplo de Uso
- PUT -> Cierra todas las apuestas, cierra la ruleta, borra las apuestas hechas y retorna el estado final del juego en especifico. [Endpoint Protegido por JWT]
- Ejemplo de Uso https://oim5y3xrfn7mez4yo4x3k5atxu0bbuol.lambda-url.us-east-1.on.aws/v1/bets?rouletteId={Id de la ruleta}
- POST -> Crea un nuevo usuario para el sistema /v1/users/signUp [Endpoint abierto]
- Ejemplo de uso
{ "displayName": "Julian Bonilla", "userName": "julian.bonilla", "email": "[email protected]", "password": "julian1234" }
- Ejemplo de uso
- POST -> Crea y devuelve un token para poder Loguearse, dado un usuario específico [Endpoint abierto]
- Ejemplo de Uso
{ "email":"[email protected], "password":"sanord$20" }
- Ejemplo de Uso
Atributo | Fuente | Estimulo | Ambiente | Respuesta | Medida de respuesta |
---|---|---|---|---|---|
Disponibilidad | Externo al sistema | Despliegue en aws se averió | Operaciones normales | Realizar nuevamente el despliegue | 3 horas |
Mantenibilidad | Interno al sistema | Código con malas práticas | Producción | evaluar código fuente y realizar correcciones | 1 hora |
Seguridad | Usuario no loggeado | Intenta loggearse al sistema | Bajo operaciones normales | No permitir al usuario loggearse | menos de 30 minutos |
Escalabilidad | externo al sistema | servidor muy lento | operaciones normales | escalabilidad horizontal | menos de 2 minutos |
- Las contraseñas deben ir encriptadas a la base de datos
- Agregar pruebas unitarias
- Ejecutar la aplicación en tiempo real
- Fue un reto gigante ya que nunca había programado en .Net Core 6.0, tuve algunos inconvenientes en las versiones de algunas librerías. Lo cual conllevaría una mayor investigación.
- Carlos Javier Orduz Trujillo