패스트캠퍼스 백엔드 7기 부트캠프_토이 프로젝트 1, 2

강서진·2024년 2월 8일

토이 프로젝트는 1, 2, 3단계로 진행되는 형태로, 최종 구현 목표는 "여행 여정을 기록하고 관리하는 SNS 서비스" 이다.

토이 프로젝트 1

첫번째 토이 프로젝트는 크리스마스를 끼고 진행되었다.

  1. 여행의 여정 정보를 기록하고 조회하는 Java 애플리케이션 개발
  2. 개별 여행은 복수의 여정 정보로 구성 (여행:여정 = 1:n)
  3. 여정 정보에는 이동(출발지, 도착지, 출발시각, 도착시각)과 숙박(체크인, 체크아웃) 등의 유형이 있음
  4. 여행 정보와 특정 여행 정보의 여정 목록은 데이터 저장 경로에 JSON 파일 형태로 저장

이 4가지 요구사항을 구현하여 Java 애플리케이션을 개발하는 것이 목표였다. 12/22일 금요일에 RFP가 제공되어, 26일 화요일부터 12월 29일 금요일까지 총 5일간 진행되었다.

팀원 총 5명 중 서울에서 만날 수 있는 4명은 만나서 오프라인으로 작업하기로 했고, 지역이 다른 한 명은 온라인으로 참여하기로 하였으나 개인 사정으로 인해 프로젝트는 총 4명이 작업하였다.

Java version: 17
사용 API: Jackson
빌드: Gradle
IDE: IntelliJ

view는 콘솔로 구현하였으며, 크게 여행 입력 기능과 여행 조회 기능으로 나누어 작업하였다. GitHub 플로우를 사용하여 dev 브랜치를 두고, feature 브랜치를 각각 파서 기능이 완성되면 dev에 merge하는 방식으로 진행하였다.

  • 여행 기록 입력(JSON 파일로 저장)
  • 여정 기록 입력(여행 객체 안에 리스트로 저장, JSON으로 저장)
  • 여행 기록 조회
  • 여정 기록 조회(가지고 있는 전체 JSON 조회 -> travelId 받아 일치하는 여행의 여정 반환)

토이 프로젝트 2

토이 프로젝트 2단계는 따로 view를 구현하지 않고, Spring을 사용해 RESTful API를 구현하였다. 추가로, DB를 사용하기 때문에 여행 정보 및 특정 여행 정보의 여정 목록을 저장하기 위한 ERD도 설계해야 했다.

인원 변경이 있어서 조 편성도 약간 변경되었다. 기존의 5명 중 1명이 다른 조로 이동하여 4명이 작업하였고, 이번에는 팀원들 간 지역이 달라져서 온라인으로 진행하였다.

Java version: 17
사용 API: Jackson, Lombok, MyBatis, HikariCP, Postman
빌드: Gradle
IDE: IntelliJ

토이 프로젝트 1단계와는 저장하는 데이터 형태가 달라져서 이에 맞춰 새로 참조관계와 ERD를 작성하였다.

여행 : 여정 = 1:n

  • 여행정보: 여행의 이름, 일정(출발 날짜, 도착 날짜), 국내/외 여부
  • 여정 정보:
    - 이동 (이동 수단, 출발지(장소명), 도착지(장소명), 출발 일시, 도착 일시)
    - 숙박 (숙소명, 체크인 일시, 체크아웃 일시)
    - 체류 (장소명, 도착 일시, 출발 일시)

CRUD 기능을 구현하는 데에 중점을 두고, 각자 하나씩 기능을 맡기로 하였다. 나는 입력 기능과 추후 예외처리를 담당하였다.

테스트와 문서화는 Postman으로 작성하였다.

멘토분께 받은 피드백:

  • 기능별로 Controller를 작성하면 이후 코드가 기능이 확장될 수록 유지보수가 힘들어지므로, 객체(ex: travel, trip) 단위로 작성할 것
  • 중복되는 코드는 따로 분리하여 관리할 것(ex: response Entity 를 build하는 메서드)

회고:

  • 프로젝트 초기화 전 문서화 작업이 부실 ▶ 다음 프로젝트 때는 GitHub의 Project를 사용하여 issue 뿐만 아니라 칸반보드도 적용해보기
  • 상황 공유가 느려 후반에 시간 촉박 ▶ 오류가 발생하거나 하여 진행이 막히거나 하면 최대한 빨리 상황을 공유하기

0개의 댓글