(공통)기술 스택
- 이미지 OR 텍스트
브랜치 전략
- 사용한 브랜치 전략에 대해서 설명
- 프로덕션 서버를 사용하지 않았기에 github flow 방식의 브랜치 전략을 사용
- main : 배포 대상이 되는 브랜치로서 PR로만 머지 가능
- feat/~~~ : 기능 개발과 관련된 브랜치
- fix/~~~ : 기능 수정과 관련된 브랜치
- hotfix/~~~ : 긴급 수정과 관련된 브랜치
- refactor/~~~ : 코드 리팩토링과 관련된 브랜치
- chore/~~~ : 프로젝트 환경 설정과 관련된 브랜치
PR
- 머지 규칙
- 반드시 리뷰 후 머지
- approve 2명 이상
- 다수의 리뷰를 통해 잘못된 로직 또는 오타를 발견하여 빠르게 수정 가능
- 자신이 맡지 않은 도메인에 대한 이해를 높이기 위함
- 테스트 코드
- 동작의 무결성을 보장하기 위한 테스트 코드 작성 필요
- jacoco를 이용하여 커버리지를 설정하여 테스트 코드 작성에 약간의 강제성 부여
- 다만 테스트 코드로 인하여 진행 상황이 너무 늦어지는 것을 방지하고자 service와 관련된 클래스에대해 각각 line 70%, branch 70%의 커버리지를 설정
- (jacoco 설정 사진)
- (중간 프로젝트 경험)
ERD

- 테이블에 대한 설명(말로만 테이블 간단히 설명하자, 연관관계 설명)
개발 환경
- 로컬 환경과 개발 환경의 분리
- 여기서 yml 설명
- gitignore 설정
- 서브 모듈에 대한 설명
- 도입 배경 - 노출이 되면 안되는 정보를 서브 모듈을 통해 효율적으로 관리하자
- 서브 모듈을 통해 노출이 되면 안되는 중요 정보에 대한 버전 관리 진행
- application-aws.yml
- application-dev.yml
- application-oauth.yml
- 사용 방법
- git 명령어
- build.gradle을 통해 서브모듈 → 메인모듈의 resources 폴더로 복사
CI/CD + 백엔드 인프라
- CI/CD
- CI/CD 아키텍처(그림)
- CI/CD에 대한 설명(대본)
- 백엔드 인프라
- 백엔드 인프라 아키텍처(그림)
- 백엔드 인프라에 대한 설명(대본)
각자 신경 쓴 내용
- 각자 맡은 도메인에서 소개하고 싶은 내용을 넣으면 좋을거 같습니다.
- ex) 개발하면서 신경쓴 부분
댓글
- 대댓글 구조 with pagination
유저
전시회
- 전시회 페이징 또는 리스트 조회
- 단순 전시회에 대한 정보 뿐만아니라 전시회에 대한 좋아요 개수, 전시회에 대한 후기 개수 또한 반환해야 했다.
- 필요한 정보를 따로 따로 조회할 경우 한번의 요청에 너무 많은 쿼리가 발생하게 되는 문제가 있다.
- dto 조회를 이용하여 필요한 정보를 한번에 가져올 수 있도록 쿼리를 최적화 하였다.
후기
- querydsl로 동적 쿼리
- DTO projection
- S3 이미지 업로드/삭제