개발/끄적이기

2021.12.25 TIL

라니킴 2021. 12. 27. 03:44

아침회의를 하면서 s3 저장할 이미지 파일 사이즈에 대한 얘기가 나왔다. 우리 서비스는 사진을 저장할 일이 많은데 어떻게하면 용량을 줄일 수 있을 지 생각해봤다. 로직을 작성하면서 test하는데도 무료 제공 10%를 사용했기 때문에 추후 사용자가 생기면 생각보다 빠르게 용량이 차겠다는 생각이 들었기 때문에 고려하지 않을 수 없는 부분이었다. 

AWS 가입한지 아직 1년이 안되서 무료로 사용중인데 RDS로 약간의 과금을 맛봤기 때문에 서버 비용이 많이 나올까 무서웠다...

 

기존에는 이미지를 프론트에서 form-data를 통해 MultipartFile로 받아서 저장하는 로직을 작성했다. 찾아보니 이미지의 용량을 줄이는 것은 쉬운 일이 아니였다. 어떻게 해야하나 고민하던 중 프론트엔드에서 라이브러리를 통해 사이즈 용량을 줄여서 백엔드로 보내줄 수 있다고 하셨다.

용량을 줄인 후 base64로 인코딩하여 JSON형태로 전달된다. 

 

Base64 8비트 바이너리 데이터(예를 들어 실행파일이나, ZIP파일 등)를 문자 코드에 영향을 받지 않는 공통 ASCII 영역의 문자들로만 이루어진 일련의 스트링으로 바꾸는 인코딩 방식을 가리키는 개념입니다. 다시 말해서, 바이너리를 읽을 수 있는 스트링 형태로 바꾼 자료형을 BASE64라고 합니다.

 

base64형태는 어떻게 s3와 DB에 저장할 지 찾아봤는데 만만치 않다. 오늘 끝내보려고 했으나 실패했다...

대부분 spring boot에서는 MultipartFile로 받아서 서비스단에서 용량을 줄이는 것 같은데 어떤 방법이 맞는 지 모르겠다. 멘토님에게 질문을 했으니 도움을 받아서 구현해보도록 해야겠다.