Title : 여행 여정을 기록과 관리하는 SNS 서비스 2단계

 2단계 토이프로젝트는 한 달 전 팀원들과 동일하게, 비슷한 주제로 Spring을 가지고 진행했다. 1단계 서비스와 비슷한 요구사항을 가지고 특징은 API를 설계하고 개발하는 것이 중요하다고 생각했다. 워낙 팀원분들이 잘 하시는 분들이여서.. 이번에도 배운다는 마인드로 임했다. 1단계에서는 여정 부분을 개발했다. 2단계에서도 역할을 나누기 위해 랜덤으로 역할을 정하고 나는 여정 부분을 맡게 되었다.

 

 

 

개발 일정

 

[토이프로젝트 개발 일정 (5일)]

 

 

 개발 일정은 위 사진과 같이 동일하게 진행했다. 첫 날에는 API 설계 및 ERD 설계를 진행하고 팀원 역할을 배정했다.

나머지 일정도 위 계획표와 비슷하게 동일했다.

 

API 설계 (여행, 여정)

 

[API 설계, 여행]

 

[API 설계, 여정]

 

 

 API 설계는 위에 사진과 같이 진행했다. 1단계와 비슷한 내용이기에 빠르게 작성했고 여기서 배운 것은 URL에 복수를 사용하기, 계층형 구조를 사용하기를 배웠다.

 

 

ERD, 클래스 다이어그램

 

[ERD 다이어그램]

 

 ERD 다이어그램은 위 사진과 같이 설정했다. 이번 프로젝트에서는 JPA의 Embedded 를 사용했다. 그렇기에 여정에 필드가 많아지기는 했지만 요구사항에는 제한되지 않았다. 

 

 

[클래스 다이어그램]

 

 클래스 다이어그램에서의 특징은 여정을 구성하는 체류 , 이동, 숙소 정보 모두 시간과 장소를 가지는 특징을 가졌다. 그렇기에 팀원분들끼리 상의한 결과 PlaceInfo(장소 명을 표기), DataTimeScheduleInfo(시작, 종료 시간을 표기) 를 사용하기로 했다. 이유는 장소의 경우 현재 요구사항은 장소명(String)만 표기하고 있다. 추후에 만약에 장소에 관한 필드(장소 명, 도로명주소, 우편번호 ..)가 추가될 경우 편리하게 유리하게 수정하기 위해서 장소만 관리하는, 장소를 책임지는 하나의 클래스를 여정클래스에서 분리하여 사용했다.

 

Git, Code 컨벤션

 

 

[Git 브랜치 전략]

 

[Commit 컨벤션]

 

 이번 프로젝트는 깃, 커밋, 코드 컨벤션을 사전에 정하고 프로젝트 내에서의 코드, 구조를 최대한 통일하려고 노력했다.

 git flow를 사용했으며 커밋 메세지도 쉽게 확인할 수 있게 컨벤션을 사용했다. 추가로 git issue 주도 개발을 진행했다. 사용할 기능에 대한 Issue를 미리 만들고 개발을 진행하는, 커밋 메세지에 git Issue를 링크하는 재밌었던 경험을 했다.

 

개발 사항 및 프로젝트 느낀점

 

 이번 프로젝트에서 여정 부분을 개발했다. 기본적으로 사용한 기능들은 ResponseEntity로 응답 값을 가공해서 반환했으며 DDD 구조, Controller, Service, Repository 3계층 구조를 사용했다. 추가적으로 모든 조가 JPA를 프로젝트에 적용했는데 나는 아직 공부를 게으르게 해서 JPA를 잘 사용하지 못했다. 다음 프로젝트 기간 전까지 JPA와 시큐리티를 완벽하게 공부할 필요를 뼈저리게 느꼈다. 이번 프로젝트 역시 버스를 탔다. 팀원분들에게 눈치가 많이 보이지만 다들 엄청 잘하시는 분들이여서 정말 나 없이도 프로젝트가 돌아갈 정도다. 얼른 열심히해서 팀원분들 처럼 실력을 키우고 나도 프로젝트를 캐리하고싶다.