[Pre-Project] 회고
Pre-Project
기간 : 2023.02.13 ~ 2023.03.02
팀 빌딩
코드스테이츠에서 랜덤으로 배정해주었다.
이 과정에서 팀원 이탈이 생겨 1명 적게 배정된 팀도 있었는데, 위기 대처 능력(?) 키우기의 일종으로 보충은 없었다.
Git 사용
당연히 팀 repository를 사용했기 때문에 git 사용이 필수였다.
지금까지 백업의 형태로만 git을 사용했었기 때문에 프로젝트 초기 하루동안은 협업을 위한 git 사용을 익혔다.
잘못하면 팀원들이 작업한 내용이 날아갈 수 있다는 이야기를 들으니 너무 신경이 쓰였는데, 나뿐만이 아니었는지 오후 라이브세션 시간에 질문이 쏟아져 교육엔지니어님께서 1시간 가량 더 수업을 해주셨다.
프로젝트 초기에는 너무 무서워서 push하고 pr할 때마다 부팀장님께 질문 폭탄 날렸는데(진심으로 너무 죄송함), 하다보니 익숙해져서 처음보다는 자유롭게 git을 사용했다.
문서 작성
초반에 요구사항정의서, 테이블 명세서를 작성했는데 프로젝트 중 이 시간이 가장 힘들었다.
요구사항 정의서는 이전 기수분들이 작성한 내용을 참고하면서 작성했는데, 프로젝트를 마무리하고 나니 작성할 때 백엔드 팀원들 간 분석하는 시간이 너무 없었던 것 같아 아쉬움이 남는다.
실제 사이트를 보면서 분석하는 시간이 더 길었다면 결과물도 그렇고 서로 소통하는 부분에 있어서도 더 원활했을 것 같다.
요구사항 정의서가 작성되니 테이블 명세서는 짧은 시간내에 작성할 수 있었다.
회원 / 질문 / 답변 이라는 도메인이 명확해서 업부 분담도 빨랐고, 문서 작성도 각자 작성 후 서로 리뷰해주면서 원활하게 진행되었다.
API 명세서도 처음 작성해보는 것이라 어색함은 있었지만 테이블 명세서를 토대로 금방 작성할 수 있었고, 이 명세서 내용을 토대로 프로트엔드 ↔️ 백엔드가 통신할 수 있다는 것이 신기하고 궁금해졌다.
본격적인 시작
스택오버플로우 클론코딩에서 내가 맡은 파트은 '질문'이었다. 회원은 다른 팀원분이 선택하셨고, 질문/답변 중에서 질문을 선택했는데 내가 생각했던 것 보다 스택오버플로우 사이트에서 질문이 차지하는 부분이 (당연하게도) 매우 컸다.
처음에 작성한 요구사항 정의서 안에서 API 명세서를 작성할 때만 해도 다른 파트에 비해서 조금 더 구현할 기능이 많은 정도였는데 프로젝트를 진행하면서 프론트분들과 기능에 대한 대화를 나눠보니 질문에 연관된 기능들이 내 생각보다 더 많았다.
이 부분 때문에 회의할 때 작은 토론이 있었는데 돌이켜보니 스택오버플로우 사이트에 대한 내 분석이 너무 작고 안일했었던 게 문제였던 것 같다. 죄송했습니다 팀원분들...🥲
기능 구현
질문에 대한 기본적인 CRUD 기능을 구현하였고 추가적으로는 조회수, 투표, 태그 기능을 구현했다.
시작할 때, 질문 상세 페이지를 기준으로 잡고 구현을 했는데 그러면서 스택오버플로우 사이트의 다양한 정렬/필터 기능을 놓친게 아쉽다.
2주가 짧지 않다고 생각했는데 막상 구현하다보니 매우 짦은 시간이었다.
그래도 조회수 기능을 구현하면서 http 쿠키를 Spring Boot 에서 어떻게 사용할 수 있는지 알았고, 태그 기능을 구현하면서 다대다 관계 매핑과 어떻게 API 응답을 보내야 프론트에서 사용할 수 있는지 배울 수 있었다.
투표 기능은 회원 쪽 검증이 빠지면서 반만 기능이 구현된 것이 아쉽다. 원래는 질문 ID 값과 회원 ID 값을 모두 검증하여 구현되었어야 하는데 회원 ID가 빠지면서 하나의 질문에 하나의 투표만 등록할 수 있는 기능이 되었다.
트러블 슈팅
CORS 에러 말고는 기억에 남는 에러는 없다.
controller 클래스마다 어노테이션을 붙여서 CORS를 해결했다고 생각했는데, 또 CORS 에러가 발생했다.
프론트 팀원분들이 마지막 배포일부터 에러가 발생한다하여, 수정 내용을 확인해보니 Security 추가 부분에서 설정이 부족한 것 같았다.
그래서 security configuration에 filter 부분을 조금 수정하여 문제를 해결할 수 있었다.
(ref: https://velog.io/@sunil1369/Error-Spring-Security-Cors-Error)
이 과정을 통해서 Spring Security 공부를 많이 하게 됐다. 프리 프로젝트는 에러를 만나기 위한 프로젝트!
그리고 AWS EC2... 터미널에서 build만 시키면 에러나서 부글부글했는데, 프리티어 CPU 용량이 문제가 아닐까 생각한다.
모니터링 보고있으면 CPU가 pull 상태에서 EC2 접속 막혔다가 가만히 기다리면 스스로 소강(?) 상태에 접어들면서 접속이 다시 열린다.(ㅋㅋ)
관련 지식이 부족해서 보고만 있어야 하는게 조금 짜증나긴 하는데, 메인 프로젝트 때는 이 부분에 대해서 더 알아가고 싶다.
마무리
팀 모두가 열심히 한 덕분에 프로젝트가 예정보다 일찍 마무리 될 수 있었다. 프로젝트 마무리쯤에 팀장님의 정리도👍
프론트엔드 분들과 협업하는 것이 처음이라서 개인적으로 너무 뜻깊은 시간이었다.
내가 프로젝트 초반에 생각한 기능을 80% 이상 구현했기 때문에 뿌듯하기도 하다.
사실 난 50% 정도만 생각했는데 프론트 팀원분들께서 상세하게 분석해주셔서 30% 더 구현할 수 있었다.
이게 협업을 하는 수많은 이유 중 하나가 아닐까 생각한다.
프로젝트하면서 구현 과정이나 트러블슈팅 관련 포스팅도 하려고 카테고리도 따로 뺐는데 하나도 작성하지 못했다.
그 정도로 바빴던건 아닌데... 아쉽다😭
이제 메인 프로젝트 들어가기 전까지 단 며칠이라도 부족한 부분 채워가야겠다. 화이팅❗