Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

메타데이터 row 삭제 시 연관 이미지 파일과의 약한 연결에 대한 정리 및 발생 가능 이슈 #262

Open
LDEV4966 opened this issue May 8, 2022 · 0 comments
Assignees
Labels
BackEnd Refactor Code refactoring
Projects

Comments

@LDEV4966
Copy link
Collaborator

LDEV4966 commented May 8, 2022

내용


현재 프로젝트 삭제시에는 프로젝트 내 저장된 metadata 들의 original 이미지 파일들을 함께 삭제 시켜주도록 수정하였다.
그런데 metadata를 삭제할 때에는 original 이미지 파일을 삭제하지 않는다. 해당 이슈에서는 그 이유와 그 과정속에서 생길 수 있는 문제 그리고 그것을 해결할 방법에 대해 작성하겠다.


현재 상황

스크린샷 2022-05-08 오후 5 19 40

현재 구조 상 metadata row를 확인해 보면, image filename이라는 속성 값을 통해 해당 파일의 존재 여부를 확인하고 이를 가져오는 방식으로 진행된다. 즉 filename을 통해 실제 스토리지에 저장된 이미지 파일에 접근한다.


metadata 삭제 시 스토리지에 저장된 이미지 파일을 삭제하지 않는 이유

사용자가 이미지는 업로드 해두고, 메타데이터를 삭제하고 다시 생성 하는 등 수정 가능성이 빈번하게 있을 수 있다.
그렇기에 매번 원본 이미지를 삭제하고 다시 추가하는 것은 큰 overhead이다. 따라서 기존의 원본 파일 이미지를 올려 놓은 경우라면, 메타데이터를 삭제하고 다시 생성 하는 과정에서 image filename 값만 유지하면 스토리지에서 기존 파일 이미지를 그대로 가져올 수 있다.


문제점

사용자가 스토리지에 추가하려고 하는 이미지 파일의 filename이 이미 존재하는지 아닌지 확인할 수 가 없는 문제가 있다.
즉 이미 동일한 image filename 의 파일이 스토리지에 존재한다면, 'FileAlreadyExistsException' 이 발생할 수 있다.
따라서 이 오류에 대한 핸들링이 필요하다.


해결 방안

사용자가 스토리지에 image filename이 있는지 없는지 모를때는, 기존에 존재하는 이름의 파일을 삽입할 때에는 원본 파일을 덮어씌우는 방식으로 진행하려고한다.


추가적인 리팩토링 고려사항

더이상 접근 할 필요가 없는 이미지 파일들이 많아지면 리소스 낭비가 심해질 것이라고 생각한다.

흠.. 삭제후 몇일 이상의 접근이 없다면 자동으로 삭제해 주는 과정과 같은 처리가 필요할 것이라고 생각한다.

@LDEV4966 LDEV4966 self-assigned this May 8, 2022
@LDEV4966 LDEV4966 added BackEnd Refactor Code refactoring labels May 8, 2022
@LDEV4966 LDEV4966 added this to To do in Sprint 7 via automation May 8, 2022
LDEV4966 added a commit that referenced this issue May 8, 2022
issue : #262

해당 이슈에 언급된 내용이 정상적으로 작동함을 확인함.
@LDEV4966 LDEV4966 moved this from To do to Done in Sprint 7 May 13, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
BackEnd Refactor Code refactoring
Projects
Development

No branches or pull requests

1 participant