11:00 ~ 12:00 최종 프로젝트 발제
드디어 최종프로젝트가 시작되었다.
이날을 위해 여태껏 배워온 과정들을 토대로 팀원들과 협의하여 취업에 대한 포트폴리오를 만들어볼 기회가 생겼다!!
발제가 끝나고 팀원들과 회의를 주기적으로 해서 팀내 규칙을 정해놓고 바로 노션에서 채워나가야 하는 것을 채워놓고, 튜터님과의 커피 챗 이라는 노션 페이지가 있길래 작성하고 팀원 모두가 담당 튜터님에게 찾아갔다.
찾아가고 튜터님과 상의하고, 한 팀원마다 어디 출신 학과인지, 어떤 프로젝트를 해보았는지를 얘기해보고, 이제 본론으로 들어가서 주제에 대해 토론을 해보았다.



주제는 코딩 테스트 웹사이트 로 정해졌다.
튜터님 입장에서는 컴파일러 까지 직접 코드로 구현해야 한다는것은 거의 불가능, 튜터님 본인에게 짜보라고 해도 못할 것같다는 반응이셨다. 그만큼 외부API를 가져와서 쓰는 방식으로 해야 프로젝트가 의미 있게 될것 이다 라는 반응이 컸다. 그래서 시장조사 완전히 되면 다시 한번 찾아와 달라고 하셨다.
🔍 시장 조사
컴파일러 관련해서 점수 어떻게 채점을 해야할지 찾아보게 되었다.
judge0
judge0라는 외부 API 프로그램을 발견하였다.
- get 으로 소스코드랑 언어 정보만 보내주면 response 로 메서드 리턴값이랑 표준출력 등등 메타데이터들 반환함
- 보통 코딩 테스트 제출하면 파라미터를 여러 개 넣어서 채점함
- API에 보낼 소스 코드에 이 파리미터들을 넣어서 실행해주는 코드도 자동으로 생성해서 넣어줘야 API 요청수 줄일 수 있음
- 파라미터 별로 solution 메서드 실행 시간 측정하는 코드도 삽입
- self-hosted 방법에 대해 조사해보자
도커
- https://velog.io/@fasongsong/코딩-테스트-채점-서버-만들기
- https://98qkrckdals.tistory.com/29
- https://98qkrckdals.tistory.com/30?category=1155968
Judge0 API, Sphere Engine API 등 외부 API는 비용적인 부담이 존재
- 솔루션 번호, 소스코드, 언어 분류 받음.
- 솔루션 번호로 DB에서 테스트 케이스, 기댓값 받아옴
- 자바 단에서 각 언어에 맞는 확장자 파일명으로 생성 및 명령어 조립
- 도커로 컴파일
- 자바 단에서 검증 후 결괏값 보내기
여러 가지 고민을 거쳐왔다.

그래서 실제로 서버를 테스트 해서 검증을 해본 팀원이 있어서 기술적인 검증이 되어서 이것을 토대로 바로 API 기능별로 초안을 작성 해보았다.
💡 API 기능별 초안, 역할분담
역할 분담은 인프라(1), 기능별(5) 로 구분하였다.
- 플랫폼 : 웹
- 인프라 : CI/CD, AWS, SSH, 클라우드 플레어, 캡차
- 회원가입 / 인증 / 인가
- OAuth
- 깃허브
- 구글
- Self
- JWT
- Security (admin, gosu, user)
- OAuth
- 유저
- 관리자
- 문제 승인
- 신고 확인
- 대회 등록
- 공지 작성
- 레벨 (티어)
- 문제풀면 레벨 오르게
- 크레딧 같은거 지급(플랫폼 활성화) → 추가 기능 제공
- 마이페이지 (통계)
- https://leetcode.com/u/Jatinv30/ 참고
- 문제 난이도별
- 프로필 (사진, 깃허브, 블로그, 소개, 학력 등)
- 배지
- 커뮤니티 활동 (작성한 게시글 조회수, 댓글, 문제 기여 등)
- 사용한 언어 비율
- 보낸 채팅, 작성한 게시글 조회
- 관리자
코딩테스트
- Judge0 사용
- 채점
- 정답이면 커밋 & 푸시 자동
- AI 코드리뷰
- 오답노트
- 제출 기록
- 생성, 조회만
랭킹
- 누적 랭킹
- 일주일 랭킹
문제
- 문제별 해답 (커뮤니티)
- https://leetcode.com/problems/not-boring-movies/solutions/ 참고
- 게시글, 댓글, 조회수, 추천, 비추천, 프로그래밍 언어 태그
- 게시글에 이미지 첨부 가능
- 추천 기능
- 기본적으로 추천순으로 정렬
- 문제 등록 (특정 점수 이상의 유저만? 관리자가 권한 부여? 테스트 케이스 필수 추가)
- 조회, 수정, 삭제
- 문제 추천 (추천 알고리즘 짜실 분?) ? ??
- 문제 신고?
- 뉴비 전용 빈칸 채우기 문제 (객관식이던 주관식이던)
스터디
- 그룹 채팅 (유저 정보에 티어 박아두기)
- 오픈카톡방 자동으로 만들어주기? (가능하면?)
- 코드 협업..? (노션같이 할 수 있으려나요?)
- 알고리즘 대회 (학교, 기업)
- 이벤트성
알림
- 커뮤니티
- 댓글 달림, 추천 알림
- 관리자
- 문제 승인 요청 알림
- 사용자 신고 알림 ( ++ )
- 이벤트 알림
- 알림 (접속 일정 기간 이상 안 하면)
- 메일 발송 (일주일 리포트 결과물? 코딩 분석? 본인 인증)
- 듀오링고처럼
- 이메일 등으로 알림
- Rabbit Mq
📅 ERD

