엠퀴즈 (클라우드, 서버리스 기반 실시간 웹 퀴즈 게임)_완료보고서.pdf

yeongkikim2 41 views 89 slides May 06, 2025
Slide 1
Slide 1 of 89
Slide 1
1
Slide 2
2
Slide 3
3
Slide 4
4
Slide 5
5
Slide 6
6
Slide 7
7
Slide 8
8
Slide 9
9
Slide 10
10
Slide 11
11
Slide 12
12
Slide 13
13
Slide 14
14
Slide 15
15
Slide 16
16
Slide 17
17
Slide 18
18
Slide 19
19
Slide 20
20
Slide 21
21
Slide 22
22
Slide 23
23
Slide 24
24
Slide 25
25
Slide 26
26
Slide 27
27
Slide 28
28
Slide 29
29
Slide 30
30
Slide 31
31
Slide 32
32
Slide 33
33
Slide 34
34
Slide 35
35
Slide 36
36
Slide 37
37
Slide 38
38
Slide 39
39
Slide 40
40
Slide 41
41
Slide 42
42
Slide 43
43
Slide 44
44
Slide 45
45
Slide 46
46
Slide 47
47
Slide 48
48
Slide 49
49
Slide 50
50
Slide 51
51
Slide 52
52
Slide 53
53
Slide 54
54
Slide 55
55
Slide 56
56
Slide 57
57
Slide 58
58
Slide 59
59
Slide 60
60
Slide 61
61
Slide 62
62
Slide 63
63
Slide 64
64
Slide 65
65
Slide 66
66
Slide 67
67
Slide 68
68
Slide 69
69
Slide 70
70
Slide 71
71
Slide 72
72
Slide 73
73
Slide 74
74
Slide 75
75
Slide 76
76
Slide 77
77
Slide 78
78
Slide 79
79
Slide 80
80
Slide 81
81
Slide 82
82
Slide 83
83
Slide 84
84
Slide 85
85
Slide 86
86
Slide 87
87
Slide 88
88
Slide 89
89

About This Presentation

엠퀴즈 (클라우드, 서버리스 기반 실시간 웹 퀴즈 게임)_완료보고서.pdf


Slide Content

클라우드 네이티브 웹 애플리케이션 양성 과정
광안1반 2팀 엠퀴즈 프로젝트 완료 보고서
프로젝트 명 : 엠퀴즈
[ 프로젝트 기간 ]
1차 : 2022.11 ~ 2022.12.12
2차 : 2022.12.13 ~ 2022.12.30
분반 광안 1반 - 2팀
팀명 엠퀴즈
팀장 고태훈
팀원김시현, 김영기, 김재훈A
1

목차
1.프로젝트 개요
2.프로젝트 핵심 기능
3.프로젝트 기술 개발 환경
4.프로젝트 개발 계획
5.프로젝트 설계 문서
6.인프라
7.Load Test
8.SWOT 분석
2

1.프로젝트 개요
- 본 프로젝트 완료 보고서는 ‘클라우드 네이티브 웹 애플리케이션 양성 과정’
에서 습득한 기술과 함께 새로운 기술에 대한 팀원들간 스터디 및 기술 공유를
통해 ‘클라우드 기반 실시간 퀴즈 게임’ 인 엠퀴즈의 서비스 구현 및 운영 하도록
합니다.
-PC나 스마트폰이 있으면 누구든 회원 가입 없이 다양한 퀴즈쇼를 제작하고,
여러 사람들과 함께 즐길 수 있는 실시간 양방향 퀴즈게임에 참여할 수 있으며,
참여자들이 실시간 랭킹 및 결과 확인을 통해 경쟁의 재미와 몰입감을 느낄 수
있습니다.
- 엠퀴즈는 지루했던 현장에 몰입감과 성취감을 불어넣을 수 있어 교실수업 대신
마이크로러닝, 원격교육, 마케팅(이벤트& 프로모션) 등
게이미피케이션(Gamification)이 필요한 ​다양한 분야에서 활용할 수 있습니다.
1.1 프로젝트 목표
- 실시간 게임 제작
- 시간 당 459,000명의 유저 안정적 동시 접속
- Container 환경 구축
- DevOps(CI/CD) 구축
3

2. 프로젝트 핵심 기능
-Create: 다양한 형태의 퀴즈를 제작하고, 즐거운 경쟁을 경험할 수 있습니다.
-Easy Play: PC나 스마트폰이 있으면 누구든 퀴즈쇼를 제작하고,
상호작용하며 퀴즈게임에 참여할 수 있으며, 지루하던 현장에 몰입감과
성취감을 붙여넣을 수 있습니다.
-No Login: 퀴즈를 풀기 위한 별도의 회원가입, 로그인이 필요 없습니다.
공유된 URL 또는 PIN 번호만 있으면 끝!
-Competition: Quiz Show에 참여한 참여자들이 실시간 랭킹 및 결과 확인을
통해 경쟁의 재미와 몰입감을 느낄 수 있습니다.
2.1 프로젝트 기술적 특징
- WebSocket 기반 실시간 게임 제어 및 통신 구현
- React, Redux 기반 Front-End
- Lambda를 통한 퀴즈 제작, 리포트 생성
- Rebbit MQ를 활용한 다중 서버
- DynamoDB를 이용한 퀴즈 Show 데이터, Log 데이터 관리
- CI/CD 파이프라인 구축
- 무중단 배포 구현
- 컨테이너 기반 오토 스케일링
- Grafana 모니터링
- Lucost 성능 테스트
4

3. 기술개발 환경
개발언어
Java(JDK11), JavaScript
운영체제
Linux, Windows
DB
DynamoDB, RDS(MongoDB, MySQL), Redis
서버
AWS
협업도구
JIRA, Notion, Google drive
형상관리
Git, GitHub
통합개발환경(IDE)
IntelliJ, VSCode
기타 사용 도구
Docker, Jenkins, Termius, Locust, Grafana
5

4. 기술개발 계획
4.1 세부 추진일정
기술 설계 및 개발 세부일정
팀 결성
주제 선정 2022.11.01 ~ 2022.11.02
설계 작업
자료 조사 2022.11.03 ~ 2022.11.06
요구사항 정의서 2022.11.07 ~ 2022.11.08
유스케이스 2022.11.09
플로우 차트 2022.11.10
DB 설계 2022.11.11 ~ 2022.11.14
작업 분배 및 구현 작업
역할 분담 및 구현 2022.11.15 ~ 2022.12.10
1차 프로젝트 발표
발표 준비 2022.12.10 ~ 2022.12.11
발표 2022.12.12
기능 테스트 및 마무리
기능 테스트 2022.12.12 ~ 2022.12.13
자료 정리 2022.12.13 ~ 2022.12.17
발표 PPT 제작 2022.12.18 ~ 2022.12.19
코드 리뷰 2022.12.20 ~ 2022.12.23
2차 프로젝트 발표
발표 준비 2022.12.24 ~ 2022.12.29
발표 2022.12.30
6

4.2 간트차트
4.3 업무분담
팀원 및 역할
고태훈
(팀장)
-총괄 : PM
-Front-End : 로그인 & 회원가입, 퀴즈 Play 기능
-Back-End : Host & Client, Web Socket, Redis, Auth 기능
-Infra : 공동 작업
김영기
-총괄 : Infra
-Front-End : 랜딩 페이지, 게임 대기 화면
-Back-End : Rebbit MQ
김시현
-총괄 : Back-End
-Front-End : Report 출력, 퀴즈 Play 기능
-Back-End : Host & Client, Web Socket, Redis, Auth 기능
-Infra : 공동 작업
김재훈A
-총괄 : Front-End
-Front-End : SHOW 제작
-Back-End : Serverless
-Infra : 공동 작업
7

설계 문서 목차
5.1 요구사항 정의서
5.1.1 요구사항 정의서 - 도메인 용어 정의
5.1.2 요구사항 정의서 - 목록
5.1.3 요구사항 정의서 - 상세
5.2 Use Case
5.2.1 Use Case - 진행자 쇼 생성(Host ShowMake)
5.2.2 Use Case - 진행자 쇼 진행(Host Play)
5.2.3 Use Case - 진행자 인증(Host Auth)
5.2.4 Use Case - 참가자 서비스(Client Service)
5.3 Flow Chart
5.3.1 Flow Chart
5.4 ERD
5.4.1 ERD - RDB
5.4.2 ERD - NoSQL(Show)
5.4.3 ERD - NoSQL(Log)
5.4.4 ERD - Redis
8

5.1.1 요구사항 정의서
도메인 용어 정의
9

