11/20 DT 웹전시 개발 미팅

도메인

서브도메인 12개
교과서 6개
선생님 / 학생

로그인 연동

Mutation 신규 생성
UID (AuthCode)
유저 타입(AuthType)
STUDENT
TEACHER
출판사
지학사
교학사
학년(교재)
중등수학 1 ( 교학사 )
3000 세트 (그룹)
중등영어 1 ( 지학사 )
공통영어 1 ( 지학사 )
공통영어 2 ( 지학사 )
공통수학 1 ( 지학사 )
공통수학 2 ( 지학사 )

계정 생성

미리 생성하는 데이터들
유저
그룹
CCC
과목당 3천 세트 생성
맵핑
UID: 미리 생성된 유저 아이디
맵핑 유무 판단
존재 → 맞는 토큰 반환
존재 X → 맵핑 & 맞는 토큰 반환
동시성 대응
추가 요구사항
학생/선생님이 동일한 그룹안에 들어갈 수 있게 진행
케이스
1.
학생으로 최초 로그인
2.
선생님으로 최초 로그인
3.
학생 → 선생님으로 로그인
4.
선생님 → 학생으로 로그인
5.
학생으로 재 로그인 ( 로그아웃 후 다시 접속 )
6.
선생님으로 재 로그인 ( 로그아웃 후 다시 접속 )

동시성 대응

유저 선점이 동시에 일어날 수 있음
대응 옵션
DB 비관적락 (SELECT FOR UPDATE)
mysql skip lock
DB 네임드락
Redis 분산락
Redis 큐
선점가능한 유저 목록 미리 큐 적재 & POP
Redis
기타
맵핑 테이블 제약조건 추가 (userId 유니크 키)
3월 추후 대응 (피크 대용량 트래픽 대응)
큐를 앞에 두고 요청을 직렬화
워커를 통해 요청을 순차적으로 처리
FE에서는 요청 완료 시 SSE로 FE에 응답 전달

논의 사항

맵핑 테이블 설계

colulmns
external_user_id (uid)
auth_code
user_id
user_type
student / teacher
groupId
교과서Id
교학사 중등수학1
Constraint
external_user_id & user_type
user_id

미리 생성해놓은 유저 탐색 방식

사용자의 학생/선생님 계정이 동일한 그룹안에 들어갈 수 있게 진행
Teacher 1, Student1를 탐색할 수 있는 방식?
Group
Teacher 1
Student 1
Student 2 (더미 계정)
Student 3 (더미 계정)
Student 4 (더미 계정)
Student 5 (더미 계정)