새벽_나그네
12시 지난 새벽
새벽_나그네
전체 방문자
오늘
어제
  • 분류 전체보기
    • TIL
    • DevLog
    • Algorithm
    • ComputerScience
    • etc

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 개발일지
  • 코린이
  • AI트랙
  • 내일배움카드
  • Selenium 4
  • 국비지원
  • docker
  • til
  • 코딩
  • 프로그래머스
  • 자기주도학습
  • machine learning
  • Python
  • portfolio
  • 코딩프로젝트
  • 내일배움단
  • TodayILearned
  • 스파르타코딩클럽
  • Github
  • 내일배움캠프

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
새벽_나그네

12시 지난 새벽

[WIL] 프리온보딩 세번째 과제 회고록 - 게임듀오
DevLog

[WIL] 프리온보딩 세번째 과제 회고록 - 게임듀오

2022. 7. 19. 23:25

세 번째 과제는 게임 듀오의 과제였습니다.

과제 내용

요구사항은 디테일하게 주어졌으며 게임 회사에 맞게 보스 레이드라는 테마를 가진 상태로 URL에 맞는 API를 제시하여 특별히 고민할 필요가 없이 기획을 할 수 있었습니다.

이번 과제의 역할로는 회원가입과 로그인 로그아웃을 포함하는 api 를 담당하였고 추가적으로 보스 레이드 랭킹 조회를 하는 api를 설계하는 것도 맡게 되었습니다.

 

더보기

  • 라우터 로직
  • 유저생성
    • 중복되지 않는 userId를 생성
    • = 중복 체크 로직이 필요
    • 생성된 userId를 응답
    • = 응답 값에 userId를 넣어줄 것
  • 유저 조회
    • 해당 유저의 보스 레이드 총 점수와 참여기록 응답
  • 보스레이드 상태 조회
    • 보스레이드 현재 상태 응답
      • canEnter : 입장 가능 한지
      • enteredUserId : 현재 진행 중인 유저가 있다면, 해당 유저의 id
    • 입장 가능 조건 : 한 번에 한 명의 유저만 보스 레이드를 진행할 수 있습니다.
      • 아무도 보스레이드를 시작한 기록이 없다면 시작 가능합니다.
      • 시작한 기록이 있다면 마지막으로 시작한 유저가 보스레이드를 종료했거나, 시작한 시간으로부터 레이드 제한시간만큼 경과되었어야 합니다.
  • 보스레이드 시작
    • 레이드 시작 가능하다면 중복되지 않는 riadRecordid를 생성하여 isEntered:true와 함께 응답
    • 레이드 시작이 불가하다면 isEntered:false
  • 보스레이드 종료
    • raidRecordId 종료 처리
      • 레이드 level에 따른 score 반영
    • 유효성 검사
      • 저장된 userId와 raidRecordidId 일치하지 않다면 예외 처리
      • 시작한 시간으로부터 레이드 제한시간이 지났다면 예외 처리
  • 보스레이드 랭킹 조회
    • 보스레이드 totalScore 내림차순으로 랭킹을 조회합니다.

구현

  • 기본적으로 이번 과제의 메인 기능인 보스레이드 상태 조회, 시작, 종료
  • 테스트 케이스 작성
  • lint와 formatting 설정
  • 회원가입 로그인 ( 토큰에 대하여 깊이 있게 학습 )
  • 도커를 이용한 배포
  • Redis를 이용한 동시성 관리

진행 과정

세 번째 과제의 개발환경 세팅은 직접 맡아서 하였는데 두번째 과제를 할때 설정한 내용을 확인하면서 빠르게 구성할 수 있었습니다. 개발환경에 구축에 걸린 시간은 1시간정도가 소요되었습니다. 이 내용에는 lint fomatter와 풀리퀘스트 템플릿 등의 초반 셋팅 일체가 들어갑니다. 

이전 프로젝트에서는 테스트 케이스를 구현하면서 프로젝트 메인 흐름에서는 한 발자국 떨어진 상태에서 팀을 서포트한 듯한 느낌이었다고 한다면 이번에는 api 구성의 큰 축 중 하나인 회원가입, 로그인, 로그아웃과 토큰 그리고 랭킹 조회까지 맡게 되어서 즐겁게 구현할 수 있었습니다.

