Back End/리팩토링 보고서

[개발노트] PocketMark 개발노트

DevPing9_ 2022. 3. 3. 22:50

PocketMark 개발노트

 

1. 의존관계 줄이기

  1-1) 레이어간 의존관계 개선

  1-2) 일급컬렉션 적용

  1-3) API와 Repository 간 의존성 제거 (DTO->Repository 의존성 제거)

2. 상속을 이용하여 재사용성 높이기

  2-1) MappedSuperClass

  2-2) @Inheritance (도메인 정규화, @OneToMany -> @OneToOne)

  2-3) Spring Data Interface-Based DTO Projection (+불변성)

3. 쿼리성능 최적화

  4-1) Query RULE

  4-2) OneToMany 에서 fetchJoin(BatchSize) VS 같은로직 직접구현

  4-3) Spring Data JPA Repository 반환형 Slice VS Page

  4-4) @JoinColumn의 referencedColumn 은 사용하지 말자 

  4-5) @Inheritance(strategy=JOINED) 에서 슈퍼클래스 필드만 Query하기

  4-6) 트리구조 도메인의 삭제 쿼리 갯수 줄이기

  4-7) 인조키(PK직접할당)에서 추가쿼리 삭제

  4-8) save() -> saveAll() 로 변경 (트랜잭션 오버헤드) 

  4-9) exist 쿼리 (QueryDSL limit 1 로 사용)

4. 자동화

  4-1) API 명세서 생성 자동화 (Notion -> Swagger)

  4-2) Code Build, Deploy 자동화 (Travis CI + AWS CodeDeploy)

728x90