일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
- CORS
- HTTP 완벽가이드
- 클로저
- 포트폴리오
- html
- 2022회고
- Hibernate Reactive
- 신혼여행
- jvm
- Spring
- 메가테라
- 몰디브
- http
- SpringSecurity
- til
- JavaScript
- http 완벽 가이드
- 이펙티브자바
- 부트캠프
- 주간회고
- 헤리턴스아라
- 소프트웨어장인정신
- 바닐라코딩
- 자바스크립트
- leetcode
- 취업회고
- 상속
- css
- 자바
- java
- Today
- Total
codingBird
TIL - 쇼핑몰 프로젝트 (Plain Old) 42일 차. S3에 있는 이미지는 언제 삭제해야 할까? 본문
쇼핑몰 프로젝트 42일 차. 이미지 수정 기능을 고도화해서 구매평을 이용해 짤 놀이를 할 수 있게 되었다.
실은 어제가 42일 차이고 오늘은 43일 차가 맞지만 구정 때문에 작업을 할 수 없었으니 내 마음대로 42일 차라고 하겠다. 뭐 어때 내가 프로젝트 오너이자 개발자인데.
아무튼 구매평에 저장되어 있는 이미지를 수정 혹은 삭제할 때 기존 S3에 저장되어 있는 파일을 어떻게 처리하면 좋을지 고민했다.
1. 동기적으로 삭제
말 그대로 구매평이 삭제되거나, 이미지가 수정될 때 S3에 있는 객체 또한 동기적으로 삭제하는 방식.
구매평을 삭제할 경우 API는 DELETE /files, DELETE /reviews 2번 호출 되고,
구매평의 이미지를 삭제할 경우 API는 DELETE /files, PATCH /reviews 역시 2번,
구매평 이미지를 변경하는 경우 API는 DELETE /files, POST /files, PATCH /reviews 3번 호출이 된다.
제일 상식적이고 직관적인 방식이긴 하나 사용자가 원하는건 구매평의 이미지가 삭제되거나 구매평의 이미지가 변경되는 것이지 S3에 저장되어 있는 파일이 삭제되는 것이 아니였다.
매번 DELETE API를 호출하는 것이 비효율 적이라 생각되어 기각.
2.비동기적으로 삭제
구매평이 삭제되거나 이미지가 변경될 때 삭제하는 이미지의 기록을 남기는 방식.
Log 객체를 만들어 삭제 되어야 하는 파일의 url를 저장해두고 일정 주기마다 메뉴얼이든 자동이든 Log객체를 이용해 S3 버킷을 청소해주는 API를 호출해 S3에 필요없는 파일을 삭제.
1번 보다는 효율적인 방식인 것 같지만…음 더 좋은건 없을까?
3.객체 생명주기 설정
S3 Standard 기준 GB당 30원 수준이다. 그럼 굳이 삭제해야 할까…?
삭제를 위한 API 호출과 삭제비용이 높을수도 있는 수준.
여러 고민 끝에 DELETE는 진행하지 않기로 결정했다.
나중에 정말 삭제가 필요한 상황이 오면 별도로 버킷을 생성해 S3에서 제공하는 객체 생명주기 설정을 통해 삭제하는 것으로…!
'TIL' 카테고리의 다른 글
TIL - 쇼핑몰 프로젝트 (Plain Old) 44일 차. 구매평 대댓글 및 댓글 (0) | 2023.02.28 |
---|---|
TIL - 쇼핑몰 프로젝트 (Plain Old) 43일 차. 댓글 불러오기 GET with Params (0) | 2023.02.28 |
TIL - 쇼핑몰 프로젝트 (Plain Old) 41일 차. 이미지 업로드 구현완료 (0) | 2023.02.26 |
TIL - 쇼핑몰 프로젝트 (Plain Old) 40일 차. 이미지 업로드 구현 중 (0) | 2023.02.26 |
TIL - 쇼핑몰 프로젝트 (Plain Old) 39일 차. Review 기능 구현 1차 완료 (0) | 2023.02.26 |