- 프로젝트명: CloneNOVA
- 진행일자: 2025.10.13 - 2025.11.01
- 예상 구현 시간
- 필수기능: 3 weeks
-
Java Spring 기반의 웹 애플리케이션 개발
-
Restful HTTP 통신기반 서버 개발
-
MVC 패턴을 활용한 구조 설계 및 구현 (Domain 향 첨가)
Member (Controller - Service - Repository) Auth (Controller - Service - Repository) Ranking(Controller - Service - Repository) ... -
데이터베이스 연동 및 CRUD 기능 구현
-
OAuth, PortOne(결제 API) 실습을 통해서 익히기
-
Redis 사용 방법 익히기
-
협업 능력 익히기
-
Jenkins를 통한 CI 파이프라인 설계
-
GitOps + ArgoCD를 통한 무중단 CD
-
CQRS 도입을 통한 데이터 트래픽 분산
- Database: MySQL, Redis, JPA
- Backend: Java 17, Eclipse/IntelliJ
- Frontend: Next.js, React, PandaCSS, (BFF)
- etc: Spring Security, Jwt, Cookie/Session
- 찐 CodeNova
| 번호 | 요구사항명 | 요구사항 상세 | 우선순위 |
|---|---|---|---|
| AF01 | 회원 가입 | 회원 정보를 등록하는 기능 | 필수 |
| AF02 | ID/PW 회원 로그인 | ID/PW를 이용한 회원 로그인을 지원하는 기능 | 필수 |
| AF03 | 아이디 찾기 신청 | SMTP를 이용하여 회원의 아이디를 찾는 기능 | 필수 |
| AF04 | 아이디 찾기 인증 | SMTP를 통해 받은 코드를 인증하는 기능 | 필수 |
| AF05 | 구글 로그인 | 구글 OAuth를 이용한 로그인 기능 | 필수 |
| AF06 | 카카오 로그인 | 카카오 OAuth를 이용한 로그인 기능 | 선택 |
| AF07 | 엑세스 토큰 재발급 | 엑세스 토큰 만료 시 재발급 해주는 기능 | 선택 |
| AF08 | 비밀번호 재설정 신청 | 회원 비밀번호 분실 시 재설정 신청 기능 | 선택 |
| AF09 | 비밀번호 재설정 인증 | 회원 비밀번호 분실 시 재설정 인증 기능 | 선택 |
| AF10 | 신규 회원 2FA 등록 | 신규 가입 시 Google Authentication 등록하는 기능 | 선택 |
| AF11 | 2FA 인증 | 2FA 코드 인증 기능 | 선택 |
주요 기능:
- 가입/로그인/아이디 찾기 기능
- Google OAuth, ID/PW 로그인을 통한 회원 인증 다각화
- Google, Kakako 등 연동 기능
- SMTP를 이용한 아이디 찾기 신청/인증 기능
- (선택) 엑세스 토큰 만료 시 리프레시 토큰을 이용한 재발급 기능
- (선택) KaKao OAuth 추가를 통한 인증 수단 추가
- (선택) SMTP를 이용한 비밀번호 재설정
- (선택) Google Authentication을 이용한 2FA 전략 추가
| 번호 | 요구사항명 | 요구사항 상세 | 우선순위 |
|---|---|---|---|
| MF01 | 회원 개인 프로필 정보 조회 | 회원 본인에 대한 정보를 조회하는 기능 | 필수 |
| MF02 | 회원 개인 정보 업데이트 | 회원에 대한 정보를 업데이트 기능 | 필수 |
| MF03 | 회원 삭제(탈퇴) | 회원 정보를 삭제하는 기능 (삭제 대신 '비활성화'로 상태변경) | 필수 |
주요 기능:
- 회원 개인 정보 조회/업데이트
- 회원 개인 게임 정보 조회
- 회원 삭제(탈퇴) 기능
- 로그인 / 로그아웃 기능
| 번호 | 요구사항명 | 요구사항 상세 | 우선순위 |
|---|---|---|---|
| SF01 | 상품 목록 조회 | 상점 내 상품에 대한 정보 조회 | 필수 |
| SF02 | 특정 상품 상세 조회 | 특정 상품에 대한 구체적인 정보 조회 | 필수 |
주요 기능:
- 상품에 대한 목록을 조회
- 특정 상품에 대한 구체적인 정보를 조회
| 번호 | 요구사항명 | 요구사항 상세 | 우선순위 |
|---|---|---|---|
| PF01 | 결제 준비 (주문 생성) | 포트원 API를 이용한 결제 준비 신청 기능 | 필수 |
| PF02 | 결제 완료 및 검증 (재화 지급) | 포트원 API를 이용한 결제 이후 완료 후 재화 지급까지 진행하는 기능 | 필수 |
| PF03 | 포트원 웹훅 수신 | 포트원 API로 부터 오는 재 검증 웹훅을 수신하는 기능 | 필수 |
| PF04 | 회원 본인 구매 내역 조회 | 회원 본인의 구매 내역을 조회하는 기능 | 필수 |
| PF05 | 회원 본인 구매 내역 상세 조회 | 특정 구매 내역에 대한 세부적인 내용 조회하는 기능 | 필수 |
| PF06 | 환불 요청 | 구매한 재화에 대해서 환불 신청하는 기능 | 필수 |
| PF07 | 회원 본인 환불 내역 조회 | 회원이 환불한 내역을 조회하는 기능 | 필수 |
| PF08 | 환불 가능 여부 확인 | 특정 구매에 대한 환불이 가능한지 확인하는 기능 | 필수 |
| PF09 | 환불 처리(관리자) | 관리자 권한을 이용한 환불 완전 처리 기능 | 선택 |
| PF10 | 결제 내역 조회(관리자) | 관리자 권한을 이용한 특정 회원에 대한 결제 내역 조회기능 | 선택 |
| PF11 | 결제 실패 | 서버에러, 잔액부족 등 알림창으로 알려주는 기능 | 필수 |
주요 기능:
- 결제/환불에 대한 기능
- 구매 내역에 대한 조회 기능
- (선택) 관리자 권한을 통한 특정 사용자 결제 내역 조회
- (선택) 관리자 권한을 이용한 환불 최종 처리 프로세스를 통한 분기 구분
| 번호 | 요구사항명 | 요구사항 상세 | 우선순위 |
|---|---|---|---|
| WF01 | 보유 재화 조회 | 회원이 현재 보유하고 있는 재화의 수량 및 종류를 조회하는 기능 | 필수 |
| WF02 | 재화 거래 내역 조회 | 재화의 획득, 사용, 환불 등 시간 순에 따른 모든 거래 기록을 조회하는 기능 | 필수 |
| WF03 | 재화 거래 내용 검색 필터링 | 회원이 거래한 내역을 필터링(날짜, 금액)하여 검색하는 기능 | 선택 |
주요 기능:
- 회원의 보유한 재화 및 재화 거래 내역 조회 기능
| 번호 | 요구사항명 | 요구사항 상세 | 우선순위 |
|---|---|---|---|
| GF01 | 게임 결과 저장 | 게임 플레이 후 최종 점수, 시간, 승패 등 결과를 데이터베이스에 저장하는 기능 | 필수 |
| GF02 | 각 게임 별 랭킹 조회 | 전체 회원을 대상으로 특정 게임의 점수/기록 순으로 상위 랭킹 목록을 조회하는 기능 | 필수 |
| GF03 | 본인 점수에 따른 랭킹 조회 | 로그인한 회원 본인의 점수를 기준으로 전후 일정 범위의 랭킹을 조회하는 기능 | 필수 |
| GF04 | 회원 개인 게임 정보 조회 | 회원 본인에 대한 게임 통계 정보를 조회하는 기능 | 필수 |
| GF05 | 특정 회원 게임 정보 조회 | 특정 회원이 참여한 게임 목록과 각 게임에서의 최고 랭킹 및 기록을 조회하는 기능 | 필수 |
주요 기능:
- 게임 결과 저장 및 그에 따른 랭킹 작성
- 회원 개인의 랭킹 등수 확인
- 전체 랭킹 확인
- 특정 회원 랭킹 등수 확인
| 번호 | 요구사항명 | 요구사항 상세 | 우선순위 |
|---|---|---|---|
| FF01 | 회원 팔로잉 정보 조회 | 회원 본인에 대한 팔로잉 정보를 조회하는 기능 | 필수 |
| FF02 | 회원 팔로워 정보 조회 | 회원 본인에 대한 팔로워 정보를 조회하는 기능 | 필수 |
| FF03 | 회원 검색 | 회원 이름 기반 검색 | 필수 |
| FF04 | 회원 팔로잉 추가 | 타 회원을 팔로잉 목록에 추가하는 기능 | 필수 |
| FF05 | 회원 팔로잉 삭제 | 회원 본인이 추가한 팔로잉을 삭제하는 기능 | 필수 |
| FF06 | 회원 정보 조회 | 타 회원의 정보를 보는 기능 | 선택 |
| FF07 | 회원 검색 필터 다각화 | 회원 검색 필터 다양화 | 선택 |
주요 기능:
- 회원 팔로잉/팔로워 정보 조회
- 회원 이름 기반 검색 기능
- 회원 팔로잉 추가/삭제
- (선택) 타 회원 개인/게임 정보 조회
- (선택) 회원 검색 기능 필터 추가
Client (Browser)
↓ (1) HTTP 요청 (GET/POST/PUT/DELETE)
DTO (Data Transport Object)
↓ (2)
Controller
↓ (3) 요청 파라미터 추출 및 비즈니스 로직 호출
Service
↓ (4) 비즈니스 로직 전달 시 Vo 반환
Vo
↓ (5) 구현체에 Vo 전달
Repository (MySQL)
↓ (6) 구현체 내부 JPA를 이용한 데이터 저장/조회 (Entity 자체로 추출 X)
JPA
-
요구사항 확인 및 정리
- 팀원과 같이 요구사항(기본/추가/심화)을 확인하고, 할 일을 정리
- Markdown 문법을 이용하여 기능 정리
- Use Case Diagram 작성
-
데이터베이스 설계
- ERD (Entity Relationship Diagram) 작성
- 테이블 구조 설계 및 DDL 작성
- MySQL Workbench를 활용한 데이터베이스 구축
-
MVC 패턴 구현
- Model: DTO/VO 클래스 작성, DAO 클래스 및 JDBC 연결 구현
- Controller: Servlet 클래스 작성 (doGet, doPost 메서드 구현)
- View: JSP 페이지 작성, EL/JSTL을 활용한 데이터 표현
-
기능 구현
- 필수 기능 구현 (영상 관리, 리뷰 관리, 회원 관리)
- 추가 기능 구현 (찜 영상, 커뮤니티, 운동계획)
- 심화 기능 구현 (AI 활용 등)
-
추가 아이디어 논의 및 정리
- 팀원과 같이 추가적으로(새로운 아이디어)를 논의하고 정리
-
테스트 및 디버깅
- 기능별 테스트 수행
- 버그 수정 및 예외 처리
-
프로젝트 완성
- 추가적인 아이디어를 적용하여 구현하고 프로젝트를 완성
- 산출물 정리 및 문서화
-
메인화면
- 최근 가장 많이 본 영상 표시
- 검색 기능
-
로그인
- 아이디/비밀번호 입력
- 로그인 버튼
- 회원가입 링크
-
회원가입
- 아이디, 이름, 비밀번호, 비밀번호 확인 입력
- 회원가입 버튼
-
게임화면