woowacourse-teams / 2023-map-befine

💡 내 관심사로 🗺 만든 지도…? 괜찮을 지도!📍

Home Page:https://mapbefine.com

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

[BE] Image 패키지 리팩터링

junpakPark opened this issue · comments

🛠️ 작업 대상

  • Image 패키지
    • 흩어져있는 Image 관련 로직이나 클래스를 Image 패키지로 모은다.
    • Image 패키지 내의 각 클래스들이 적절한 레이어에 위치하도록 이동시킨다.
  • 해당 패키지를 의존하는 모든 패키지
    • S3 Upload 과정과 DB Transaction 과정을 분리하기 위해 이벤트를 사용한다.
      • S3 업로드 과정의 경우, RDB가 아니기 때문에 트랜잭션 경계 설정 내부에 있어도 Rollback이 되지 않는다.
      • S3 업로드 과정이 트랜잭션 경계 설정 내부에 있는 경우 트랜잭션이 지연되는 결과를 가져온다.

✅ 작업 내용

Image 패키지 내부 리팩터링

  • Image 패키지 레이어 재분배
  • Image 클래스 common에서 Image 패키지로 이동
  • 불필요 의존성 제거
  • domain 리팩터링
  • 관련 커스텀 예외 구현
  • Infrastructure 리팩터링
    • tempFile 대신 InputStream을 이용한 방식으로 변경
    • try-with-resource 적용
  • 불필요 클래스 삭제

Image 패키지 의존 Service 리팩터링

  • 스프링 이벤트를 이용하여, S3 Upload 과정과 DB Transaction 과정 분리
  • 패키지별 Info 수정 시, 사진 변경 기능 구현

📎 참고 자료

⏰ 추정 시간

낙관적 : 8시간
비관적 : 16시간