ERD는 막상 해보니 엄청난 규모의 엔티티가 작성되었다...... 👀👀
최종 프로젝트라서 그런지 프로젝트의 규모가 역대급이고, 엔티티가 굉장히 많이 들어가게 되었다. 아직까진 수정해볼 필요가 있지만, 많은 기능들이 들어간것 같다. ERD 초안을 그대로 들고가서 튜터님 한테 2차적으로 찾아가 보았다.
기술 검증이 되었으니 바로 API, ERD까지 오게 되서 바로 S.A피드백을 받아보았다.
생각보다 잘못되고 고쳐야할점이 많았다.
- 데이터 타입이 자바기준인지 DB기준인지가 명확하지 않음
- 필드명이 형용사 처럼 쓰여져있다던지 ( created_by ➡ creator )
- report가 상태를 표시할때 status로 하는게 좋지 않겠나??
- 입출력 예시 테스트 케이스,
- 카운트 컬럼 필요성 X
등등 고쳐나가야할 부분이 많았다.
튜터님은 여기서 가장 강조하셨던거는 사용자가 문제를 풀수 있다는 전제가 되어야 한다는점을 강조하셨다 !!
우리가 처음부터 기능을 고도화 시켜서 작업을 하다보니까 이렇게 많은 시간이 소요가 되었다라는 이제와서 의문이 들었다....
🌈 와이어 프레임

와이어프레임은 어차피 코딩에 대해 관심이 있을만한 사용자라면 누구나 다 예측할만한 UI를 쉽게 예상해볼 수 있다.
팀원 중 한분이 와이어프레임 작성을 거의 전문가 수준으로 빠른 시간내에 작성해주셨다. 그래서 다들 좋다고 평을 받는 느낌이 들어서 와이어프레임에 관해서는 거의 프리패스 느낌이었다.
첫날부터 굉장히 힘이 빠지는 날이다.. 이렇게 힘들었던 것이었나. 다들 많이 지쳐있던 하루였다. 🐱🐱
'[내일배움캠프-Sparta] > Spring 6기' 카테고리의 다른 글
| TIL 67 [ Spring 최종 프로젝트 ( Day 3 ) - S.A피드백 , API명세서, Jira ] (0) | 2025.05.29 |
|---|---|
| TIL 66 [ Spring 최종 프로젝트 ( Day 2 ) - ERD설계, 컨벤션/규칙, 4-Layer 아키텍처 ] (0) | 2025.05.28 |
| TIL 64 [ Spring 실전 프로젝트 ( D-Day ) - 발표/마무리, 트러블 슈팅 ] (0) | 2025.05.26 |
| TIL 63 [ Spring 실전 프로젝트 ( Day 6 ) - 코드리뷰, 발표자료, 대본작성 ] (0) | 2025.05.23 |
| TIL 62 [ Spring 실전 프로젝트 ( Day 5 ) - Cache 적용 ] (0) | 2025.05.22 |