5.1.1 요구사항 정의서 - 도메인 용어 정의
도메인 그룹
용어
설명
KR EN
퀴즈
진행자 Host 퀴즈쇼(Show) 제작 및 퀴즈 게임 진행(Play)을 하는 계정
참가자 Client 퀴즈 게임 진행(Play)에 참여하는 유저
공통 Common 진행자(Host)와 참가자(Client)가 공통으로 사용하는 기능
퀴즈 Quiz 질문과 보기, 답을 가지고 있는 문제 데이터
쇼 Show Quiz(문제)의 모음. Play를 진행하기 위해 필요한 데이터
플레이 Play 진행자(Host)와 참가자(Client)와 함께 퀴즈를 푸는 게임
라운드 Round
진행자(Host)가 Play를 생성하고, 퀴즈 한문제를 푸는 단위.
Round의 라이프 사이클 - 시작, 풀이, 제출, 결과 확인
예시) 퀴즈 제작시 15개의 Quiz를 생성 후 Play를 하면 총 15개의 Round가 진행됨.
핀 번호PIN
Play 생성시 고유하기 부여되는 일련번호.
Play를 구분하는 6자리 번호
플레이
대기방
Lobby Play 시작전 사용자들이 입장하는 방
시작 카운터StartCounterDown문제 시작전 사용되는 카운터
퀴즈 타이머QuizTimer 퀴즈 문제풀이시 시간제한을 위해 사용되는 타이머
리포트 Report Play 결과 데이터를 저장 및 분석한 것
10

5.1.2 요구사항 정의서
목록
11

5.1.2 요구사항 정의서 - 목록
No 분류 요구사항 ID 요구사항 기능명 요구사항 상세내용 요약
1
Host
Show
Make
(show
제작)
Control
(Show
제어)
HSM-Control-01 Show 생성
1.모달창을 통해 Show 생성 정보를 입력
2.입력정보 - 대표 이미지, Show제목, 카테고리 선택, 공개,
비공개 설정, 태그, 배경음악
3.생성 버튼을 통해 생성
2 HSM-Control-02 Show 검증 1.Play가능한 상태인지 아닌지 검증하는 기능
3 HSM-Control-03 Show 삭제
1.본인 제작 퀴즈 삭제 시 경고 창을 통해 삭제 재여부 확인,
삭제 시 복구 불가
4 HSM-Control-04 Show 조회 1.본인 제작 퀴즈 조회
5 HSM-Control-05 Show 복사 1.다른 사람이 만든 Show를 복사해 오는 기능
6 HSM-Control-06 Show 저장 1.Save 버튼 누를 경우 Show 정보 저장
7 HSM-Control-07Show 미리보기1.Show에 저장된 퀴즈 정보 미리보기
8
Quiz
Control
(Quiz
제어)
HSM-QuizControl-01 Quiz 생성 1.페이지 추가 버튼 클릭 시 Quiz 추가 생성
9 HSM-QuizControl-02 Quiz 복제 1.퀴즈 복사 아이콘 클릭 시 Quiz 복사
10 HSM-QuizControl-03Quiz 순서 이동
1.Show 제작 중 퀴즈 미리보기 목록에서 Drag & Drop으로
Quiz 순서 제어
11 HSM-QuizControl-04 Quiz 삭제 1.퀴즈 삭제 아이콘 클릭 시 Quiz 삭제
12
Quiz
Data
(Quiz
데이터
입력)
HSM-QuizData-01Quiz 유형 선택
1.해당 Quiz의 퀴즈 유형 선택
2. 유형타입 ( 선택형, O/X, 단답형 )
13
HSM-QuizData-02
Quiz 질문 입력
1.해당 퀴즈의 질문 입력
12

1-2. 요구사항 정의서 - 목록
No 분류 요구사항 ID요구사항 기능명 요구사항 상세내용 요약
14
Host
Show
Make
(show
제작)
Quiz
Data
(Quiz
데이터
입력)
HSM-QuizData-03
Quiz 미디어 유형별
입력 1.해당 퀴즈의 미디어 입력
15 HSM-QuizData-04
Quiz 미디어 유형별
선택
1.해당 Quiz의 미디어 유형 선택
미디어 유형 ( Image, Youtube)
16 HSM-QuizData-05Quiz 유형별 정답 입력1.유형별 정답 후보 및 정답 설정
17 HSM-QuizData-06Quiz별 점수 설정
1.점수 사용 ON / OFF
2.점수 중요도(가중치-3단계) 설정 가능
18 HSM-QuizData-07Quiz별 제한시간 설정1.제한 시간 설정(초단위)
19
Quiz
Preview
HSM-QuizPreview-01Quiz Preview 1.현재 입력된 퀴즈 정보 미리보기 출력
20 HSM-QuizPreview-02Quiz List 목록
1.제작 중인 Show의 Quiz 목록 조회
21
Play
Common
HP-MakePin-01 PIN번호 생성 1.퀴즈 Room 생성시 해당 PIN 번호 생성
22 HP-BGM-01 배경 음악 재생 설정1.배경음악 음량 조절
23
Lobby
HP-Lobby-01Lobby 페이지 화면
1.해당 Play의 PIN, QR, URL출력
2.실시간 참여 유저 목록 표시
24 HP-Lobby-02
Lobby 페이지 화면(QR
코드)
1.Room에 해당하는 QR Code 생성 후 출력
2.참가자(Client)가 공유받은 QR Code를 통해 해당 Play에
참여
25 HP-Lobby-03Lobby 페이지 화면(URL)
1.URL 버튼을 통해 생성된 URL을 복사
2.참가자(Client)가 공유받은 URL을 통해 해당 Play에 참여
26 HP-Lobby-04
Lobby에 입장한 참가자
리스트 조회
1.Lobby에 입장한 퀴즈 참가자를 실시간으로 리스트 조회
2.참가자 목록에서 참가자를 추방
27 HP-Lobby-05
Lobby에 입장한 참가자
추방
1.참가자 관리를 위해 참가자 리스트에 존재하는 참가자
추방
13

1-2. 요구사항 정의서 - 목록
No 분류 요구사항 ID 요구사항 기능명 요구사항 상세내용 요약
28
Host
Play
Control
HP-Control-01 Play 시작 1.Lobby 페이지에서 Play 시작하는 기능
29 HP-Control-02 다음 문제 시작
1.각 문제의 풀이 시간이 종료된 경우 다음 문제 버튼으로
다음 문제 실행
30 HP-Control-03 Play 종료 1.최종 결과창에서 Play를 종료하는 기능
31
Connec
tion
HP-Connection-01 강제종료
1.Host가 Lobby에서 Room 강제 종료 가능
2.Host가 진행 중인 Play 강제 종료 가능
32 HP-Connection-02 재접속 1.중간에 Play에서 이탈하게 될 경우 Play중인 Quiz 재접속
33
Result
HP-Result-01 Play 최종 등수 1.퀴즈 최종 등수 출력
34 HP-Result-02Play 최종 결과 저장1.임시적으로 캐시에 저장된 결과 영구적으로 저장
35
Round
Control
HPR-Control-01시작 카운트다운 1.문제정보를 수신한 후 3초 카운트 다운이 진행
36 HPR-Control-02제한시간 타이머 1.문제풀이시 사용되는 타이머
37 HPR-Control-03자동으로 Round 종료1.모든 인원이 정답을 제출 했을 경우 Round 종료
38 HPR-Control-04현재 Round 종료1.진행자가 Round 종료 버튼 클릭시 현재 Round 종료
39 HPR-Control-05현재 Round 건너뛰기
1.Round 건너뛰기 버튼 클릭시 현재 Round는 종료 되고
다음 Round 화면으로 이동
40
Round
Display
Quiz
HPR-DisplayQuiz-01Quiz를 화면에 출력1.서버에서 받아온 퀴즈 데이터를 화면에 출력
41 HPR-DisplayQuiz-02 미디어 1.미디어를(사진/동영상) 카운트다운 후 자동 출력
42 HPR-DisplayQuiz-03정답을 제출한 참여자수1.문제 풀이 후 정답을 제출한 참가자(Client)수 확인
14

