본문 바로가기
게임서버-스파르타코딩NodeJs_7기/CH6 최종 프로젝트

MVP 중간발표 회고록

by GREEN나무 2025. 3. 3.
728x90

🎯 MVP 중간발표 회고록

 

💡 수료 후, 이력서에 우리가 만들어낸 내용을 꼼꼼하게 채워넣어야겠죠?
우리 프로젝트의 강점을 잘 녹여내기 위해 회고록 양식을 공유드립니다.
프로젝트와 회고록을 기반으로 다음 주 멘토님들께서 순회할 예정이니,
새롭게 추가/개선할 기능이나 수정 방향성에 대해 깊이 고민할 기회가 되길 바랍니다. 😊


🏆 3주차까지의 후기 및 소감

📢 중간 발표 이전 기재

📌 MVP 중간발표 자료

1️⃣ 프로젝트 정보

  • 서비스명: 핑토피아
  • 서비스 기획 의도: 사용자의 위치 추적 기능을 활용한 웹 페이지 제작
  • 프로젝트 한 줄 설명: 위치 기반의 수집형 웹 게임
  • 최종 MVP 스펙:
  • 서비스 배포 URL: X
  • 팀 노션 URL: 핑크군단

2️⃣ 기술적 의사결정 & 트러블슈팅 기록

📌 프로젝트 진행 중 직면한 문제 및 해결 과정 (스택별 정리)

💡 Token 전략

  • 도입 이유: Refresh Token과 Access Token의 보안 강화
  • 문제 상황:
    • Refresh Token과 Access Token을 모두 header에 담아 클라이언트 localStorage에 저장하면 XSS 공격에 취약
  • 해결 방안:
    1. Refresh Token → http-only cookie에 저장
    2. Access Token → header에 담아 전송
  • 의견 조율:
    • Access Token에는 최소한의 유저 정보만 포함 (예: sub: email → db id 변경)
  • 결정 사항:
    • Access Token → 유저의 db id 값을 subject로 설정하고, 권한(user, guest)을 claim으로 포함
    • Refresh Token → 유저 정보 없이 http-only cookie에 저장

💡 Valkey 도입

  • 이유: Redis의 라이선스 변경으로 인해 대부분 기능을 계승한 Valkey 출시
  • 특징:
    • Redis와 99% 동일한 기능 제공
    • 빠른 전파와 높은 확장성을 고려하여 팀원들과 협의 후 도입 결정

💡 Socket.io 사용

  • 이유:
    • WebSocket 기반 라이브러리로 강력한 기능 제공
    • 지도에서 핑크몽 위치 표시 및 사용자의 위치 전송(10초 간격)

💡 NestJS 사용

  • 이유:
    • Node.js 기반 백엔드 프레임워크로 모듈 단위 기능 분리가 가능
    • 유지보수 용이하며 TypeScript 지원으로 코드 안정성 향상

💡 Geolocation 활용

  • 이유:
    • 사용자의 위도/경도를 기반으로 위치 정보를 제공 (예: 포켓몬GO)
  • 문제 상황:
    • 사용자가 위치 권한 차단 시 "User denied Geolocation" 오류 발생
  • 해결 방안:
    1. 브라우저 위치 권한 차단 여부 확인
    2. 설정에서 위치 권한 허용
      • Chrome: chrome://settings/content/location 에서 설정 가능

💡 카카오맵 API 도입

  • 이유:
    • 한국 내 지도 데이터 최적화
    • 무료 API 호출 횟수가 타 맵 API보다 많음
    • 길찾기 기능이 다른 맵 API보다 우수
  • 문제 상황:
    • localhost:3000에서는 정상 작동하나 테스트용 EC2 서버에서 카카오맵 API 로드 불가
  • 해결 방안:
    • localhost는 개발용으로 특별 취급되어 도메인 없이 연결 가능하지만,
    • 실제 배포 환경에서는 https 연결 필요 → SSL 인증서 적용 후 해결

💡 AWS S3 사용

  • 이유:
    • 이미지 저장 기술 중 AWS 서비스와의 통합성이 높아 확장성이 뛰어남

💡 TossPayments 적용

  • 이유:
    • 결제 시스템 적용이 용이하며, 다른 결제 기능과 연동 가능

📢 중간 발표 이후 기재

📝 3️⃣ 중간발표 피드백 기록

대면 피드백을 기록하고 개선할 사항을 반영합시다.

1️⃣ 텍스트 오류 수정 필요

  • 몰입도를 깨는 부자연스러운 텍스트 존재 (예: 별젤 리, 젤리박 스 등)
  • 해결 방안: 프론트엔드에서 빠르게 텍스트 수정

2️⃣ 몬스터 위치 데이터 처리 로직 개선 필요

  • 모든 몬스터 데이터를 가져와 사용자의 위치와 비교하는 방식 → 비효율적
  • 해결 방안:
    • GEOADD 활용하여 데이터 접근 방식 변경

3️⃣ Valkey vs. 엘라스틱캐시 고민

  • 현재 Valkey를 Docker로 사용 중
  • AWS ElastiCache도 고려할 필요 있음
  • 결정 사항:
    • 이번 프로젝트는 소규모 개발이므로 복잡한 AWS 설정보다 로직 개발에 집중하는 것이 효율적

4️⃣ 남은 기간 동안 추가할 기능

  • 스트레스 테스트 및 분산 처리 진행 필요

🔍 4️⃣ 중간 발표 후 회고

⛔ 미구현된 MVP 기능

추후 진행 예정

  • Toss 결제 기능 적용
  • ELK 스택 대신 Sentry 도입
  • 업적 기능 개선 (버그 수정 및 연결 필요)

🔧 추가/개선할 기능 및 이유

  • GEOADD 활용한 데이터 접근 방식 개선
  • 모바일 UI 최적화
  • 부자연스러운 텍스트 수정
  • 좌표 기반 길찾기 기능 개선 (위도/경도 표기 → 주소 변환)

🚀 5️⃣ 앞으로의 계획 및 우선순위

🔢 ✅ 진행 현황 📌 작업 내용 📅 마감 예정일

1 진행 테스트 코드 작성 3/4, 3/10
2 MVP Valkey를 GEOADD로 수정 3/7
3 MVP Toss 결제 기능 추가 3/9
4 MVP UI 개선 3/7
5 개선 길찾기 기능 개선 3/7
6 개선 업적 완료 감지 및 수정 3/8
7 진행 서버 부하 테스트 3/9

🎯 6️⃣ 앞으로 해야 할 일 (4주차)

📢 팀 전체 (리더 및 부리더가 정리)
개인별 작업 분배

  • GEOADD 적용 (Valkey 수정) - 유재은, 윤예원
  • Toss 결제 기능 추가 - 오혜성
  • 프론트 UI 수정 - 강나연
  • Sentry 도입 - 박찬우
  • 서버 부하 테스트 - 이경민, 김지웅

🔥 남은 기간 동안 최선을 다해 마무리합시다! 💪🚀