현재 진행 중인 게임의 한시간, 오늘, 일주일 등의 게임 픽률과 밴픽률, 그리고 오늘과 일주일동안의 챔피온의 승률을 볼 수 있는 DASHBOARD.
- 인기게임 League of Regend 의 데이터를 활용하여 현재 게임을 플레이하고 있는 게임 유저의 정보를 반영하여 게임에 대한 이해도를 향상시켜 원활한 게임 진행 가능.
- DataBase
- Cloud DB For Redis (Redis 4.0.2)
- ElasticSearch 6.6.0
- Message Queue
- Rabbit Mq 3.7.0
- Web
- CentoOs 7.3 64Bit
- JDK 1.8
- TomCat
- Vue.js 3.1.0
- Vuetify 2.0.11
- Api
- Riot Games Api
-
아키텍처
- 간트차트
-
개발 진행 순서.
-
아키텍처 설계 (2019.08.05 - 2019.08.08)
-
InGame Data Producer (2019.08.08 - 2019.08.12)
- Producer에 Exchange와 InGaeme Queue Binding 설정.
- 30초마다 스케줄링으로 Riot Games에 InGame Data 요청.
- 요청 받은 Json Data 를 InGame Queue 삽입.
- InGame Data Consumer (2019.08.09 - 2019.08.13)
- Producer가 보낸 보낸 데이터를 모델에 받아 챔피온의 픽률과 밴픽률을 Redis Server에 {게임모드-시간}{날짜} 키에 tuple(pickchampionId, score: 1) 값으로 set 데이터에 저장.
-
MQ 테스트 (2019.09.09 - 2019.09.13)
-
Web Server 개발 (2019.09.13 - 2019.09.18)
- Redis에 저장된 데이터를 불러와 사용자가 요청할 때 데이터를 보냄. -> Redis Publish Subscribe를 활용하여 Redis에 데이터가 갱신될때마다 각 기능에 맞는 데이터를 Redis에 저장.
- Finished Game Data Producer 개발 (2019.08.19 – 2019.08.21)
- 매시 정각 마다 Redis에 저장되어진 진행이 되어진 Game Id에서 해당 게임의 결과를 확인하고, 게임이 종료되었으면 호출된 결과를 Exchange 에 전달.
- Finished Game Data Consumer 개발 (2019.08.19 – 2019.08.21)
- Producer가 보낸 데이터를 모델에 받아 ElasticSearch에 해당 데이터를 저장.
- 웹 서버 추가 개발(승률 기능 추가) (2019.08.20 – 2019.08.27)
-
사용자가 승률 데이터를 요청 시 ElasticSearch에 검색 쿼리를 날려 챔피온들의 승률 데이터를 가져옴.
-
Redis에서 사용자 SessionId를 관리하여 SessionId가 있고, Redis에 데이터가 갱신될때마다 사용자들에게 게임픽률과 밴픽률 데이터를 BroadCasting으로 전달.
-
초기 사용자 접속시 사용자의 Session을 Redis에 저장하고 게임픽률과 밴픽률 데이터 전부를 클라이언트에 전달.
- 버그 테스트 (2019.08.26 – 2019.08.28)
-
다른 사용자가 동시 접속시 UI 변동 현상 점검.
-
SessionId가 존재하지 않을 시 BroadCasting이 되지않아야하는 동작 점검.
-
HTTP 요청을 보냈을 때 오류 발생 시 사용자에게 Error Page를 보여주도록 조치. (WebSocket 연결이 끈겼거나, HTTP 요청이 제대로 실행되지 않았을때)
- 코드 수정 (2019.08.26 – 2019.08.28)
-
Producer, Consumer, WebServer에 각 기능별로 log를 남겨서 날짜별로 log 파일 처리.
-
각 기능 별로 Service 분할.
- 발표 준비 (2019.08.29 – 2019.08.29)
- PPt 제작.
UI 그림
- UI 게임 챔피온 픽률
- UI 게임 챔피온 밴픽률
- UI 게임 챔피온 승률
- 데이터 없음
- 에러 메세지