Skip to content

v1.2.0

Choose a tag to compare

@kwaksj329 kwaksj329 released this 06 Feb 08:08
· 36 commits to main since this release

📙 4주차 데모 URL

NOTION LINK

🚀 New Features

그림 부정행위 처리

  • OpenAI API(gpt-4o)를 통합하여 그림 내 부정행위(문자 포함 여부) 검증 기능을 추가하였습니다. (#26)

🔧 Improvements

도움말 모달 관련 개선 사항

  • 터치패드에서 더 부드럽게 페이지 넘김 할 수 있도록 스크롤 거리 단축 (100 > 50)
  • Lottie Player dotlottie-react로 통일하여 번들 용량 축소
  • .lottie 파일 메모리 캐시하여 두 번째 호출을 더 빠르게 하도록 개선 (#17)

캔버스 API 곡선 시스템 적용

  • 문제: 기존 Canvas API의 lineTo() 방식은 선이 각져서 자연스러운 드로잉이 어려워 UX가 감소했습니다.
  • 해결: 점들 사이의 중간점을 계산해 연속성이 보장된 곡선을 생성했습니다. (#13)

Prometheus 모니터링 기능 제거

애플리케이션의 성능 및 상태 모니터링을 NCP Cloud Insight로 전환하였습니다.

Redis 어댑터 설정 추가

  • 문제: 기본 Socket.IO 어댑터 대신 Redis를 사용하여 여러 컨테이너에서 연결을 공유해야 했습니다.
  • 해결: @socket.io/redis-adapter 패키지를 추가하고, Redis를 사용하는 사용자 정의 어댑터(RedisIoAdapter)를 구현하여 서버 간의 연결을 관리할 수 있도록 설정했습니다. (#22)

서버 컨테이너 이중화 구성

  • 문제 : 단일 서버 컨테이너로 인한 요청 처리 지연이 있었습니다.
  • 해결 :
    • 서버 컨테이너를 2개로 구성하고 Nginx를 통한 로드 밸런싱을 구현했습니다.
    • API 요청은 least_conn 방식으로, 웹소켓 연결은 ip_hash 방식으로 부하를 분산하도록 설정했습니다.

라이트하우스 자동화

  • 문제: 웹 성능 최적화 과정에서 반복적인 수동 라이트하우스 측정으로 인해 개발 생산성이 저하되었고 자동화된 성능 지표 모니터링 시스템이 없어 성능 저하 이슈를 조기에 발견하지 못하는 문제가 발생했습니다.
  • 해결: CLI 명령어를 통해 각 페이지의 라이트하우스 성능 측정 결과를 콘솔에서 바로 확인할 수 있도록 프로세스를 자동화했고 PR이 생성될 때마다 성능 지표가 자동으로 코멘트되도록 설정했습니다. (#18)

🐛 Bug Fixes

도움말 모달 애니메이션 버그 해결

  • setTimeout으로 재생 컨트롤 하는 로직을 제거하여 페이지 렌더링 직후 도움말 모달 활성화 시 애니메이션이 멈추는 버그 해결 (#17)

Redis 키 구조 오류

  • 문제 : 잘못된 Redis 키 구조로 인해 플레이어 조회에 실패하는 문제가 발생했습니다.
  • 해결 : room:${roomId}:player:${playerId}room:${roomId}:players:${playerId}로 수정하여 해결했습니다. (#16)

비동기 처리 누락

  • 문제 : Redis 조회 시 비동기 처리가 누락되어 런타임 에러가 발생하는 문제가 있었습니다.
  • 해결 : handleConnection 메소드를 async/await 패턴으로 변경하여 해결했습니다. (#16)

예외 처리 미작동

  • 문제 : WsExceptionFilter에서 handleConnection 메소드의 예외가 포착되지 않는 문제가 있었습니다.
  • 해결 : 예외 처리 방식을 throw에서 클라이언트 에러 이벤트 emit 방식으로 변경하여 해결했습니다. (#16)

퀴즈 단어 관리 방식 개선

  • 문제 : 모든 방에서 동일한 단어 리스트를 공유하고 있어, 각 방에서 독립적인 단어 관리가 불가능했습니다.
  • 해결 :
    • 각 방마다 독립적인 단어 리스트를 관리하도록 변경했습니다.
    • 클래스 수준에서 words 저장 방식을 제거하고, Redis를 이용한 관리 방식으로 전환했습니다. (#26)

📝 Additional Notes

미사용 파일 삭제

  • canvas 폴더의 미사용(과거 개발용 테스트 모듈) 파일 삭제
  • asset>lottie>help 폴더의 json 애니메이션 파일 삭제 (#17)

📝 Full Changelog

Full Changelog: v1.1.0...v1.2.0