기본적으로 맡은 업무에 관련된 자료들이 많았기에 초반 틀을 잡아서 다른 팀원이 작업할 수 있는 환경만 구성해놓고 조금 더 심화적으로 학습하였습니다. access token, refresh token 등 토큰에 관한 내용과 이런 토큰 시리얼라이저를 커스텀하는 방법 등 일반적인 것보다 더 깊게 학습하여보았고 여러 작동 방식의 의미 등을 알 수 있었습니다.

특히 신경 써본 부분으로는 로그아웃을 할 때 서버단에서 refresh token을 블랙리스트에 등록하면서 토큰 로그아웃을 시키는 것을 구현하여보았습니다.

배운 점 / 아쉬운 점

로그인과 관련된 기능과 흐름을 배울 수 있었습니다. 토큰을 블랙리스트에 등록하면서 로그아웃 시키는 방법 등을 배웠습니다.

그리고 랭킹 시스템을 할 때 Redis의 작동 방식과 orm을 이용해서 redis에 데이터를 저장해놓고 이를 이용하는 것 그리고 redis queue를 이용해서 동시성을 해결하는 방법 등을 배울 수 있었습니다.

과제를 완료한 소감 😁

일단 3번째 과제라는 것을 잊을 정도로 시간이 너무 빨리 지나가고 있다는 것을 느낍니다. 그 안에서 빠르게 같이 성장하고 있다는 생각도 하게 되었습니다. 처음 길게 진행되었던 회의도 팀이 안정화되면서 빠르게 되고 작업할 시간도 늘어났으며 기본적인 개발환경 세팅 등의 속도도 빨 라지는 등 불필요하다고 생각할 수 있는 업무들이 빠르게 해결되면서 과제의 완성도를 높일 수 있는 시간이 되는 것 같아서 실무에 들어갔을 때 기존에 팀워크를 맞춰서 진행되고 있는 팀이 얼마나 빠르고 효율적으로 업무를 진행할지 기대가 되는 마음이 생기는 한 주였습니다.

그리고 로그인 쪽 파트는 보통 다른 팀원들에게 기회를 주면서 제대로 접해볼 일이 없었는데 담당을 하고 진행해보면서 로그인과 토큰과 이것을 이용한 권한을 공부할 수 있는 시간이어서 개인적으로 뜻깊은 한 주였습니다.

결과물 💾

GIT 저장소

https://github.com/pre-onboarding-3rd-team-H/03_GameDuo_TeamH

 

GitHub - pre-onboarding-3rd-team-H/03_GameDuo_TeamH: 게임듀오 기업과제 레포지토리입니다. 게임의 구조를 알

게임듀오 기업과제 레포지토리입니다. 게임의 구조를 알아보는 프로젝트로 기본적인 로그인 로그아웃 기능 및 레이드의 상태조회, 랭킹조회 기능을 구현하여 특정 게임공간을 여러명의 유저들

github.com

 

과제 설명 노션

https://www.notion.so/8940341de3ca468898d177ad08b683aa

 

게임듀오 과제페이지

📝 업무 분배

www.notion.so

 

저작자표시 비영리 변경금지 (새창열림)

'DevLog' 카테고리의 다른 글

[프로그래머스] SQL 최댓값 구하기  (0) 2022.09.30
[생각] Session, JWT token 항상 jwt가 옳을까?  (1) 2022.09.20
[Docker] 제 3장 Elastic IP이용하여 고정 아이피 설정 하기  (0) 2022.07.19
[Docker] 제 1장 터미널을 이용하여 EC2 접근하기  (0) 2022.07.18
[WIL] 프리온보딩 두번째 과제 회고록 - 페이히어  (0) 2022.07.11
    'DevLog' 카테고리의 다른 글
    • [프로그래머스] SQL 최댓값 구하기
    • [생각] Session, JWT token 항상 jwt가 옳을까?
    • [Docker] 제 3장 Elastic IP이용하여 고정 아이피 설정 하기
    • [Docker] 제 1장 터미널을 이용하여 EC2 접근하기
    새벽_나그네
    새벽_나그네
    IT, 프로그래밍, 정보, 스마트스토어

    티스토리툴바