-
[개발노트] PocketMark 개발노트Back End/리팩토링 보고서 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'Back End > 리팩토링 보고서' 카테고리의 다른 글
[리팩토링 보고서] JPA 쿼리 성능 최적화 (0) 2022.03.05 [리팩토링 보고서] 서버과부하 방지를 위한 Batch 처리 (0) 2022.03.05 [리팩토링 보고서] 일급 컬렉션의 적용 (0) 2022.03.04 [리팩토링 보고서] API와 Repository 의존성 제거하기 (DTO-Repository 의존성 제거) (0) 2022.03.04 [리팩토링 보고서] 레이어간 의존성 개선 (0) 2022.03.04