[회고] 데브코스 2차 프로젝트 회고
*이 포스팅은 AI가 아닌 수제 포스팅입니다
이번에도~ 3차 프로젝트 시작과 함께 쓰는 2차 프로젝트 회고!
프로그래머스 생성형 AI 백엔드 데브코스를 수강중이고,
1차 프로젝트에 이어
4월 28일~ 5월 13일 약 2주동안 2차 프로젝트를 진행했다.
1차 프로젝트 이후에 데브코스에서는
- Java, Spring Boot, MVC, REST
- Spring Data JPA, MySQL, PostgreSQL
- Spring Security, JWT
- LLM, AI 활용
등 이제 백엔드의 메인 기술들을 배웠다!
2차 프로젝트는 "AI 기반 팀원 매칭 플랫폼"이 주제였고,
지금까지 배운 기술들을 총집합하여 5명의 팀원들이 하나의 프로젝트를
완성해내는 것이 목표였다.
보통 프로젝트를 시작하기 전에 대부분
✅ 1. 적당한 볼륨을 목표로 완성도 있는 서비스를 만들 것인가
2. 새로운 기술을 도입해 큰 볼륨의 서비스에 도전하자
중에 어떤 방향을 선택할 것인가가 가장 큰 고민인 것 같다
우리 팀도 AI 매칭 파트와 관련하여
Spring AI를 활용해서 Vector DB를 구축해 유사도 검색을 할 것인가..
Redis를 사용해야 하는가...
등에 대한 고민을 정말 많이 했었는데!
2주라는 시간,
또 백엔드 인원으로만 구성된 5명 팀이기에
우리는 적당한 볼륨과 기술을 사용하는 대신 > 완성도를 높이자!
로 목표를 정했다.
그렇게 완성한 우리의 프로젝트는~
"팀원 준비 완료! 팀워크가 필요할 땐 TEAMO"
TEAMO는 스터디, 공모전, 해커톤, 사이드 프로젝트와 같은
팀이 필요한 활동에서 팀원을 모집하고,
지원자의 자기소개서를 AI로 분석하여 매칭을 도와주는 서비스이다.
"모집자를 위한 플랫폼" 을 가장 우선 순위로 하되,
모집자 / 지원자 / 일반 유저 모두를 고려한 기능을 설계했다.
유저 | 문제 상황 | 기능 |
모집자 | 지원자가 너무 많음 | 자기소개서를 AI가 요약해줌 |
지원자 선정에 오랜 시간이 걸림 | 지원자의 글, 성향 - 모집자의 글, 성향을 바탕으로 AI로 적합도 점수 및 추천 이유를 제공해 팀원 매칭에 도움을 줌 |
|
지원자 | 카카오톡, 구글 폼 등 다른 플랫폼에서 지원을 해야함 | 모집글을 보고 서비스 내에서 바로 지원 가능 |
매 지원 시 자소서를 작성해야 하는 번거로움 | 자소서를 미리 등록하고, 지원 시 관리 및 선택하여 간편하게 지원 | |
유저 | 타인의 공개된 자기소개서를 보고 참고하고, 리뷰를 남길 수 있음 |
1. 모집/지원
- 기본 CRUD, 댓글/대댓글
- 모집글 페이지에서 지원까지 가능하게 구성
- 기존 등록된 자기소개서를 선택하여 쉽게 지원
2. AI 매칭 분석
- Gemini 모델을 병렬 처리 해서 구성
- LLM Chaining 활용
3. 프로필 및 피어리뷰
- 공개/비공개 프로필 및 이력서 작성 가능
- 프로필 허브를 통해 타인의 공개 프로필을 확인 가능
- 피어 리뷰를 도입해 실제 경험한 리뷰 작성 가능
여기까지 프로젝트에 관한 간단한 소개였고,
KPT 양식에 맞춰 작성하는 나의 회고
KEEP
우선 지난 1차 프로젝트에서 내가 다음에 시도하고자 했던 것은(TRY)
- 설계를 정확히 하고, 문서를 잘 작성하자
- 매일 동행스크럼 및 팀원들끼리 공유하기
- 꾸준히 TIL 쓰기
위의 세 가지였다.
(혹시 지난 1차 프로젝트 회고가 궁금하다면?
지금 와서 돌아보면 나름?! 잘 지킨 것 같다!
1. 설계에 시간을 투자하고, 최대한 자세히 작성한 것
체감상 "어? 이렇게 늦게 개발을 시작해도 되나?" 하는 의문이 들 정도로
기능 명세, DB, 와이어프레임 등의 초반 설계에 시간 투자를 했다.
팀원 전체의 이해 및 동의를 바탕으로 계속해서 질문을 서로 주고 받고,
빠진 파트나, 데이터 전달을 더 명확히 해야하는 부분을 체크했다.
100% 완벽한 설계였다! 라고 말하긴 힘들지만,
개발 단계 중에 기능을 잘못 생각하는 부분이 상대적으로 줄어들었다.
동시에 잘못된 부분이 있어도 빠르게 수정이 가능했다.
또, 설계한 내용들을 문서로 기록해두니
쿼리를 작성할 때나 데이터 사용시 헷갈리는 부분이 있을 때
바로 바로 확인하여 작업할 수 있었다
다시 한 번 설계의 중요성을 느낀 순간이었다!
2. 해보고 싶은 것에 많이 도전한 것
이번 프로젝트를 시작하기 전에 내 스스로 정한 목표가 있었다
- 기본적인 CRUD 및 MVC 패턴을 익힐 것
- 하고 싶은 부분은 적극적으로 시도해볼 것
단순히 수업만 듣는다고 내 것이 되는게 아니라고 느끼기 때문에
빠른 시간동안 많은 파트를 학습하면서 놓친 부분이 많다고 느꼈다.
그래서 완성도를 목표로 하는 프로젝트인 만큼
스스로 기본기를 다시 한 번 학습할 필요가 있다고 생각했고
모집글 CRUD 파트를 자원해서 작업하면서
필수로 알아야되는 기본적인 부분을 직접 구현했다
동시에, 평소에 AWS를 이용한 서버 구축, 배포 자동화를 언젠가 해보고 싶다는 생각이 있었는데,
TEAMO를 통해 경험할 수 있었다!
팀원들도 하고 싶은 부분은 해보세요~하는 열린 마음으로 지원해줘서
부족하지만 어떻게든 배포에 성공했다
원래 새로운 것, 안 해본 것, 어려운 것에 도전해보는 걸 좋아하는 성격인데
요즘엔 시도하고 도전하는 경험이 거의 없었던 거 같다.
2차 프로젝트를 하면서 다시 한 번 성취감을 느낄 수 있었고,
다음 프로젝트 때도 해보고 싶은 건 도전해봐야겠다 하는 마음을 다시 가질 수 있었다
3. TIL 작성
배포를 하면서 크고 작은 이슈들이 많았고,
CRUD 구현을 하면서 내가 잘못 이해하고 있던 부분들은 TIL로 작성했다.
키워드만 작성한 날도 있고, 이슈 해결한 코드 등을 자세하게 쓴 날도 있는 등
들쭉날죽한 TIL이어서 정리가 필요하지만!
기록한 내용을 바탕으로 내가 나중에 어떤 부분을 다시 공부해야 할지 체크할 수 있었다.
동시에 CORS, N+1 문제로 로딩 시간 감소 등 트러블 슈팅 등을 작성하면서
같은 오류가 발생했을 때 TIL을 보면서 빠르게 해결할 수 있었다.
PROBLEM
1. 일정 관리의 미숙함
이번 프로젝트 기간 내에 5월 1일~6일 약 6일 정도 연휴가 있었는데,
우리 팀은 휴식을 기반으로 각자 작업할 수 있는 부분을 하자!였다
연휴를 쉬면서 오히려 수업 시간에 더 집중할 수 있었고,
체력을 쏟지 않는 미래를 생각하는(?) 프로젝트를 할 수 있어서 좋았다
다만 프론트엔드-백엔드를 연결하는 일정을 발표 전 2일 정도에 몰아서 하다보니
해당 파트를 맡은 팀원이 마지막 날 해야하는 일이 많아졌고,
연결 과정에서 이슈가 발생하면 해결하는 시간이 조금 부족했던 거 같다
PM이 없는 백엔드 파트만 모이다 보니 꾸준히 발생할 수 밖에 없는 문제이기에,
다음 프로젝트 때는 미리 계획을 짜고, 여유롭게 일정을 조절하면 더 좋을 듯 하다!
2. 코드 컨벤션을 구체적으로 정하기
프로젝트 초기에 커밋 / PR / 이슈 컨벤션 정도만 정하고,
각자 기능을 하나씩 맡아서 프로젝트를 진행했다.
그러다보니 DTO 네이밍, Service/Impl 구조, 에러 처리 등
코드 스타일이나 폴더 구조가 통일이 안됐다.
기능을 구현하는 것도 중요하지만,
팀 프로젝트에서는 코드의 일관성과 구조적인 통일성도
협업의 핵심이라는 것을 느꼈다.
프로젝트 종료 후에 팀원들과 모여 다시 리팩터링을 진행했고,
처음부터 규칙을 상세히 정하는 것이 코드의 식별이나 일관성에
훨씬! 편리하다는 것을 느꼈다
TRY
1. 기술적으로 좀 더 도전하기!
초기에 AI 매칭의 수치화를 위해
새로 릴리즈된 Spring AI 및 벡터 유사도 검색 도입 방안을 고민했으나
팀원 중에 경험해본 사람이 없었고,
나도 이전 프로젝트에서 도입을 했지만 미숙한 부분이 많았다.
팀원들과 이 부분에 대한 많은 논의를 진행했고,
개발 기간과 기능 요구사항을 고려했을 때 약간의 오버엔지니어링일 수도 있다
라는 결론을 내려 도입하지 않았다.
LLM 기반 요약과 프롬프트 엔지니어링으로 만족할 수 있는 성능을 낼 수 있었으나,
좀 더 정량화된 지표나 미세한 차이에 대한 이유를 제공하기엔 한계가 있었다.
AI 활용을 어느정도로 할 것인지, 우리의 시간과 프로젝트에 맞는 기술은 어떤것인지
실질적인 고민을 하고 기술 도입을 고민하는 과정은 매우 의미있었고,
다음에는 도전을 좀 더 적극적으로 하면서 기술 선택을 해보고 싶다!
2. 코드 리뷰를 적극적으로 활용하기
이번 프로젝트에서 팀원간의 코드 리뷰를 진행하면서 많은 도움을 받을 수 있었다
내가 잘 몰랐던 부분도 리뷰를 통해서 배울 수 있었고,
다른 사람이 내 코드를 읽을 때 어떤 방식으로 작성해야
이해하기 쉬운지 느끼고 반영할 수 있었다.
다음 프로젝트 때도 더 활발한 코드 리뷰 문화를 도입해서
리뷰를 통해 도움을 받는 것 뿐만 아니라
팀원에게 도움을 줄 수 있는 리뷰어가 되고 싶다
3. TDD 도입하기
개발 기간 및 TDD 경험 부족으로 테스트 코드 작성에 충분히 시간을 들이지 못했다.
따라서 매번 Swagger로 테스트를 하고 버그가 생기면 수정하는 과정에서
테스트 코드의 필요성을 느꼈다!
최종 프로젝트 때는 초기 설계부터 테스트 케이스를 정의하고
TDD 기반 개발을 공부하고 도입해보면서
보다 효율적이고 실무에 가까운 개발을 진행하고 싶다
프로젝트를 통해서 지금까지 배운 내용들을 복습할 수 있었고,
내가 앞으로 개발자로 협업할 때
어떤 부분을 고려해야 하는지, 조금 더 신경써야 하는지
공부할 수 있었던 거 같다.
또한 팀원들과 꾸준히 소통하고 모르는 부분을 공유하고
서로 알고 있는 지식을 나누면서
정말 많이 배울 수 있었던 프로젝트였다!
가장 큰 성과는!
데브코스 내 우수 프로젝트에 선정됐다!
사실 정말 기대를 안했는데
아니 사실 생각하지도 못했는데!
우수 프로젝트로 선정되어서 좋았다 🎉
최종 프로젝트 때도 1, 2차 프로젝트 때의 부족한 부분을 보충하고
장점을 유지하면서 만족할 수 있는 결과를 만들고 싶다!
그럼~ 회고 끝
프로젝트에 대한 자세한 정보가 궁금하신 분은
깃허브로 놀러오세요 🍀
🔗 깃허브 링크 : https://github.com/prgrms-aibe-devcourse/AIBE1-Project2-Team03-backend
GitHub - prgrms-aibe-devcourse/AIBE1-Project2-Team03-backend: AIBE1 TEAM03 호식이세마리 | 팀원 준비 완료, 팀워크
AIBE1 TEAM03 호식이세마리 | 팀원 준비 완료, 팀워크가 필요할 땐, TEAMO! - prgrms-aibe-devcourse/AIBE1-Project2-Team03-backend
github.com