작성자 : 김다희

이미지를 현재 S3에 올리고 있고 S3에 올라간 이미지 경로를 받아서 데이터베이스 이미지 필드에 TEXT값으로 저장하고 있다. 그리고 이미지를 수정할 수 있는 기능을 제공한다. 이미지를 수정할 때 새로 올라간 이미지의 S3 이미지 경로를 받아서 데이터베이스 이미지 필드를 update한다. 그럼 이전 이미지는 어떻게 관리해야할까? 크게 3가지 방식이 있을 것 같다.

  1. 이전 이미지는 관리안함.
  2. 수정 요청이 오면 이미 S3에 올라간 이미지를 삭제하고 새로운 이미지를 업데이트 한다.
  3. 수정 요청이 오면 이미 S3에 올라간 이미지 정보를 별도의 테이블에 데이터를 저장하고, 새로운 이미지를 업데이트 한다. (소프트 딜리트)

3번 방식을 채택해보자.

왜 소프트 딜리트를 해야할까?

현 시점에서는 2번을 채택해도 큰 문제는 없을 것이지만 3번 방식을 채택한다면

  1. 비즈니스 로직을 더 깊게 생각해볼 수 있을것 이고
  2. 트랜잭션을 어떻게 묶어야할지도 고민할 수 있다.
  3. 더 나아가 배치처리까지 해볼 수 있다.

때문에 이번 프로젝트에서는 소프트 딜리트를 채택한다.

그럼 어떻게 소프트 딜리트를 처리할 수 있을까?

현재 소프트 딜리트로 관리되어야 하는 리소스는 아래와 같다.