Cotella WBS

dasd412·2023년 12월 12일
0

cotella

목록 보기
2/9

1. 프로젝트 계획

1.1. 요구사항 분석 🟢

1.1.1. 기존 시스템 분석 ✅

https://url.kr/8gf2yt

1.1.2. 기존 서비스 피드백 ✅

  1. 꼬리에 꼬리를 무는 질문이였으면 좋겠다.
  2. 면접 질문이 언제 끝나는지 모르겠다.
  3. 첫 면접 질문이 너무 뻔하다.
  4. 면접 평가가 쓸모 없다.
  5. 자소서를 내기 싫거나, 자소서 자체가 없다.
  6. ChatGPT Call은 그 자체로 느리다.
  7. 면접 종료 후에 모범 답안, 연관된 질문이 나왔으면 좋겠다
  8. 인성 질문만 따로 대비할 수는 없냐

1.2. 범위 정의 🟢

1.2.1. 프로젝트 목표 설정 ✅

  1. IT 기출 면접 키워드로만 구성해서 면접 질문의 퀄리티를 더 높이자.
  2. 그리고 자료들을 제공하여, 사용자들이 자료를 따로 찾아야 하는 번거로움을 줄이자.
  3. ChatGPT는 면접 질문 데이터 생성과 연관 질문 생성에만 사용하여 의존도를 줄이자.
  4. 대규모 트래픽을 감당할 수 있는 서비스를 만들자. (돈이 허용되는 범위 내에서)

1.2.2. 프로젝트 제약 사항 ✅

개인이 클라우드에 배포할 예정이므로, 클라우드 비용이 월 3만원은 넘지 않아야 합니다.

STT/TTS는 면접 1회당 비용이 200원이었으므로 개인이 감당하기엔 비쌉니다. 그래서 해당 기능은 제거합니다.

ChatGPT 역시 비용이 발생하므로 하루 당 비용을 계산해서, 제한을 둬야 합니다.

1.3. 기능 정의 🟢

IT 기출 면접 질문 ✅

  1. 사용자는 IT 기출 면접 질문 리스트를 조회할 수 있다. 이 때, 질문 리스트는 키워드 별로 분류된다. (조회용 게시판 느낌)
  2. 사용자는 면접 질문 리스트 중, 하나를 클릭하면 면접 질문을 조회할 수 있다.
  3. 사용자는 조회한 면접 질문에서 키워드를 확인할 수 있다. (db, network,... 등등)
  4. 사용자는 조회한 면접 질문에서 모범 답안을 확인할 수 있다. (검수된 모범 답안)
  5. 사용자는 조회한 면접 질문에서 나올 수 있는 꼬리 질문을 확인할 수 있다. (Accordian UI)
  6. 사용자는 조회한 면접 질문에서 문제가 있는 부분을 수정 요청할 수 있다.
  7. 관리자는 기출 면접 질문을 추가할 수 있다.
  8. 관리자는 문제가 있는 면접 질문을 수정할 수 있다.

IT 기출 키워드 면접 연습 ✅

  1. 사용자는 선택 화면에서 셀렉트 박스로 키워드를 선택할 수 있다. (Ex: db, network..., random) 만약 랜덤이면 말 그대로 랜덤 키워드다. 선택이 끝나면, 면접 화면으로 이동한다.
  2. 사용자는 면접 화면에서 면접 질문과 제출 텍스트 에어리어를 확인할 수 있다. 제출 버튼을 클릭하면 답변이 제출된다.
  3. 사용자는 남은 질문 개수를 확인할 수 있다.
  4. 사용자는 면접이 끝나고나서, 평가 화면으로 이동한다. 평가 화면에서 출제됬던 질문 내용과 모범 답안, 자신의 답변을 확인할 수 있다. 그리고 LLM이 생성한 연관 질문도 확인할 수 있다.

인성 질문 연습 + 인성 질문에 대한 답변 첨삭 ✅

  1. 사용자는 자신이 인성 면접을 보고 싶은 회사를 셀렉트 박스로 선택할 수 있다.
  2. 사용자는 면접 화면에서 면접 질문과 제출 텍스트 에어리어를 확인할 수 있다. 제출 버튼을 클릭하면 답변이 제출된다.
  3. 사용자는 남은 인성 질문 개수를 확인할 수 있다.
  4. 사용자는 면접이 끝나고 나서, 평가화면으로 이동한다. 회사 정보, 출제됬던 인성질문, 답변 첨삭한 내용을 확인할 수 있다. (LLM이 생성함)

마이 페이지 ✅

  1. 사용자는 구글 OAuth로 로그인/로그아웃 할 수 있다. (카카오 OAuth는 사용자 UX를 해치므로, 더욱 간편한 구글 OAuth 선택)
  2. 사용자는 자신이 연습했던 면접 질문과 답변을 확인할 수 있다.
  3. 사용자는 면접 키워드 별로 얼마나 학습했는지 확인할 수 있다.
  4. 사용자는 면접 질문 별로 학습했었음을 체크할 수 있다. 학습이 체크된 질문들은 면접 연습에서 제외된다.
  5. 사용자는 GUEST로도 참여할 수 있다. 단, 마이페이지는 불가능.

1.4. 일정 계획 수립 🟢

  1. 전반 설계, 기출 데이터 구축 (2023.12)
  2. 오라클 클라우드 구성, CI / CD 구축 (2024.01 중반까지)
  3. 백엔드 서버 개발 (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과 일반 유저의 권한 설정 ✅

  1. 관리자만 기출 면접 질문을 추가할 수 있다.
  2. 관리자만 기출 면접 질문을 수정할 수 있다.

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

profile
시스템 아키텍쳐 설계에 관심이 많은 백엔드 개발자입니다. (Go/Python/MSA/graphql/Spring)

0개의 댓글