La foret rouge
Published on

CampU 기록 #2

Authors
  • avatar
    Name
    신주용

마지막 싸피 프로젝트 회고 - 새로운 시작

자율 프로젝트까지 총 3번의 프로젝트가 끝났다.

SELECT c FROM campsite c;

3번의 프로젝트를 하면서 첫 번째 'DEVoca' 때는 인프라와 팀장을 맡으며 서포터 역할을 했고, 두 번째 'preview'에서는 인공지능 관련 개발을 담당했다. 그래서 이번 프로젝트를 시작하면서 Java와 Spring Boot, JPA를 온전히 써보는 것이 낯선 상태였다. 그래서 간단하게(?) 캠핑장 정보 관련 CRUD, 예약 관리 부분을 맡기로 했다.

SELECT c FROM campsite c ORDER BY c.id ASC;만큼 간단한 것을 생각한 건 아니었지만, 예상은 확실히 빗나갔다. 캠핑장 조회 시에는 지역을 파라미터로 받아서 제한하고(campsite), 내가 좋아요를 눌렀는지 여부를 포함하며(campsite_like), 지도에 표시하기 위해 위경도 좌표를 포함하고(campsite_location), 캠핑장 평균 평점을 포함하며(review), 캠핑장에 등록된 방 중 최저가를 포함하고(room), 파라미터로 받은 숙박 인원을 수용 가능한 방이 하나도 없으면 목록에서 제외하고(room), 파라미터로 받은 숙박 기간에 예약 가능한 방이 하나도 없다면 이번엔 제외가 아니라 예약 마감 처리로 보여줘야 했다(reservation)... 하핳.. 잘못 골랐다 🥲

campsite data

처음에는 캠핑장과 방 테이블 정보를 우선 조합해야 하니 'JPA 두 테이블 Join' 이런 식으로 검색했다. 그렇게 하나, 둘 테이블을 조인하다가 HHH90003004: firstResult/maxResults specified with collection fetch; applying in memory 이런 에러를 마주쳤다. 너무 많은 테이블을 조인하면 그만큼 결과가 커지고, 이는 성능상 큰 문제가 된다. 그래서 필요한 정보를 얻기 위한 쿼리를 몇 개로 쪼개어 서비스 로직에서 조합해서 사용하는 식으로 구현했다.

이번 프로젝트에서 캠핑장 정보 CRUD API를 구현하며 Spring Boot, JPA 등에 어느 정도 익숙해 진 것 같긴 하지만, 기간이 길진 않아 찍먹만 해본 것 같다. 그래도 한 번 해봤으니 조금 더 공부하면 다음에 할 때는 훨씬 수월할 것 같다. 그리고 3번의 프로젝트 모두 안 해본 것에 도전해봤다는 것에 충분히 의의가 있다고 생각한다.

결국 사람들과 하는 일

이번 프로젝트 뿐만 아니라 SSAFY를 하는 1년동안 정말 감사한 사람들이 많다. 팀장을 하는 동안 제 몫을 충분히 해준 든든한 어벤져스 같은 팀원들이 있었고, 그들이 이번 프로젝트에서는 나를 이끌어줘서 익숙하지 않은 분야의 개발도 해낼 수 있었다. 나에게 먼저 다가와 준 친구들도 있었고 다가가서 어울린 친구들도 있었지만, 내가 더 성숙했을 때 만났다면 좋지 않았을까 생각이 드는 사람도 있다. 친구들 뿐만 아니라 도움이 필요할 때 주변엔 든든한 컨설턴트님, 코치님, 교육프로님이 계셨다.

부트캠프라는 것이 지식을 배우는 것도 중요하지만, 사람들과 같이 일하는 방법을 배우는 것이 SSAFY에서 얻어갈 수 있는 가장 큰 것이 아닐까 싶다.

새로운 시작

자율 프로젝트가 끝나자마자 개인적으로 개발을 하나 더 하고 있다. SSAFY 들어올 때 시작했다가 멈춰버린 프로젝트인데, 나의 필요로 시작한 프로젝트라 마무리를 꼭 하고 싶었다. 그런데 이제는 할 수 있을 것 같다는 생각이 강하게 들었다. 짧지도 길지도 않은 1년이지만 확실히 1년 전보다는 더 성장한 것 같다.

6월 한 달동안 새로운 시작을 잘 준비해야겠다.