이것저것/부트캠프

[Elice Cloud Track] 쇼핑몰 프로젝트를 마치며

긱북이 2024. 5. 17. 14:06

 

학교와 자격증 등등 바쁜 현생이 계속되고 부트캠프가 지쳐 갈 무렵, 팀 프로젝트가 시작되었다.

엘리스트랙에서 이제까지 진행했던 작은 프로젝트들과는 다르게 제대로 된 '팀 백엔드 프로젝트'였다.

팀을 구성하고 주제를 정하려는데 사다리 타기 팀장이 되었다. 갑자기 책임감이 생겼다.

팀원분들도 열정이 넘쳐 보여 나는 이번 한 번만 더 힘내 보기로 했다.

 

온라인 1인 가구 식료품 쇼핑몰 : SingleShop

메인 쇼핑몰 페이지

식료품을 대량으로 구매하기 어려운 1인 가구를 대상으로, 1인분에 맞는 식품을 판매하는 쇼핑몰 웹 사이트를 제작하였다.

로그인 및 회원가입, 카테고리, 주문, 상품, 장바구니로 나누어 개발을 진행하였다.

내가 맡은 부분은 '상품' 코드이다.

 

JDK, Spring Boot, MySQL을 이용해 개발하였다.

 

내가 맡은 상품 관련 페이지들

 

협업 방식

주 3회 디스코드를 통해 스크럼을 진행하였다.

자신이 이틀 동안 개발한 내용과 발생한 이슈, 앞으로 개발할 것들을 간단하게 팀원들과 공유하는 시간이었다.

 

형상관리는 GitLab을 이용해 이루어졌다.

작업 영역을 세부적으로 구분하고 commit과 pull을 최대한 자주 하는 방식으로 Conflict를 최소화하고자 하였다.

 

 

코드 리뷰

매주 토요일, 코치님께서 한 주 동안 작성한 코드에 대해 리뷰를 남겨 주신다.

이 과정에서 단순 기능 구현뿐만 아니라 어떻게 하면 프로젝트 코드의 구조를 좀 더 Clean하게 바꿀 수 있을지,

.gitignore와 setter 등 보안에 좀 더 신경쓸 수 있는지 등을 알게 되어 유익한 시간이었다.

다른 사람이 나의 코드를 보고 피드백을 해 주는 기회는 흔하지 않기 때문에, 적극적으로 참여하려고 노력했다.

  • .gitignore 꼼꼼하게 작성하기. 자동 생성 사이트를 활용하면 좋다.
    gradle, idea, build 관련 파일도 추가하기
  • Controller를 API Method에 따라 ViewController, ApiController로 분리하기.
    또한, API 주소도 /view, /api와 같이 작성하면 좋다.
  • setter 대신 .update() 사용하기.
  • Mapper 인터페이스 사용하기. Form에 있는 객체를 자동으로 Product 타입 객체로 변환해 준다.
    ApiController에서 product.setName(form.getName())와 같은 과정을 일일이 반복하지 않아도 된다.
  • 어노테이션은 한 줄에 하나씩만 사용하기.
  • 테스트케이스를 Before-When-Then에 맞추어 작성하기.
  • 커스텀 예외는 초기에 만들어두면 좋다.
  • Service에 @Transactional을 추가해 트랜젝션을 고려하자.

 

VM에 빌드하기

팀장을 하면서 가장 흥미가 있었던 부분이다.

프로그램 기능을 구현해보지만 했지, 빌드를 해본 적은 없었다.

 

엘리스에서 제공해준 VM 계정에 접속하여 git repo를 clone하고, ./gradlew build를 이용해 빌드한다.

java -jar singleshop-0.0.1-SNAPSHOT.jar를 이용해 프로그램을 실행해 주면

더 이상 localhost 8080이 아닌 주소를 통해 접속할 수 있게 되는 것이다.

nohup을 이용해 터미널 창을 닫더라도 서버가 계속 유지되도록 했다.

 

 

팀원이 전부 백엔드라 프론트엔드는 엘리스에서 제공하는 샘플 코드를 활용했다.

발표 날 우리 팀은 우수상을 받았다.

열심히 개발했는데, 인정받은 느낌이 들어 뿌듯했다.