-
Notifications
You must be signed in to change notification settings - Fork 0
메타데이터 row 삭제 시 연관 이미지 파일과의 약한 연결에 대한 정리 및 발생 가능 이슈 #262
Description
내용
현재 프로젝트 삭제시에는 프로젝트 내 저장된 metadata 들의 original 이미지 파일들을 함께 삭제 시켜주도록 수정하였다.
그런데 metadata를 삭제할 때에는 original 이미지 파일을 삭제하지 않는다. 해당 이슈에서는 그 이유와 그 과정속에서 생길 수 있는 문제 그리고 그것을 해결할 방법에 대해 작성하겠다.
현재 상황
현재 구조 상 metadata row를 확인해 보면, image filename이라는 속성 값을 통해 해당 파일의 존재 여부를 확인하고 이를 가져오는 방식으로 진행된다. 즉 filename을 통해 실제 스토리지에 저장된 이미지 파일에 접근한다.
metadata 삭제 시 스토리지에 저장된 이미지 파일을 삭제하지 않는 이유
사용자가 이미지는 업로드 해두고, 메타데이터를 삭제하고 다시 생성 하는 등 수정 가능성이 빈번하게 있을 수 있다.
그렇기에 매번 원본 이미지를 삭제하고 다시 추가하는 것은 큰 overhead이다. 따라서 기존의 원본 파일 이미지를 올려 놓은 경우라면, 메타데이터를 삭제하고 다시 생성 하는 과정에서 image filename 값만 유지하면 스토리지에서 기존 파일 이미지를 그대로 가져올 수 있다.
문제점
사용자가 스토리지에 추가하려고 하는 이미지 파일의 filename이 이미 존재하는지 아닌지 확인할 수 가 없는 문제가 있다.
즉 이미 동일한 image filename 의 파일이 스토리지에 존재한다면, 'FileAlreadyExistsException' 이 발생할 수 있다.
따라서 이 오류에 대한 핸들링이 필요하다.
해결 방안
사용자가 스토리지에 image filename이 있는지 없는지 모를때는, 기존에 존재하는 이름의 파일을 삽입할 때에는 원본 파일을 덮어씌우는 방식으로 진행하려고한다.
추가적인 리팩토링 고려사항
더이상 접근 할 필요가 없는 이미지 파일들이 많아지면 리소스 낭비가 심해질 것이라고 생각한다.
흠.. 삭제후 몇일 이상의 접근이 없다면 자동으로 삭제해 주는 과정과 같은 처리가 필요할 것이라고 생각한다.
