S3 파일 업로드 CPU 부하 개선
·
spring
사내에서 파일 업로드 기능을 두 가지 방식으로 제공하고 있습니다.서버에서 파일을 받고 S3에 업로드Presigned URL을 발급하고 클라이언트에서 Presigned URL로 직접 S3에 업로드문제첫 번째 방식은 구현이 간편하지만, 다음과 같은 CPU 사용 이슈가 있었습니다.속도 저하: 25MB PDF 파일 업로드 시 평균 4~6초 소요CPU 사용량 급등: 최대 80%, 평균 50%이를 해결하기 위해 Presigned URL 방식을 도입해 우회적으로 성능은 개선했지만, 또 다른 두 가지 문제가 발생했습니다.클라이언트 복잡성 증가: Presigned URL 관련 Flow 이해필요레거시 코드 호환성 문제: 기존 API를 사용하는 클라이언트 코드 수정의 불편함과 어려움현재 쿠버네티스 자원을 알뜰하고 사용하고 ..
SpringBoot S3 Presigned URL 적용
·
spring
일반적인 파일 업로드/다운로드 방식우리 서비스는 파일을 업로드할 때 API 서버를 거쳐 S3에 저장된다.파일 다운로드도 마찬가지로 다운로드 요청을 받으면 S3로 부터 파일을 가져오고 서버에서 파일을 스트림으로 응답한다.이렇게 API 서버를 거치는 방식은 파일을 API 서버가 직접 처리할 수 있다는 것이다. 직접 처리할 수 있다는 의미는 특정 저장소에 직접 접근하여 저장할 수 있고, 바이너리 파일 검사(파일 포맷, 사이즈 등등), 인코딩 같은 전처리 작업을 수행할 수 있다는 것을 뜻한다.장점이 있듯이 단점도 존재하는데, 파일 처리를 직접 하므로 API 서버 자원을 그만큼 사용한다.문제 상황 Pinpoint APM 모니터링 중 CPU가 한번씩 튀는 현상을 발견했다.CPU가 튀는 시점을 종합했을 때 거의 대부..
noose
'S3' 태그의 글 목록