1. 프로젝트 계획
1.1. 요구사항 분석 🟢
1.1.1. 기존 시스템 분석 ✅
https://url.kr/8gf2yt
1.1.2. 기존 서비스 피드백 ✅
- 꼬리에 꼬리를 무는 질문이였으면 좋겠다.
- 면접 질문이 언제 끝나는지 모르겠다.
- 첫 면접 질문이 너무 뻔하다.
- 면접 평가가 쓸모 없다.
- 자소서를 내기 싫거나, 자소서 자체가 없다.
- ChatGPT Call은 그 자체로 느리다.
- 면접 종료 후에 모범 답안, 연관된 질문이 나왔으면 좋겠다
- 인성 질문만 따로 대비할 수는 없냐
1.2. 범위 정의 🟢
1.2.1. 프로젝트 목표 설정 ✅
- IT 기출 면접 키워드로만 구성해서 면접 질문의 퀄리티를 더 높이자.
- 그리고 자료들을 제공하여, 사용자들이 자료를 따로 찾아야 하는 번거로움을 줄이자.
- ChatGPT는 면접 질문 데이터 생성과 연관 질문 생성에만 사용하여 의존도를 줄이자.
- 대규모 트래픽을 감당할 수 있는 서비스를 만들자. (돈이 허용되는 범위 내에서)
1.2.2. 프로젝트 제약 사항 ✅
개인이 클라우드에 배포할 예정이므로, 클라우드 비용이 월 3만원은 넘지 않아야 합니다.
STT/TTS는 면접 1회당 비용이 200원이었으므로 개인이 감당하기엔 비쌉니다. 그래서 해당 기능은 제거합니다.
ChatGPT 역시 비용이 발생하므로 하루 당 비용을 계산해서, 제한을 둬야 합니다.
1.3. 기능 정의 🟢
IT 기출 면접 질문 ✅
- 사용자는 IT 기출 면접 질문 리스트를 조회할 수 있다. 이 때, 질문 리스트는 키워드 별로 분류된다. (조회용 게시판 느낌)
- 사용자는 면접 질문 리스트 중, 하나를 클릭하면 면접 질문을 조회할 수 있다.
- 사용자는 조회한 면접 질문에서 키워드를 확인할 수 있다. (db, network,... 등등)
- 사용자는 조회한 면접 질문에서 모범 답안을 확인할 수 있다. (검수된 모범 답안)
- 사용자는 조회한 면접 질문에서 나올 수 있는 꼬리 질문을 확인할 수 있다. (Accordian UI)
- 사용자는 조회한 면접 질문에서 문제가 있는 부분을 수정 요청할 수 있다.
- 관리자는 기출 면접 질문을 추가할 수 있다.
- 관리자는 문제가 있는 면접 질문을 수정할 수 있다.
IT 기출 키워드 면접 연습 ✅
- 사용자는 선택 화면에서 셀렉트 박스로 키워드를 선택할 수 있다. (Ex: db, network..., random) 만약 랜덤이면 말 그대로 랜덤 키워드다. 선택이 끝나면, 면접 화면으로 이동한다.
- 사용자는 면접 화면에서 면접 질문과 제출 텍스트 에어리어를 확인할 수 있다. 제출 버튼을 클릭하면 답변이 제출된다.
- 사용자는 남은 질문 개수를 확인할 수 있다.
- 사용자는 면접이 끝나고나서, 평가 화면으로 이동한다. 평가 화면에서 출제됬던 질문 내용과 모범 답안, 자신의 답변을 확인할 수 있다. 그리고 LLM이 생성한 연관 질문도 확인할 수 있다.
인성 질문 연습 + 인성 질문에 대한 답변 첨삭 ✅
- 사용자는 자신이 인성 면접을 보고 싶은 회사를 셀렉트 박스로 선택할 수 있다.
- 사용자는 면접 화면에서 면접 질문과 제출 텍스트 에어리어를 확인할 수 있다. 제출 버튼을 클릭하면 답변이 제출된다.
- 사용자는 남은 인성 질문 개수를 확인할 수 있다.
- 사용자는 면접이 끝나고 나서, 평가화면으로 이동한다. 회사 정보, 출제됬던 인성질문, 답변 첨삭한 내용을 확인할 수 있다. (LLM이 생성함)
마이 페이지 ✅
- 사용자는 구글 OAuth로 로그인/로그아웃 할 수 있다. (카카오 OAuth는 사용자 UX를 해치므로, 더욱 간편한 구글 OAuth 선택)
- 사용자는 자신이 연습했던 면접 질문과 답변을 확인할 수 있다.
- 사용자는 면접 키워드 별로 얼마나 학습했는지 확인할 수 있다.
- 사용자는 면접 질문 별로 학습했었음을 체크할 수 있다. 학습이 체크된 질문들은 면접 연습에서 제외된다.
- 사용자는 GUEST로도 참여할 수 있다. 단, 마이페이지는 불가능.
1.4. 일정 계획 수립 🟢
- 전반 설계, 기출 데이터 구축 (2023.12)
- 오라클 클라우드 구성, CI / CD 구축 (2024.01 중반까지)
- 백엔드 서버 개발 (2024.01 후반 ~ 2024.03 초반)
2. 설계 단계
2.1. 사용자 인터페이스 설계 🟢
사용자 인터페이스는 되도록이면 기존 모뷰 프론트엔드를 재활용합니다.
2.1.1. UI 설계 ✅
대문 (기존 모뷰 재활용)

기출 질문 조회

기출 질문 상세 조회

