- 많은 동시접속자를 소화해야 한다 (1000명 이상, 아직 정확한 바는 없음)
- 이를 위해 스케일 아웃을 할 가능성이 아주 높다
- 따라서 서버 간 인증 정보 동기화에 대한 비용을 줄이고자 JWT를 채택한다
- 토큰에서 사용자를 식별한다.
- 닉네임으로 토큰을 발급한다.
- 이름, 그룹은 없을 수 있다.
- 임시 사용자를 생성한다.
- 이름을 무작위 생성한다.
- 이름, 그룹이름으로 사용자를 생성한다.
- 이름은 중복될 수 없다.
- 이름을 수정한다.
- 이름은 중복될 수 없다.
- 그룹을 수정한다.
- 닉네임으로 사용자를 생성한다.
- 사용자 정보와 토큰을 반환한다.
- 임시 사용자를 생성한다.
- 사용자 정보와 토큰을 반환한다.
- 이름을 수정한다.
- 그룹을 수정한다.
- 자신의 정보를 알 수 있다.
- 특정 이름으로 시작하는 그룹 이름을 검색한다
- 특정 이름으로 시작하는 사용자 이름을 검색한다
- 전체 랭킹을 조회한다.
- 베스트 점수가 기준이다.
- 50등까지 조회한다.
- 내 랭킹(전체)을 포함한다.
- 그룹 내 랭킹을 조회한다.
- 특정 이름으로 시작하는 사용자들의 랭킹을 조회한다.
- 게임
- 10*18 사이즈의 게임판을 생성한다.
- 초기화한다
- 게임판을 재생성한다.
- 게임 시간을 초기화한다.
- 점수를 초기화한다
- 특정 범위의 사과들을 제거한다
- 제거 개수만큼 점수를 얻는다
- 생성된지 120초가 지나면 더 이상 조작할 수 없다.
- 게임 주인인지 알 수 있다
- 게임판
- 원하는 크기의 게임판을 랜덤 생성한다.
- 특정 범위의 사과들을 제거한다
- 범위가 게임판과 일치하는지 검증한다
- 사과 좌표들에 사과가 없으면 예외
- 사과 좌표들 외에 사과가 있으면 예외
- 사과들의 합이 10이어야 제거할 수 있다
- 제거된 개수를 반환한다
- 범위가 게임판과 일치하는지 검증한다
- 범위
- 좌상단을 알 수 있다
- 우하단을 알 수 있다
- 범위 내의 모든 좌표들을 알 수 있다
- 사과 좌표들을 알 수 있다
- 빈 좌표들을 알 수 있다
- 좌표
- 음수이면 예외를 던진다
- 사과
- 숫자는 1~9 사이이다.
- 랜덤 숫자로 생성할 수 있다.
- 빈 사과인지 알 수 있다