1-2. 요구사항 정의서 - 목록
No 분류 요구사항 ID 요구사항 기능명 요구사항 상세내용 요약
43
Host
Play
Round
Result
HPR-Result-01현재 라운드 결과 보기
1.현재 라운드의 문제, 보기 표시
2.정답인 보기 하이라이트
3.현재 라운드까지의 랭킹 및 본인 점수 표시시
44
Show
Report
ListHSR-SearchList-01완료된 퀴즈 조회1.완료된 퀴즈 결과 리스트 조회
45
Data
Process
HSR-DataProcess-01
완료된 퀴즈를 통해 리포트
생성
1.퀴즈Play가 완료되면 자동으로 Play데이터를 가공해
리포트 생성
46 Open HSR-Open-01
완료된 퀴즈의 리포트 상세
내용 조회
1.완료된 퀴즈의 리포트 제공
(문제 정답 유무, 시간 카운트, 점수)
2.완료된 퀴즈의 참여자 최종 랭킹 출력
3.유저별, 전체 정답률 출력
47
HostAuth
Login HA-Login-01 진행자 로그인 1.진행자 id(EMail)로 로그인 진행
48 RegisterHA-Register-01진행자 계정 생성
1.진행자 회원 가입
2.아이디는 진행자 본인EMail사용(중복시 사용 불가)
3.본인EMail검증 필요
(8자리 숫자, 영문 대/소문자 결합
인증 번호 발급 후 검증)
4.비밀 번호 : 5~16자리 영문자, 숫자, 특수문자(!@#$%)
조합 및 비밀 번호 안전도 검사(안전, 보통, 위험, 권장하지
않음)
5.닉네임 : 한글, 영어 대/소문자 3~15 자리 조합
49 Mail HA-EMail-01 Email 메일 인증
1.회원가입 시Mail본인 인증
(8자리 숫자, 영문 대/소문자 결합 인증 번호
발급 및 인증)
15

1-2. 요구사항 정의서 - 목록
No 분류 요구사항 ID 요구사항 기능명 요구사항 상세내용 요약
50
ClientPlay
Lobby
CP-Lobby-01PIN 입력 페이지 화면
1.사이트 메인 페이지를 통해 접속
2.진행자(Host)가 생성한 quiz가 있고, 입력한 pin 번호가
일치할 경우 Play방 입장
51 CP-Lobby-02 Play 참여 방법 1.PIN번호, URL, QRcode를 통해 퀴즈 Play 참여가능
52 CP-Lobby-03Play 닉네임 설정 화면1.특수문자 사용 불가
53 CP-Lobby-04Play 시작 전 대기 화면1.참가자(Client)가 설정한 닉네임을 확인 가능
54 CP-Lobby-05
Play 시작 전 대기 화면
(Client 강제 퇴장 화면)
1.진행자(Host)가 해당 참가자(Client)를 강제 퇴장 시켰을
경우 퇴장 알림을 참가자(Client)가 해당 페이지에서 확인
2.참가자(Client) 퇴장 확인 후 사이트 메인 페이지로 이동
55
Result
CP-Result-01 최종 결과 화면
1.해당 Play Quiz Pin 번호 화면에 출력
2.참가자(Client) 개별 순위 및 점수 화면에 출력
3.총 참가자수, 총 문제수, 총 정답수, 총 오답 수 출력
4.화면 캡쳐 기능
56 CP-Result-02최종 결과 화면 캡쳐
1.최종 결과 화면에서 화면 캡쳐 가능
2.캡쳐한 화면은 다운로드 가능
57
Connecti
on
CP-Connection-01 Play 종료
1.Play의 모든 풀이가 종료 되고, 최종 결과 화면에서 확인
버튼을 선택하게 되면
2.Plays는 종료 되고 사이트 Main 화면으로 이동
58 CP-Connection-02 Play 재접속
1.게임 시작 후 추가 입장은 제한
2.기존 입장했던 인원은 재접속 가능
3.현재 진행중인 Play 중간에 재접속할 경우 다음 Play 부터
참가 가능
4.중간에 풀지 못한 문제들은 모드 0점 처리
16

1-2. 요구사항 정의서 - 목록
No 분류 요구사항 ID 요구사항 기능명 요구사항 상세내용 요약
59
Client
RoundControl
CR-Control-01
Round 시작 카운트다운
화면
1.진행자(Host)가 해당 Quiz를 시작하면 문제 풀이 전
시작을 알리는 3초 카운트 다운 화면으로 이동
2.3초 카운트 다운 이후 문제 공개
60 CR-Control-02Round 제한시간 타이머
1.타이머 시간은 출제자가 문제당 설정한 시간으로 설정
2.타이머 종료시 현재 입력한 답을 정답으로 제출
61 CR-Control-03다음 Round 대기 화면1.다음 Play 화면이 나오기 전 까지 대기 화면 출력
62
Round
Solving
quiz
CR-SolvingQuiz-01문제 풀이 화면
1.문제 유형에 맞게 문제 화면 제공(O/X 유형, 선택형 유형,
단답형)
2.참가자(Client)가 입력한 문제 답 제출 가능
63 CR-SolvingQuiz-02정답 제출 버튼
1.참가자(Client)가 선택 또는 작성한 답을 제출 할 수 있어야
하며, 제출한 시간(풀이시간)을 포함한 정보 전달 가능
2.참가자(Client)가 제한된 시간(타이머) 안에 답을 제출하지
않았을 경우 0점처리
65
Result
CR-Result-01각 문제별 정답 확인 화면
1.Client가 문제의 답을 제출 하거나, 시간(타이머)가 지나
문제가 끝났을 경우 해당 문제에 대한 정답 확인 가능
66 CR-Result-02
상위 랭킹 순위 및 개인
점수 확인 화면
1.각 Quiz 마다 상위 1~3위 참가자(Client)를 확인 가능
2.참가자(Client) 개별 점수를 확인 가능
17

5.1.3 요구사항 정의서
상세
18

5.1.3 요구사항 정의서 - 상세
대분류진행자(Host)중분류
Make
(show 제작)
요구사항IDHSM-Control-01
요구사항명 Control (Show 제어)
요구사항 기능명 Show 생성
요청내용
1.모달창을 통해 Show 생성 정보를 입력
2.입력 정보
-대표이미지
-Show 제목
-카테고리 선택
-공개/비공개 설정
-태그
-배경음악 설정
3.생성 버튼 클릭을 통해 생성
선행조건
(Input)
1.진행자(Host) 로그인 상태
2.Show 정보 입력
3.생성 버튼 클릭을 통해 Show 생성
후행조건
(Output)
1.내용 누락 없을 시 입력된 정보로 Show 생성 후 Show 제작 페이지로 이동
2.내용 누락 있을 시 누락 내용에 대한 경고창 출력
기타조건 -
대분류진행자(Host)중분류
Make
(show 제작)
요구사항IDHSM-Control-02
요구사항명 Control (Show 제어)
요구사항 기능명 Show 검증
요청내용 1.Play 가능한 상태인지 아닌지 검증하는 기능
선행조건
(Input)
1.진행자(Host) 로그인 상태
2.진행자(Host) 본인이 생성한 Show만 검증 가능
3.Show 제작 시 Save 버튼 클릭 시 동작
후행조건
(Output)
1.Play 가능 상태일 시 완성 상태 지정
2.Play 불가능 상태일 시 모달창에 불가능 요인 출력 후 작성중 상태 지정
기타조건 -
19

5.1.3 요구사항 정의서 - 상세
대분류진행자(Host)중분류
Make
(show 제작)
요구사항IDHSM-Control-03
요구사항명 Control (Show 제어)
요구사항 기능명 Show 삭제
요청내용
1.본인 제작 퀴즈 삭제 시 경고 창을 통해 삭제 재여부 확인
2.삭제 시 복구 불가
선행조건
(Input)
1.진행자(Host) 로그인 상태
2.진행자(Host) 본인이 생성한 Show만 삭제 가능
3.Show 목록의 삭제 버튼 클릭 시
후행조건
(Output)
1.Show 삭제
2.Show 목록에 삭제된 Show를 제외하고 출력
기타조건 -
대분류진행자(Host)중분류
Make
(show 제작)
요구사항IDHSM-Control-04
요구사항명 Control (Show 제어)
요구사항 기능명 Show 조회
요청내용 1.본인 제작 퀴즈 조회
선행조건
(Input)
1.진행자(Host) 로그인 상태
2.검색 조건 입력(필수x)
후행조건
(Output)
1.입력된 검색 조건에 따른 Show 목록 출력
기타조건 -
20

5.1.3 요구사항 정의서 - 상세
대분류진행자(Host)중분류
Make
(show 제작)
요구사항IDHSM-Control-05
요구사항명 Control (Show 제어)
요구사항 기능명 Show 복사
요청내용 1.다른 사람이 만든 Show를 복사해 오는 기능
선행조건
(Input)
1.진행자(Host) 로그인 상태
2.Show 제작 중 Show 버튼 클릭 시 Show 검색, 조회 모달 창 생성
3.모달창에서 복사할 Show 선택 시 동작
후행조건
(Output)
1.복사할 Show의 Quiz목록을 제작중인 Show에 추가
2.Quiz 목록에 추가한 Quiz 목록을 포함하여 출력
기타조건 -
대분류진행자(Host)중분류
Make
(show 제작)
요구사항IDHSM-Control-06
요구사항명 Control (Show 제어)
요구사항 기능명 Show 저장
요청내용 1.Save 버튼 누를 경우 Show 정보 저장
선행조건
(Input)
1.진행자(Host) 로그인 상태
2.Show 제작 중 Save 버튼 클릭 시 Show 검증 기능 동작
후행조건
(Output)
1.Save 버튼 클릭 시 Show 검증 모달 창 출력
기타조건 -
21

5.1.3 요구사항 정의서 - 상세
대분류진행자(Host)중분류
Make
(show 제작)
요구사항IDHSM-Control-07
요구사항명 Control (Show 제어)
요구사항 기능명 Show 미리보기
요청내용 1.Show에 저장된 퀴즈 정보 미리보기
선행조건
(Input)
1.진행자(Host) 로그인 상태
2.Show 목록에서 Show 선택 시 동작
후행조건
(Output)
1.선택된 Show의 Quiz 미리보기 출력
기타조건 -
대분류진행자(Host)중분류
Make
(show 제작)
요구사항IDHSM-QuizControl-01
요구사항명 Quiz Control (Quiz 제어)
요구사항 기능명 Quiz 생성
요청내용 1.페이지 추가 버튼 클릭 시 Quiz 추가 생성
선행조건
(Input)
1.진행자(Host) 로그인 상태
2.Show 제작 중 페이지 추가 버튼 클릭 시 Quiz 추가 생성
후행조건
(Output)
1.Quiz 추가 생성
2.Quiz 미리보기 목록에 추가된 Quiz를 포함하여 출력
기타조건 -
22

5.1.3 요구사항 정의서 - 상세
대분류진행자(Host)중분류
Make
(show 제작)
요구사항IDHSM-QuizControl-02
요구사항명 Quiz Control (Quiz 제어)
요구사항 기능명 Quiz 복제
요청내용 1.퀴즈 복사 아이콘 클릭 시 Quiz 복사
선행조건
(Input)
1.진행자(Host) 로그인 상태
2.Show 제작 중 퀴즈 복사 아이콘 클릭 시 해당 Quiz 복사 후 생성
후행조건
(Output)
1.선택된 Quiz 복사
2.Quiz 미리보기 목록에 복사된 Quiz를 포함하여 출력
기타조건 -
대분류진행자(Host)중분류
Make
(show 제작)
요구사항IDHSM-QuizControl-03
요구사항명 Quiz Control (Quiz 제어)
요구사항 기능명 Quiz 순서 이동
요청내용 1.Show 제작 중 퀴즈 미리보기 목록에서 Drag & Drop으로 Quiz 순서 제어
선행조건
(Input)
1.진행자(Host) 로그인 상태
2.Show 제작 중 퀴즈 미리보기 목록에서 Quiz를 Drag & Drop
후행조건
(Output)
1.Quiz 미리보기 목록에서 변화된 Show 목록 순서대로 출력
기타조건 -
23

5.1.3 요구사항 정의서 - 상세
대분류진행자(Host)중분류
Make
(show 제작)
요구사항IDHSM-QuizControl-04
요구사항명 Quiz Control (Quiz 제어)
요구사항 기능명 Quiz 삭제
요청내용 1.퀴즈 삭제 아이콘 클릭 시 Quiz 삭제
선행조건
(Input)
1.진행자(Host) 로그인 상태
2.Show 제작 중 퀴즈 삭제 아이콘 클릭 시 해당 Quiz 삭제
후행조건
(Output)
1.선택된 Quiz 삭제
2.Quiz 미리보기 목록에 삭제된 Quiz를 제외하고 출력
기타조건 -
대분류진행자(Host)중분류
Make
(show 제작)
요구사항IDHSM-QuizData-01
요구사항명
Quiz Data
(Quiz 데이터 입력)
요구사항 기능명 Quiz 유형 선택
요청내용
1.해당 Quiz의 퀴즈 유형 선택
2.유형
-선택형
-O/X
-단답형
선행조건
(Input)
1.진행자(Host) 로그인 상태
2.Show 제작 중 퀴즈 유형 선택
후행조건
(Output)
1.선택한 유형에 따라 답변 입력창 출력
기타조건 -
24

5.1.3 요구사항 정의서 - 상세
대분류진행자(Host)중분류
Make
(show 제작)
요구사항IDHSM-QuizData-02
요구사항명
Quiz Data
(Quiz 데이터 입력)
요구사항 기능명 Quiz 질문 입력
요청내용 1.해당 퀴즈의 질문 입력
선행조건
(Input)
1.진행자(Host) 로그인 상태
2.Show 제작 중 질문 입력
후행조건
(Output)
1.퀴즈 미리보기에 질문 출력
기타조건 -
대분류진행자(Host)중분류
Make
(show 제작)
요구사항IDHSM-QuizData-04
요구사항명
Quiz Data
(Quiz 데이터 입력)
요구사항 기능명 Quiz 미디어 유형별 입력
요청내용 1.해당 퀴즈의 미디어 입력
선행조건
(Input)
1.진행자(Host) 로그인 상태
2.Show 제작 중 미디어 유형 선택 된 상태
3.Show 제작 중 미디어 입력
후행조건
(Output)
1.퀴즈 미리보기에 미디어 출력
기타조건 -
25

5.1.3 요구사항 정의서 - 상세
대분류진행자(Host)중분류
Make
(show 제작)
요구사항IDHSM-QuizData-03
요구사항명
Quiz Data
(Quiz 데이터 입력)
요구사항 기능명 Quiz 미디어 유형별 선택
요청내용
1.해당 Quiz의 미디어 유형 선택
2.유형
-Image
-Youtube
선행조건
(Input)
1.진행자(Host) 로그인 상태
2.Show 제작 중 미디어 유형을 선택한 상태태
후행조건
(Output)
1.선택한 유형별 미디어 입력창 출력
기타조건 -
대분류진행자(Host)중분류
Make
(show 제작)
요구사항IDHSM-QuizData-05
요구사항명
Quiz Data
(Quiz 데이터 입력)
요구사항 기능명 Quiz 유형별 정답 입력
요청내용 1.유형별 정답 후보 및 정답 설정
선행조건
(Input)
1.진행자(Host) 로그인 상태
2.Show 제작 중 Quiz 유형 선택된 상태
3.Show 제작 중 정답 후보 및 정답 입력
후행조건
(Output)
1.퀴즈 미리보기에 정답 후보 출력
기타조건 -
26

5.1.3 요구사항 정의서 - 상세
대분류진행자(Host)중분류
Make
(show 제작)
요구사항IDHSM-QuizData-06
요구사항명
Quiz Data
(Quiz 데이터 입력)
요구사항 기능명 Quiz별 점수 설정
요청내용
1.점수 사용 ON/OFF
2.점수 중요도(가중치-☆☆☆) 설정
선행조건
(Input)
1.진행자(Host) 로그인 상태
2.Show 제작 중 점수 사용 버튼 클릭
3.Show 제작 중 점수 중요도 설정
후행조건
(Output)
1.점수 사용 버튼 off 시 점수 중요도 0설정
2.점수 사용 버튼 on 시 점수 중요도 1설정
3.중요도 버튼 가중치에 따라 점수 중요도 설정
기타조건 -
대분류진행자(Host)중분류
Make
(show 제작)
요구사항IDHSM-QuizData-07
요구사항명
Quiz Data
(Quiz 데이터 입력)
요구사항 기능명 Quiz별 제한시간 설정
요청내용 1.제한 시간 설정(초단위)
선행조건
(Input)
1.진행자(Host) 로그인 상태
2.Show 제작 중 제한 시간 입력
후행조건
(Output)
1.선택된 제한 시간 출력
기타조건 -
27

5.1.3 요구사항 정의서 - 상세
대분류진행자(Host)중분류
Make
(show 제작)
요구사항IDHSM-QuizPreview-01
요구사항명 Quiz Preview
요구사항 기능명 Quiz Preview
요청내용 1.현재 입력된 퀴즈 정보 미리보기 출력
선행조건
(Input)
1.출력할 퀴즈 정보 입력 된 상태
후행조건
(Output)
1.퀴즈 정보를 미리보기 UI로 출력
기타조건 1.퀴즈 제작, 진행에서 사용
대분류진행자(Host)중분류
Make
(show 제작)
요구사항IDHSM-QuizPreview-02
요구사항명 Quiz Preview
요구사항 기능명 Quiz List 목록
요청내용 1.제작 중인 Show의 Quiz 목록 조회
선행조건
(Input)
1.진행자(Host) 로그인 상태
2.Show 제작 중 Quiz 정보 존재
후행조건
(Output)
1.제작중인 Show의 Quiz 목록을 출력
기타조건 -
28

5.1.3 요구사항 정의서 - 상세
대분류진행자(Host)중분류 Play 요구사항IDHP-MakePin-01
요구사항명 Common
요구사항 기능명 PIN번호 생성
요청내용 1.퀴즈 Room 생성시 해당 PIN 번호 생성
선행조건
(Input)
1.진행자(Host) 로그인 상태
2.진행자(Host)가 Show 목록에서 Play 버튼 클릭
후행조건
(Output)
1.해당 퀴즈 PIN 번호 생성
2.생성된 PIN 번호로 Room 생성
기타조건 -
대분류진행자(Host)중분류 Play 요구사항ID HP-BGM-01
요구사항명 Common
요구사항 기능명 배경 음악 재생 설정
요청내용 1.배경음악 음량 조절
선행조건
(Input)
1.음량 조절 게이지로 음량 조절
후행조건
(Output)
1.조절된 음량에 따라 음량 조절
기타조건 -
29

5.1.3 요구사항 정의서 - 상세
대분류진행자(Host)중분류 Play 요구사항IDHP-Lobby-01
요구사항명 Lobby
요구사항 기능명 Lobby 페이지 화면
요청내용
1.해당 Play PIN번호 출력
2.해당 Play QR 코드 출력
3.해당 Play URL 복사 기능
4.실시간 참여 유저 목록 표시
선행조건
(Input)
1.진행자(Host) 로그인 상태
2.진행자(Host)가 Room을 생성한 상태
후행조건
(Output)
1.실시간 참가자(Client) 출력
기타조건 -
대분류진행자(Host)중분류 Play 요구사항IDHP-Lobby-02
요구사항명 Lobby
요구사항 기능명 Lobby 페이지 화면(QR 코드)
요청내용
1.Room에 해당하는 QR Code 생성 후 출력
2.참가자(Client)가 공유받은 QR Code를 통해 해당 Play에 참여
선행조건
(Input)
1.진행자(Host) 로그인 상태
2.진행자(Host)가 Room을 생성
3.URL 정보
후행조건
(Output)
1.URL 정보에 따라 QR code 출력력
기타조건 -
30

5.1.3 요구사항 정의서 - 상세
대분류진행자(Host)중분류 Play 요구사항IDHP-Lobby-03
요구사항명 Lobby
요구사항 기능명 Lobby 페이지 화면(URL)
요청내용
1.URL 버튼을 통해 생성된 URL을 복사
2.참가자(Client)가 공유받은 URL을 통해 해당 Play에 참여
선행조건
(Input)
1.진행자(Host) 로그인 상태
2.진행자(Host)가 Room을 생성
3.URL 정보
후행조건
(Output)
1.생성된 PIN 번호에 따라 URL을 출력
기타조건 -
대분류진행자(Host)중분류 Play 요구사항IDHP-Lobby-04
요구사항명 Lobby
요구사항 기능명 Lobby에 입장한 참가자 리스트 조회
요청내용
1.Lobby에 입장한 퀴즈 참가자를 실시간으로 리스트 조회
2.참가자 목록에서 참가자를 추방
선행조건
(Input)
1.진행자(Host)가 로그인 상태
2.참가자 목록 정보를 서버에서 조회
3.참가자 추방 버튼을 클릭
후행조건
(Output)
1.받아온 참가자 목록을 출력
2.참가자 추방 버튼 클릭 시 참가자 추방 모달창을 출력
기타조건 -
31

5.1.3 요구사항 정의서 - 상세
대분류진행자(Host)중분류 Play 요구사항IDHP-Lobby-05
요구사항명 Lobby
요구사항 기능명 Lobby에 입장한 참가자 추방
요청내용 1.참가자 관리를 위해 참가자 리스트에 존재하는 참가자 추방
선행조건
(Input)
1.진행자(Host)가 로그인 상태
2.참가자 리스트 조회에서 참가자 추방 버튼 클릭
3.강퇴 모달창에서 확인 버튼 클릭
후행조건
(Output)
1.확인 버튼 클릭 시 해당 참가자를 추방
기타조건 -
대분류진행자(Host)중분류 Play 요구사항IDHP-Control-01
요구사항명 Control
요구사항 기능명 Play 시작
요청내용 1.Lobby 페이지에서 Play 시작 하는 기능
선행조건
(Input)
1.진행자(Host) 로그인 상태
2.시작 버튼 클릭
후행조건
(Output)
1.참가자들 전체 시작 카운트 다운 시작
기타조건 -
32

5.1.3 요구사항 정의서 - 상세
대분류진행자(Host)중분류 Play 요구사항IDHP-Control-02
요구사항명 Control
요구사항 기능명 다음 문제 시작
요청내용 1.각 문제의 풀이 시간이 종료된 경우 다음 문제 버튼으로 다음 문제 실행
선행조건
(Input)
1.진행자(Host)가 로그인 상태
2.중간 결과창에서 다음 버튼 클릭
후행조건
(Output)
1.참가자들 전체 시작 카운트 다운 시작
기타조건 -
대분류진행자(Host)중분류 Play 요구사항IDHP-Control-03
요구사항명 Control
요구사항 기능명 Play 종료
요청내용 1.최종 결과창에서 Play를 종료하는 기능
선행조건
(Input)
1.진행자(Host)가 로그인 상태
2.최종 결과창에서 확인 버튼 클릭
후행조건
(Output)
1.웹 소켓 연결 종료
2.메인화면으로 이동 및 새로고침 진행
기타조건 -
33

5.1.3 요구사항 정의서 - 상세
대분류진행자(Host)중분류 Play 요구사항IDHP-Connection-01
요구사항명 Connection
요구사항 기능명 강제종료
요청내용
1.진행자(Host)가 Lobby에서 Room 강제 종료 가능
2.진행자(Host)가 Play 중에 Play 강제 종료 가능
선행조건
(Input)
1.진행자(Host)가 로그인 상태
후행조건
(Output)
1.Play 진행을 위해 생성한 데이터 삭제
2.웹소켓 연결 종료
3.메인화면으로 이동 및 새로고침 진행
기타조건 -
대분류진행자(Host)중분류 Play 요구사항IDHP-Connection-02
요구사항명 Connection
요구사항 기능명 재접속
요청내용 1.중간에 Play에서 이탈하게 될 경우 Play중인 Quiz 재접속
선행조건
(Input)
1.진행자(Host)가 로그인 상태
후행조건
(Output)
1.진행자(Host)인지 검증
기타조건 1.호스트가 재접속 하기 전까지 참가자(Client)는 Quiz
34

5.1.3 요구사항 정의서 - 상세
대분류진행자(Host)중분류 Play 요구사항IDHP-Result-01
요구사항명 Result
요구사항 기능명 Play 퀴즈 최종 등수
요청내용 1.퀴즈 최종 등수 출력
선행조건
(Input)
1.최종 문제 진행 완료 상태
후행조건
(Output)
1.최종 등수 출력
기타조건 -
대분류진행자(Host)중분류 Play 요구사항IDHP-Result-02
요구사항명 Result
요구사항 기능명 Play 최종 결과 저장
요청내용 1.임시적으로 캐시에 저장된 결과 영구적으로 저장
선행조건
(Input)
1.마지막 Quiz 진행 완료 상태
후행조건
(Output)
1.최종 결과를 서버에 저장 후 참가자 전체 최종 등수 페이지 이동
기타조건 -
35

5.1.3 요구사항 정의서 - 상세
대분류진행자(Host)중분류 Play 요구사항IDHPR-Control-01
요구사항명 Round Control
요구사항 기능명 시작 카운트 다운
\
요청내용 1.문제 정보를 수신한 후 3초 카운트 다운이 진행
선행조건
(Input)
1.진행자(Host)가 Play Lobby에서 시작 버튼 클릭
후행조건
(Output)
1.3초 카운트 후 Quiz 표시
기타조건 -
대분류진행자(Host)중분류 Play 요구사항IDHPR-Control-02
요구사항명 Round Control
요구사항 기능명 제한시간 타이머
요청내용 1.문제 풀이 시 사용되는 타이머
선행조건
(Input)
1.진행자(Host)가 퀴즈를 생성할 때 타이머를 설정
후행조건
(Output)
1.제한시간 타이머가 끝났을 때 참가자(Client) 전부 오답으로 제출
기타조건 -
36

5.1.3 요구사항 정의서 - 상세
대분류진행자(Host)중분류 Play 요구사항IDHPR-Control-03
요구사항명 Round Control
요구사항 기능명 자동으로 Round 종료
요청내용 1.모든 인원이 정답을 제출 했을 경우 Round 종료
선행조건
(Input)
1.모든 인원 정답 제출
후행조건
(Output)
1.참가자 대기 페이지로 이동
기타조건 -
대분류진행자(Host)중분류 Play 요구사항IDHPR-Control-04
요구사항명 Round Control
요구사항 기능명 현재 Round 종료
요청내용 1.진행자가 다음 버튼 클릭시 현재 Round 종료
선행조건
(Input)
1.진행자 다음 버튼 클릭
후행조건
(Output)
1.참가자 전원 결과 페이지로 이동
기타조건 -
37

5.1.3 요구사항 정의서 - 상세
대분류진행자(Host)중분류 Play 요구사항IDHPR-Control-05
요구사항명 Round Control
요구사항 기능명 현재 Round 건너뛰기
요청내용
1.Round 건너뛰기 버튼 클릭시 현재 Round는 종료 되고 다음 Round 화면으로
이동
선행조건
(Input)
1.진행자(Host)가 건너뛰기 버튼 클릭
후행조건
(Output)
1.DB에 현재 퀴즈 번호 갱신
2.다음 Round 시작 카운트 진행
기타조건 1.이동시 채점을 하지 않고, 최종결과에도 반영하지 않음
대분류 진행자(Host)중분류 Play 요구사항IDHPR-DisplayQuiz-01
요구사항명 Round Display Quiz
요구사항 기능명 Quiz를 화면에 출력
요청내용 1.서버에서 받아온 퀴즈 데이터를 화면에 출력
선행조건
(Input)
1.서버에서 퀴즈데이터 받아오기
후행조건
(Output)
1.퀴즈 데이터 화면에 출력
기타조건 -
38

5.1.3 요구사항 정의서 - 상세
대분류 진행자(Host)중분류 Play 요구사항IDHPR-DisplayQuiz-02
요구사항명 Round Display Quiz
요구사항 기능명 미디어
요청내용
1.사진/동영상
2.카운트 다운 후 자동출력 및재생
선행조건
(Input)
1.퀴즈 제작할 때 미디어(사진/동영상) 추가
후행조건
(Output)
1.퀴즈를 화면에 출력할 때 같이 표시 (동영상은 자동 재생)
기타조건
대분류진행자(Host)중분류 Play 요구사항IDHPR-DisplayQuiz-03
요구사항명 Round Display Quiz
요구사항 기능명 정답을 제출한 참가자(Client)수
요청내용 1.문제 풀이 후 정답을 제출한 참가자(Client) 수 확인
선행조건
(Input)
1.참가자(Client)가 문제를 풀고 제출한 상태
2.진행자(Host)가 다음 버튼을 클릭했을 때
후행조건
(Output)
1.정답을 제출한 참가자(Client) 수 출력
기타조건 -
39

5.1.3 요구사항 정의서 - 상세
대분류진행자(Host)중분류 Play 요구사항IDHPR-Result-01
요구사항명 Round Result
요구사항 기능명 현재 라운드 결과 보기
요청내용
1.현재 라운드의 문제, 보기 출력
2.보기별 선택인원 출력
3.정답인 보기 하이라이트 출력
선행조건
(Input)
1.참가자(Client)가 문제를 제출
2.진행자(Host)가 다음 버튼을 클릭
후행조건
(Output)
1.서버에서 정답 여부 검증 및 점수 반영
2.현재 라운드 문제, 보기 출력
3.보기별 선택인원 표기
4.정답인 보기 하이라이트 처리
기타조건 -
대분류진행자(Host)중분류Show Report요구사항IDHSR-SearchList-01
요구사항명 List
요구사항 기능명 완료된 퀴즈 조회
요청내용 1.완료된 퀴즈 결과 리스트 조회
선행조건
(Input)
1.DB에 저장되어 있는 완료된 퀴즈 결과 리스트 조회
후행조건
(Output)
1.조회된 데이터 화면에 출력
기타조건 -
40

5.1.3 요구사항 정의서 - 상세
대분류진행자(Host)중분류Show Report요구사항ID
HSR-DataProcess-0
1
요구사항명 Data Process
요구사항 기능명 완료된 퀴즈를 통해 리포트 생성
요청내용 1.퀴즈Play가 완료되면 자동으로 데이터를 가공해 리포트 생성
선행조건
(Input)
1.퀴즈 Play가 끝났을 때
후행조건
(Output)
1.리포트 데이터 형식에 맞게 데이터 가공
2.리포트 데이터를 DB에 저장
기타조건 -
대분류진행자(Host)중분류Show Report요구사항IDHSR-Open-01
요구사항명 Open
요구사항 기능명 완료된 퀴즈의 리포트 상세 내용 조회
요청내용
1.완료된 퀴즈의 리포트제공
-문제 정답 유무
-시간 카운트
-점수
선행조건
(Input)
1.DB에 저장된 해당 리포트 데이터를 조회
후행조건
(Output)
1.리포트 상세 내용 출력
기타조건 -
41

5.1.3 요구사항 정의서 - 상세
대분류진행자(Host)중분류 Auth 요구사항ID HA-Login-01
요구사항명 진행자 로그인
요구사항 기능명 로그인을 통해 진행자로 접속
요청내용 1.진행자 id(EMail)로 로그인 진행
선행조건
(Input)
1.회원가입을 통해 진행자 회원 가입
2.로그인(아이디/비밀번호) 검증
후행조건
(Output)
1.진행자 대시보드로 이동
기타조건 -
대분류진행자(Host)중분류 Auth 요구사항IDHA-Register-01
요구사항명 진행자 회원 가입
요구사항 기능명 진행자 회원 가입
요청내용
1.진행자 회원 가입
2.아이디는 진행자 본인EMail사용(중복시 사용 불가)
3.본인EMail검증 필요
(8자리 숫자, 영문 대/소문자 결합 인증 번호 발급 후 검증)
4.비밀 번호 : 5~16자리 영문자, 숫자, 특수문자(!@#$%) 조합 및 비밀 번호 안전도
검사(안전, 보통, 위험, 권장하지 않음)
5.닉네임 : 한글, 영어 대/소문자 3~15 자리 조합
선행조건
(Input)
1.아이디(EMail), 비밀번호, 닉네임 입력 검증
2.아이디(EMail) 중복 검증
3.EMail 인증 검증
4.비밀 번호 검증
후행조건
(Output)
1.진행자 계정 데이터 DB에 저장
2.로그인 화면으로 이동
기타조건 -
42

5.1.3 요구사항 정의서 - 상세
대분류진행자(Host)중분류 Auth 요구사항ID HA-EMail-01
요구사항명 EMail
요구사항 기능명 EMail 본인 인증
요청내용
1.회원가입 시Mail본인 인증
(8자리 숫자, 영문 대/소문자 결합 인증 번호 발급 및 인증)
선행조건
(Input)
1.호스트가 id로 사용 할 본인 이메일 입력
2.메일 서버를 통해 호스트가 입력한 id(EMail)로 인증 번호 전송
후행조건
(Output)
1.EMail로 전달 받은 인증번호 회원가입 화면에서 일치 여부 확인
기타조건 -
43

5.1.3 요구사항 정의서 - 상세
대분류참가자(Client)중분류 Play 요구사항IDCP-Lobby-01
요구사항명 Lobby
요구사항 기능명 PIN 입력 페이지 화면
요청내용
1.사이트 메인 페이지 또는 링크를 통해 접속
2.진행자(Host)가 생성한 quiz가 있고, 입력한 pin 번호가 일치할 경우 Play 방 입장
선행조건
(Input)
1.진행자(Host)가 방을 생성한 상태
2.진행자(Host)가 생성한 해당 qiuz 방의 Pin 번호를 입력한 상태
후행조건
(Output)
1.입력한 pin 번호가 일치할 경우 닉네임 입력 창으로 이동
2.입력한 pin 번호가 일치하지 않거나 없는 경우 없는 번호 알림 출력
기타조건 -
대분류참가자(Client)중분류 Play 요구사항IDCP-Lobby-02
요구사항명 Lobby
요구사항 기능명 Play 참여 방법
요청내용
1.사이트 메인 페이지를 통해 접속하여 PIN 번호를 이용해 퀴즈 참여
2.진행자(Host) 게임 대기 화면에 출력된 QR 코드를 이용해 퀴즈 참여
3.진행자(Host)가 전달한 URL을 통해 퀴즈 참여
선행조건
(Input)
1.진행자(Host)가 방을 생성한 상태
2.진행자(Host)가 생성한 방의 QR 코드가 존재한 상태
3.진행자(Host)가 전달한 URL이 존재한 상태
후행조건
(Output)
1.입력한 pin 번호가 일치할 경우 닉네임 입력 창으로 이동
2.입력한 pin 번호가 일치하지 않을 경우 없는 번호 알림 출력
기타조건
44

5.1.3 요구사항 정의서 - 상세
대분류참가자(Client)중분류 Play 요구사항IDCP-Lobby-03
요구사항명 Lobby
요구사항 기능명 Play 닉네임 설정 화면
요청내용 1.특수문자 사용 불가
선행조건
(Input)
1.진행자(Host)가 방을 생성한 상태
2.PIN 번호를 통해 해당 QUIZ에 접속한 상태
후행조건
(Output)
1.입력한 닉네임이 중복되지 않을 경우 게임 대기 창으로 이동
2.입력한 닉네임이 중복 되거나 생성할 수 없는 경우 닉네임 설정 실패 알림 출력
기타조건 -
대분류참가자(Client)중분류 Play 요구사항IDCP-Lobby-04
요구사항명 Lobby
요구사항 기능명 Play 시작 전 대기 화면
요청내용 1.참가자(Client)가 설정한 닉네임을 확인 가능
선행조건
(Input)
1.진행자(Host)가 방을 생성한 상태
2.PIN 번호를 통해 해당 QUIZ에 접속한 상태
3.닉네임을 설정한 상태
후행조건
(Output)
1.사용자가 설정한 닉네임을 포함한 대기화면 출력
기타조건 -
45

5.1.3 요구사항 정의서 - 상세
대분류참가자(Client)중분류 Play 요구사항IDCP-Lobby-05
요구사항명 Lobby
요구사항 기능명 Play 시작 전 대기(참가자(Client) 강제 퇴장 화면)
요청내용
1.진행자(Host)가 해당 참가자(Client)를 강제 퇴장 시켰을 경우 퇴장 알림을
참가자(Client)가 해당 페이지에서 확인
2.참가자(Client) 퇴장 확인 후 사이트 메인 페이지로 이동
선행조건
(Input)
1.진행자(Host)가 방을 생성한 상태
2.PIN 번호를 통해 해당 Room에 접속한 상태
3.닉네임을 설정한 상태
후행조건
(Output)
1.퇴장 확인 : 퇴장 알림창 출력
2.알림창 확인 클릭 시 사이트 메인 페이지로 이동
기타조건 -
대분류참가자(Client)중분류 Play 요구사항IDCP-Result-01
요구사항명 Result
요구사항 기능명 최종 결과 화면
요청내용
1.해당 Play Quiz Pin 번호 화면에 출력
2.참가자(Client) 개별 순위 및 점수 화면에 출력
3.총 참가자수, 총 문제수, 총 정답수, 총 오답 수 출력
4.화면 캡쳐 기능
선행조건
(Input)
1.Play의 모든 문제 풀이가 완료된 상태
2.진행자(Host)가 다음을 클릭했을 때 마지막 문제 풀이가 종료 되었을 경우
후행조건
(Output)
1.해당 Play Pin 번호 전달
2.기본 이미지 전달
3.참가자(Client) 개발 순위 및 점수 전달
4.총 참가수, 총 문제수, 총 정답수, 총 오답 수 전달
기타조건
1.화면 캡쳐 버튼 선택시 화면 캡쳐 화면 출력
2.확인 버튼 선택시 Play는 종료되며 사이트 Main 화면으로 이동 참가자(Client)는
종료 이후 순위 확인 불가능
46

5.1.3 요구사항 정의서 - 상세
대분류참가자(Client)중분류 Play 요구사항IDCP-Result-02
요구사항명 Result
요구사항 기능명 최종 결과 화면 캡쳐
요청내용
1.최종 결과 화면에서 화면 캡쳐 가능
2.캡쳐한 화면은 다운로드 가능
선행조건
(Input)
1.최종결과 화면에서 캡쳐 버튼을 클릭한 상태
후행조건
(Output)
1.캡쳐한 화면 전달
기타조건 -
대분류참가자(Client)중분류 Play 요구사항IDCP-Connection-01
요구사항명 Connection
요구사항 기능명 Play 종료
요청내용
1.Play의 모든 풀이가 종료 되고, 최종 결과 화면에서 확인 버튼을 선택하게 되면
2.Play는 종료 되고 사이트 Main 화면으로 이동
선행조건
(Input)
1.Cleint가 확인 버튼 선택
후행조건
(Output)
1.Play 종료 메시지 전달
2.Main 화면 으로 이동
기타조건 -
47

5.1.3 요구사항 정의서 - 상세
대분류 참가자(Client)중분류 Play 요구사항IDCP-Connection-02
요구사항명 Connection
요구사항 기능명 Play 재접속
요청내용
1.게임 시작 후 추가 입장은 제한
3.기존 입장했던 인원은 재접속 가능
4.현재 진행중인 Play 중간에 재접속할 경우 다음 Play 부터 참가 가능
5.중간에 풀지 못한 문제들은 모드 0점 처리
선행조건
(Input)
1.접속 하려는 Play가 종료되지 않은 상태
2.접속 하려는 Play의 Pin 번호가 일치한 상태
후행조건
(Output)
1.풀이가 진행 중일 경우 대기 화면 전달
2.풀이 진행이 끝난 경우 풀이 화면 전달
기타조건 -
대분류참가자(Client)중분류 Round요구사항IDCR-Control-01
요구사항명 Control
요구사항 기능명 Round 시작 카운트다운 화면
요청내용
1.진행자(Host)가 해당 Quiz를 시작하면 문제 풀이 전 시작을 알리는 3초 카운트
다운 화면으로 이동
2.3초 카운트 다운 이후 문제 공개
선행조건
(Input)
1.진행자(Host)가 방을 생성한 상태
2.진행자(Host)가 해당 Quiz를 시작한 상태
후행조건
(Output)
-
기타조건 -
48

5.1.3 요구사항 정의서 - 상세
대분류 참가자(Client)중분류 Round요구사항IDCR-Control-02
요구사항명 Control
요구사항 기능명 Round 제한시간 타이머
요청내용
1.타이머 시간은 출제자가 문제당 설정해둔 시간으로 설정
2.타이머 종료시 현재 입력한 답을 정답으로 제출
선행조건
(Input)
1.진행자(Host)가 Quiz 생성시 해당 퀴즈 문제에 따라 타이머 설정한 상태
후행조건
(Output)
-
기타조건 -
대분류 참가자(Client)중분류 Round요구사항IDCR-Control-03
요구사항명 Control
요구사항 기능명 다음Round대기 화면
요청내용 1.다음 Play 화면이 나오기 전 까지 대기 화면 출력
선행조건
(Input)
1.참가자(Client)가 문제 풀이 화면에서 문제를 제출 한 경우
2.제한 시간(타이머)이 종료 되었을 경우
후행조건
(Output)
기타조건
1.진행자(Host)가 Play에서 이탈할 경우 참가자(Client)는 진행자(Host)가 재접속
하기 전까지 대기 화면 상태로 유지
49

5.1.3 요구사항 정의서 - 상세
대분류참가자(Client)중분류 Round요구사항IDCR-SolvingQuiz-01
요구사항명 Solving quiz
요구사항 기능명 문제 풀이 화면
요청내용
1.문제 유형에 맞게 문제 화면 제공(O/X 유형, 선택형 유형, 단답형)
2.참가자(Client)가 입력한 문제 답 제출 가능
선행조건
(Input)
1.진행자(Host)가 생성한 Quiz가 존재한 상태
2.진행자(Host)가 생성한 Quiz 문제 요청
후행조건
(Output)
1.진행자(Host)가 생성한 해당 Quiz 문제 반환
(해당 문제 출력, 지문 정보만 서버에서 가져와 각 로컬 Redux에 저장)
기타조건 -
대분류 참가자(Client)중분류 Round요구사항IDCR-SolvingQuiz-02
요구사항명 Solving quiz
요구사항 기능명 정답 제출 버튼
요청내용
1.참가자(Client)가 선택 또는 작성한 답을 제출 할 수 있어야 하며, 제출한
시간(풀이시간)을 포함한 정보 전달 가능
2.참가자(Client)가 제한된 시간(타이머) 안에 답을 제출하지 않았을 경우 0점처리
선행조건
(Input)
1.참가자(Client)가 정답을 선택 및 작성해서 버튼을 선택한 상태
후행조건
(Output)
기타조건 1.참가자(Client)가 시간내 정답을 제출하지 않았을 경우 0점 처리
50

5.1.3 요구사항 정의서 - 상세
대분류참가자(Client)중분류 Round요구사항IDCR-Result-01
요구사항명 Result
요구사항 기능명 각 문제별 정답 확인 화면
요청내용
1.Client가 문제의 답을 제출 하거나, 시간(타이머)가 지나 문제가 끝났을 경우 해당
문제에 대한 정답 확인 가능
선행조건
(Input)
1.참가자(Client)가 문제 풀이 화면에서 문제를 제출 한 상태
2.제한 시간(타이머)가 종료된 상태
3.진행자(Host)가 다음을 클릭한 상태
후행조건
(Output)
1.해당 Quiz 답 전달
기타조건 1.진행자(Host)가 다음 Play 시작 하기 전까지 대기
대분류참가자(Client)중분류 Round요구사항IDCR-Result-02
요구사항명 Result
요구사항 기능명 상위 랭킹 순위 및 개인 점수 확인 화면
요청내용
1.각 Quiz 마다 상위 1~3위 참가자(Client)를 확인 가능
2.참가자(Client) 개별 점수를 확인 가능
선행조건
(Input)
1.참가자(Client)가 문제 풀이 화면에서 문제를 제출 한 상태
2.제한 시간(타이머)이 종료된 상태
3.진행자(Host)가 다음을 클릭한 상태
후행조건
(Output)
1.점수 계산 후 해당 Play의 1~3위 참가자(Client) 전달
2.점수 계산 후 참가자(Client) 개별 점수 전달
기타조건 1.진행자(Host)가 다음 Play 시작 하기 전까지 대기
51

5.2.1 Use Case
진행자 쇼 생성
(Host ShowMake)
52

5.2.1 Use Case - 진행자 쇼 생성(Host ShowMake)
53

5.2.2 Use Case
진행자 쇼 진행
(Host Play)
54

5.2.2 Use Case - 진행자 퀴즈 진행(Host Play)
55

5.2.3 Use Case
진행자 인증
(Host Auth)
56

5.2.3 Use Case - 진행자 인증(Host Auth)
57

5.2.4 Use Case
참가자 서비스
(Client Service)
58

5.2.4 Use Case - 참가자 서비스(Client Service)
59

5.3.1 Flow Chart
60

61

5.4.1 ERD
RDB
62

5.4.1 ERD - RDS
63

5.4.2 ERD
NoSQL (Show)
64

5.4.2 ERD - NoSQL (Show)
65

5.4.3 ERD
NoSQL (Log)
66

5.4.3 ERD - NoSQL (Log)
67

5.4.4 ERD
Redis
68

5.4.4. ERD - Redis
69

인프라 문서 목차
6.1 전체구조
6.2 Front End
6.3 Back End
6.4 ECS, ASG
6.5 CI/CD
6.6 인프라 예상 비용
6.6.1 인프라 예상 비용 계산 - 상세
6.6.2 인프라 예상 비용 - Computer
6.6.3 인프라 예상 비용 - Network & RabbitMQ
6.6.4 인프라 예상 비용 - DB
6.6.5 인프라 예상 비용 - Storage
70

6.1 전체 구조
6.2 Front End
71

6.3 Back End
6.4ECS, ASG
Launch Template
& ASG
ECS Task - Play ECS Task - Auth
- AMI
:ami-09501c9961ca54ebc
-Instance type : t3.small
- AZs : ap-northeast-3b, c
- Desired capacity : 5
- Minimum capacity : 5
- Maximum capacity : 5
-Task CPU : 0.9 vCPU
-Task RAM : 0.9 GB
- Container Name : mquiz-play
-Task CPU : 0.899 vCPU
-Task RAM : 0.899 GB
- Port Mapping : 0:8080
- Enviroment : 보고서 참고
-HealthCheck Command
CMD-SHELL, curl -f
http://localhost:8080/actuator/health || exit 1
Interval (30), Timeout (5)
Start period (120), Retries (3)
-Task CPU : 0.5 vCPU
-Task RAM : 0.5 GB
- Container Name : mquiz-auth
-Task CPU : 0.499 vCPU
-Task RAM : 0.499 GB
- Port Mapping : 0:8080
- Enviroment : 보고서 참고
-HealthCheck Command
CMD-SHELL, curl -f
http://localhost:8080/actuator/health || exit
1
Interval (30), Timeout (5)
Start period (120), Retries (3)
72

6.4 ECS Container 환경변수
73

6.5 CI/CD
6.6 인프라 예상 비용 계산 - 1달 기준
74

6.6.1 인프라 예상 비용 계산 - 상세
CategoryTypeRegionCountUnit PriceTotal Cost
compute ec2ap-northeast-36 $88.77 $88.77.
compute ec2ap-northeast-36 $19.86 $119.16
compute lambdaap-northeast-31 $24.75 $24.75
containers ecrap-northeast-32 $3.00 $6.00
containersecstaskap-northeast-31 $0.00 $0.00
networkingapigatewayap-northeast-31 $4.25 $4.25
networking elb ap-northeast-32 $23.58 $47.16
networkingnatgatewayap-northeast-31 $51.46 $51.46
storage ebsap-northeast-36 $3.60 $21.60
storage s3 ap-northeast-31 $8.63 $8.63
Amazon MQRabbit MQap-northeast-31
databasedynamodbap-northeast-31 $6.10 $6.10
databaseelasticacheap-northeast-33 $18.98 $56.94
database rds ap-northeast-31 $18.98 $18.98
75

6.6.2 인프라 예상 비용 - Computer
EC2
Instance TypePurpose CostAmountTotal Cost
T3.small
(vCPU2, RAM 2GB)ECS Cluster Instance$19.86 /m 5 $99.28 /m
T2.large
(vCPU2, RAM 2GB)
Dev Server
(Jeknins, Grafana)$88.77 /m 1 $88.77 /m
Lambda
ArchitecturePurposeMemoryRequest
/Month
실행
시간
Total Cost
x86_64
Show,
Log API 128MB 3천만 300ms$24.75 /m
76

6.6.3 인프라 예상 비용 - Network &
RabbitMQ
Elastic Load Balancer
TypeLCUsNew
Conn/S
Active
Conn/M
Processe
d bytes/H
AmountTotal
Cost
Application1 25 3000 1GB 2 $47.16 /m
NAT Gateway
Data Processed / MonthAmountTotal Cost
100 GB 1 $51.46 /m
Amazon MQ(Rabbit MQ)
ArchitecturePurposeMemoryReques
t
/Month
실행
시간
Total Cost
x86_64Show, Log API128MB3천만 300ms$24.75 /m
77

6.6.4 인프라 예상 비용 - DB
MySQL
RoleEngineInstance
Type
Deployment
Option
Billing
Option
Total
Cost
PrimaryMysqlt3.mirco Single-AZ On-Demand$18.98 /m
DynamoDB
Table ClassCapacity
Mode
DataSetRead
Units
Write
Units
Total Cost
StandardProvisioned10GB 5 5 $6.10 /m
ElastiCache
EngineInstance
Type
Instance
Number
Billing OptionTotal Cost
Redis t3.mirco 3 On-Demand$56.94 /m
78

6.6.5 인프라 예상 비용 - Storage
EBS
Volume TypeStorageIOPSSnapsho
t
AmountTotal Cost
gp2 30GB100 / 30000GB 6 $21.60 /m
DynamoDB
Volume TypeStorageIOPSSnapshotAmountTotal Cost
gp2 30GB100 / 30000GB 6 $21.60 /m
DynamoDB
Volume TypeStorageIOPSSnapshotAmountTotal Cost
gp2 30GB100 / 30000GB 6 $21.60 /m
79

7. Load Test
엠퀴즈 시스템 부하 테스트 보고서

테스트 목적


●컨테이너 하나당 한계치 측정
○CPU (0.9 vCPU) / RAM (0.9 GB)

●시간당 최대 765,000명이 동시에 사용가능하도록 인프라 구축

테스트 진행

●임계치에 도달했을 시 복구시간 측정

80

전제 조건 1

아래의 조건을 충족하는 것을 전제로 함

➔활동하는 HOST회원 수는 10000명
➔1시간에 활동하는 HOST회원 수는 1000명
➔HOST 1회 활동 당 CLIENT 회원 수는 50명
➔활동 중인 HOST는 일일 10회 서비스 사용
➔활동 중인 사용자는 시간당 3회 서비스 사용
➔서비스를 사용할 때 마다 퀴즈Play 1회
➔서비스 시작 1개월 후 가정
➔위와 같은 접속은 1일 중 한개의 시간대에 집중. 트래픽이 많을
때 일시적으로 5배의 요청 발생

전제 조건 2

전제 조건으로 산출한 초기 데이터

➔user 테이블: 10000 레코드
➔show 테이블: 50,000 레코드(users x 5)
➔log 테이블 : 900,000 레코드(users x 3 x 30)

를 더미 데이터로 미리 생성해 둔다.
81

목푯값

API Throughput 900rps 이상으로
API 평균 Latency는 100ms 이하
임계치 도달 시스템 복구 시간 1분 미만

시스템 구성


사용자 시나리오로 1사용자 약 3요청/시간
위 조건을 1시간 동안 실시
➔Host : 1,000 X 3 X 17(req) = 51,000(req/h)
➔Client : 3000 X 50 X 12(req) = 600,000(req/h)
➔Host + Client = 1,851,000(req/h)
위 접속의 5배가 피크 때 발생
➔1,851,000 X 5 = 9,255,000(req/h)
82

테스트 시나리오

➔우측의 시나리오를 Locust로 실행

➔Host수(반복횟수 )
1000,2500,5000 단위로 스케일 업

➔스케일 업 도중 서버 과부하 시
컨테이너 2개 증가

➔컨테이너 8개 도달 후 최종 목표
달성 못할 시 1000 혹은 500 단위로
증감을 통해해 최적 컨테이너 수량 도출

시스템 성능 평가

➔시스템이 평균치의 3배까지의 충분한 확장 성능을 보유한 것을
확인했다
➔목표인 900rps, 100ms를 만족하기 위해서는 아래 구성으로
불충분하며 , 이 때 약 600rps가 되어 3배까지 안정적으로
처리되는 것을 확인했다 .
➔3배 이상의 요청일 경우 안정적인 처리를 위해 클러스터
확장이 필요하다 .

Play 서버 : 0.9vCPU, RAM 0.9 GB * 8개
Redis : t3.mirco * 3개
Rabbit MQ : t3.mirco * 1개
Lambda : Managed by AWS
83

t3 계열 인스턴스 주의 사항

➔t3 계열 인스턴스는 CPU 크레딧이 소진되면 급격하게 성능이
저하된다 .
➔예상을 넘는 부하가 장시간 지속되면 CPU 크레딧이 전부
소진뢷 가능능성이 있다.
➔따라서 t3 계열 인스턴스에서 운용할 경우 CPU 크레딧을
모니터링해야 한다.
➔부족할 경우 스케일 업으로 해결할 수 있다.
Locust 테스트 예시1 - Request


84

Locust 테스트 예시2 - Response


Locust 테스트 예시3 - Failures


85

Locust 테스트 예시4 - Exceptions


Locust 테스트 예시5 - Total rps


86

Locust 테스트 예시6 - Response Time


Locust 테스트 예시7 - User Number


87

8. SWOT 분석
- 과정 중 프로젝트 마무리에 앞서 엠퀴즈 서비스의 강점/약점/기회/위협을
분석했습니다.
Strength(강점)
- 시간당 459,000명 까지의 성능 부하 테스트를 통한 동시 안정적 접속 가능
- 실시간 양방향 퀴즈 플레이 제공
- 실시간 모니터링을 통한 이슈 관리
- AWS 클라우드 네이티브 기반 Twelve Factor 기반 앱 개발 방법 중 8가지 준수
1.코드베이스
2.의존성 명시
3.설정 분리
4.Back-End 서비스
5.빌드, 출시 및 배포
6.프로세스(Stateless)
Weakness(약점)
- SNS(네이버, 구글 등) 로그인 기능 부재
- 검색 기능 부재
- 프로젝트 인원, 시간 부족
88

Opportunity(기회)
- 새로운 기술에 대한 공부 및 도전으로 약점 보완 및 기능 확장의 유연성
- 게이미케이션 ‘공부도, 업무도 게임 같이 즐거우면 좋을 텐데’라는 생각에서 나온 것으로 엠퀴즈는
게이미케이션 기반으로 즐겁게 퀴즈를 풀이 하며 자연스럽게 지식 습득 가능
- 엠퀴즈는 아주작은(Micro) + 학습(Learning)의 결합인 마이크로러닝 학습법
1.짧은 시간 내에 학습 가능
2.다양한 기기로 학습 가능
3.학습자가 원하는 내용을 자기주도적으로 학습 가능
=>‘교육부’에서 적극 지원. 사업 가능성 존재
Threat(위협)
- 기존 운영 중인 퀴즈게임 서비스 존재
89
Tags