프로젝트 초기에 누군가 클라우디너리라는 CDN서비스를 소개하며 사용해보자고 했다. 이것은 자체적으로 이미지 저장 클라우드를 무료로 제공해주기 때문에 초기에 이미지 업로드는 프런트에서 진행했다. 하지만 이것에 보안적으로 좋지 않을 수 있다는 멘토링 시간의 조언을 듣고 찾아본 후에 백엔드에서 업로드 하는 것으로 변경했다.
그런데 왜 멀터를 사용해야하지 하는 의문이 생겼다. 기존에는 당연하게 멀터를 사용했는데 프런트에서는 멀터 없이 이미지 업로드를 처리했다. 그래서 멀터를 사용하는 이유를 찾으니 가장 큰 부분은 편의성이다. 개발자가 직접 복잡한 멀티파트 데이터 파싱 과정을 직접 구현할 필요가 없다. 그래서 코드가 간결해지고 유지 보수성이 좋아진다. 그리고 라이브러리 자체에 보안이나 에러처리, 확장성 등을 위한 기능들이 내장되어있다.
이렇게 모든 게 해결되면 좋겠지만 속도 저하 문제가 발생했다. 이미지 업로드 시간이 2초에서 10초까지도 걸리니 내가 만약에 사용자라면 답답해서 사용하지 않을 것이다. 물론 실제 서비스라면 서버 성능을 올리는 것으로 어느정도 해결이 되겠지만 당연히 비용적으로 많이 들 것이고 절대 좋은 방법이 아니다.
이 문제의 원인은 서버로 요청이 전달될 때의 속도의 문제라고 가설을 세웠다. 두 가지의 경우 시간을 비교하니 거의 동일하게 나왔다. 그래서 다른 차이점이 무엇일까 생각하니 API 요청에서 서버로 전달되는 데이터의 크기가 매우 많이 차이가 나기에 그런 것 같았다.
그래서 이에 따른 방법들을 생각하고 시도 해봤다.
- 프런트에서 이미지 압축을 해서 서버에 전달 - 화질 저하 문제로 실패.
- 사인드 업로드 시도 - 시간 관계상 구현에 실패.
- 클라우디너리에 문의해서 직접 보안 문제에 관해서 다시 물었다
- 보안적인 문제는 없다는 답변을 받고 프론트에서 업로드 하는 것으로 다시 변경되었다.
만족스럽지 못하게 마무리가 되었다.
- 보안상에는 문제가 없더라도 프런트 업로드 시에는 누군가가 고의로 대량의 이미지 업로드를 시도할 수 있어 백엔드에서 사인드 업로드를 통한 제한적인 업로드가 필요할 것으로 생각된다.
- 프로젝트를 마치고 든 생각인데 멀터를 이용해서 이미지를 조절해서 클라우디너리에 업로드 했다면 시간이 줄어들었을 것 같다.
- 시간적 여유가 있었다면 클라우디너리 외에 다른 CDN서비스를 사용해보고 비교해서 선택할 수 있었을 것이다.
'오늘 뭐했냐 > 함께했던 작업들' 카테고리의 다른 글
23.09.06 유저 테스트 (0) | 2023.09.12 |
---|---|
23.08.30 회원탈퇴4 (스케줄러 적용) (0) | 2023.09.07 |
23.08.27 회원 탈퇴 만들기3 (서버 상태 모듈 적용하기) (0) | 2023.09.03 |
23.08.26 회원 탈퇴 만들기2 (서버 상태 확인 모듈 만들기) (0) | 2023.09.03 |
23.08.25 회원 탈퇴 만들기 1 (기획) (0) | 2023.09.03 |