키워드 선택

면접 연습

면접 평가

2.2. 데이터베이스 설계 🟢
https://url.kr/yl5vta
2.3. 프롬프트 설계와 데이터 구축 🟢
기출 데이터 구축을 위한 프롬프트 설계입니다.
https://url.kr/u1wko7
2.4. 시스템 아키텍쳐 설계
2.4.1. 시퀀스 다이어그램 ✅
https://url.kr/jsqazc
2.4.2. API 엔드포인트 설계 ✅
https://url.kr/jsqazc
2.5. 보안 및 권한 설계 🟢
2.5.1. Admin과 일반 유저의 권한 설정 ✅
- 관리자만 기출 면접 질문을 추가할 수 있다.
- 관리자만 기출 면접 질문을 수정할 수 있다.
3. 개발 + 테스트 단계
3.1. 데이터베이스
3.1.1. 면접 질문 CSV 파일 DB로 이관
3.2. 백엔드 서버 개발
3.2.1. 서버 프레임워크 결정 ✅
https://url.kr/8gf2yt
3.2.2. 환경 설정
3.2.3. 코드 스타일 정의 ✅
자바 코드 스타일 가이드 : Google Java Style Guide
3.2.4. 브랜치 전략 정의 ✅
개인 프로젝트이므로 제일 간결한 전략인 GitHub Branch를 사용합니다.

3.2.5. 커밋 메시지 타입 ✅
feat : 새로운 기능 추가
fix : 버그 수정
docs : 문서 수정
style : 코드 formatting, 세미콜론(;) 누락, 코드 변경이 없는 경우
refactor : 코드 리팩터링
test : 테스트 코드, 리팩터링 테스트 코드 추가(프로덕션 코드 변경 X)
chore : 빌드 업무 수정, 패키지 매니저 수정(프로덕션 코드 변경 X)
design : CSS 등 사용자 UI 디자인 변경
comment : 필요한 주석 추가 및 변경
rename : 파일 혹은 폴더명을 수정하거나 옮기는 작업만인 경우
remove : 파일을 삭제하는 작업만 수행한 경우
!BREAKING CHANGE : 커다란 API 변경의 경우
!HOTFIX : 급하게 치명적인 버그를 고쳐야 하는 경우
3.2.6. 패키지 구조
3.2.7. 비즈니스 로직 구현 및 예외 처리
3.3. 프론트엔드(UI/UX) 개발
3.4. 테스트 케이스 작성
3.4.1. 단위 테스트 작성 및 코드 커버리지 확인
3.4.2. 통합 테스트
3.4.3. 성능 테스트
5. 배포
5.1. 시스템 환경 구성
5.1.1. 호스팅 환경 선택 및 설정 ✅
https://url.kr/qjx16v
5.1.2. 데이터베이스 서버 설정 ✅
https://url.kr/qjx16v
5.1.3. 웹 서버 설정
5.2. 소프트웨어 배포
5.2.1. CI/CD ✅
https://url.kr/qjx16v
5.2.2. 배포 전략 ✅
https://url.kr/qjx16v
5.2.3. 설정 파일 및 환경 변수 구성
local, prod 따로 프로파일을 구성해야 합니다.
WBS의 장단점
WBS(Work Breakdown Structure) 사용의 장점:
계획 수립 및 추적 용이성: WBS를 사용하면 프로젝트의 전체 범위를 계층적으로 분해하여 이해하기 쉽게 만들 수 있습니다. 이를 통해 계획을 수립하고 추적하는 데 용이성이 높아집니다.
프로젝트 투명성: 팀원들은 WBS를 통해 프로젝트의 구조와 범위를 명확하게 파악할 수 있으며, 이로써 투명성이 높아져 팀 간의 의사소통이 원활해집니다.
자원 할당 및 일정 관리: WBS를 사용하면 각 작업의 일정과 자원 요구사항을 쉽게 파악할 수 있습니다. 이를 통해 효과적인 자원 할당과 일정 관리가 가능해집니다.
위험 관리: WBS는 프로젝트의 작업을 세분화하여 각 작업의 위험을 식별하고 추적하는 데 도움을 줍니다. 이를 통해 위험을 미리 예측하고 대비할 수 있습니다.
WBS 사용의 단점 및 주의할 점:
과도한 세부 분해: 너무 세부적으로 분해된 WBS는 오히려 관리의 어려움을 초래할 수 있습니다. 적절한 수준에서의 분해가 필요합니다.
동적 환경 대응의 한계: WBS는 초기에 프로젝트를 계획할 때 사용하기에 적합하지만, 프로젝트가 진행되면서 요구사항이 변할 때 동적으로 대응하기 어려울 수 있습니다.
일정 및 자원 관리의 한계: WBS는 작업을 세분화하여 나타내기는 하지만, 실제로 일정과 자원을 관리하는 데에는 전용 도구가 필요할 수 있습니다.
초기 비용 및 시간 소모: WBS를 작성하는 데에는 초기 비용과 시간이 소모될 수 있습니다. 특히 작은 규모의 프로젝트에서는 이 비용이 상대적으로 크게 느껴질 수 있습니다.
WBS 사용 이유
=> 재설계 프로젝트 초기 단계이며, 작업의 구조와 범위를 명확하게 파악할 수 있고 빼먹은 것은 없는 지 확인하기 편해서 사용합니다.
또한 일정이 급박하지 않기 때문에 WBS 작성 시간이 충분합니다.
참고 링크(WBS란?)
https://salaryblues.tistory.com/3