El otro punto y el más importante es que estamos usando una base de datos no relacional y eso puede traer varios problemas ya que podemos tener dirty reads, lo que permitiría agregar más de 13 jugadores. Mi sugerencia es que hagan un lock con Redis, si prefieren hacerlo de otra manera pueden hacerlo pero recuerden que debe funcionar en ambientes altamente concurrentes y distribuidos.
public void addPlayer(User user) {
if(getPlayers().size() >= 13) {
throw new ResponseStatusException(HttpStatus.BAD_REQUEST, "Match: Cannot add player. The team is complete.");
}
players.add(new Player(user.getId(), user.getAlias()));
}
Investigar como hacer que desde Java se pueda acceder a dicho master en ese caso.
Hacer pruebas:
Probar ATLAS (Solucion Cloud de Mongo)
Probar un Mongo local cluster
Probar en ultima instancia con docker compose
La conexion puede ser: con un url String (es una sola conexion), en ese caso el cluster de mongo debe gestionar dicha request para escritura.
La otra opcion es tener 2 repositorios (1 con la conexion a el de escritura y 1 a la conexion de lectura)
El otro punto y el más importante es que estamos usando una base de datos no relacional y eso puede traer varios problemas ya que podemos tener dirty reads, lo que permitiría agregar más de 13 jugadores. Mi sugerencia es que hagan un lock con Redis, si prefieren hacerlo de otra manera pueden hacerlo pero recuerden que debe funcionar en ambientes altamente concurrentes y distribuidos.
More Info: