[SPRING] 뉴스피드 만들기 팀프로젝트 회고

림민지·2025년 4월 14일

Today I Learn

목록 보기
45/62

일주일간의 너무 짧은 기본 프로젝트가 끝났다ㅠㅠ

겪었던 트러블 슈팅과 더불어, 그동안 느꼈던 어려움이나 개선할 점에 대해 남겨보고자 한다.

🔧 트러블슈팅

1. 로그인 필터 예외(GlobalExceptionHandler)

🤔 문제 상황
Spring Boot 프로젝트에서 @RestControllerAdvice를 활용한 GlobalExceptionHandler를 사용 중이었음.
@Controller, @RestController에서 발생하는 예외는 잘 처리되지만,
로그인 필터(Filter) 내에서 발생한 예외는 GlobalExceptionHandler에서 처리되지 않고 그대로 터져버림.

💡 해결 방법
Filter 내부에서 예외를 직접 핸들링하고, 예외 상황에 맞는 JSON 응답을 직접 작성하는 방식으로 해결.

2. Git에서 브랜치 병합 시 충돌(Conflict) 발생 후 IntelliJ로 해결한 과정

문제 상황

  • dev 브랜치에 다른 브랜치(feature/login 등)를 머지하는 과정에서 merge conflict가 발생.
  • 충돌이 발생한 파일은 두 브랜치에서 동일한 코드의 서로 다른 수정이 있었음.
    원인 분석
    Git은 자동으로 병합할 수 없는 경우, 해당 파일을 conflicted 상태로 두고 수동 해결을 요청함.
    충돌이 난 파일에는 다음과 같은 Conflict 마커가 생김:
<<<<<<< HEAD
기존 dev 브랜치 코드
=======
feature/login 브랜치에서 수정한 코드
>>>>>>> feature/login

이 상태에서는 Git이 어떤 코드를 선택해야 할지 판단할 수 없어서 사용자가 직접 선택/수정해야 함.

충돌 발생 후 IntelliJ 알림창 확인
상단에 "Merge Conflicts" 팝업 또는 Version Control 탭에서 충돌 파일 표시됨.

  • "Merge" 클릭하여 비교/병합 UI 열기
    좌측: 현재 브랜치(dev)
    우측: 병합할 브랜치(feature/login)
    중간: 최종 병합될 결과
  • 양쪽 변경사항 비교 후 직접 선택
    Accept Left, Accept Right, Accept Both, Manual Edit 등을 사용하여 충돌 해소
  • 모든 충돌 해결 후 Save → 완료
    Git 창에서 Mark as resolved 버튼 클릭
  • 마지막으로 Commit 또는 Continue Merge 클릭하여 병합 완료

⚡️ KEEP

1. 팀원들과의 소통
: 이번 프로젝트에서 소통이 잘됐던 것 같다
아침 저녁으로 스크럼을 진행해서 서로의 진행상황을 잘 공유할 수 있었고 어려움도 나눌 수 있었다
2. 매일 꼭 이룰 수 있는 작은 목표를 세우는 것
: 작은 목표를 달성하고 나면, 그 나머지 목표들도 가열차게 진행할 수 있었다. 다음 프로젝트에서도 꼭 작은 목표를 설계해야겠다

🔮 TRY

1. JWT를 사용해서 사용자 정보를 다루자!
2. Task를 나눠서 작업해보자
: 팀원끼리 할 일을 서로 쉽게 공유하고, 일을 더 효율적으로 진행하기 위해 공유된 페이지에서 Task를 작성한 후 프로젝트에 들어갔다면 더 효율적인 프로젝트가 됐을 것 같아 아쉬웠다., 다음엔 꼭 테스크를 정리할것!
3. 내가 선생님인 것처럼 공부하자
: 팀원에게 내가 구현한 기술에 대해 설명할 때, 많이 배우고 실력이 느는 것을 체감했다. 다음에 공부할때도 누군가에게 설명한다고 생각하고 공부하자!

⚠️PROBLEM

1. session으로만 구현하고 JWT를 사용해보지 못한 것
: 아직 세션을 다루는 것도 어렵다고 생각해서 세션만을 사용해서 구현했다.ㅜㅜ
2. 팀원 간의 일 분배가 어려웠던 점
: 팀원마다 이해한 정도나 속도가 다르니 할 일을 분배하는데에 있어서 어려움이 있었다

profile
@lim_128

0개의 댓글