AWS Presigned url 장점
기존의 user -> server -> s3 flow로 이미지 업로드를 진행 할 경우 Presigned url를 사용해 구현할 경우와 대비해서
'네트워크 대역폭'이 증가하여 속도적인 측면에서 단점을 가진다고 설명해주셨습니다.
즉 Presigned url을 사용하면 서버에서는 Presign url만 클라이언트에게 던져주고, 실제 파일 업로드는
클라이언트에서 진행되기 때문에 '트래픽 및 대역폭'을 신경쓰지 않아도 된다인거 같은데 여기서 '대역폭의 상관관계(Presigned url 사용 유무에 따른)'가 잘 와닿지 않아서 보충 설명 부탁드려도 될까요?
감사합니다!
답변 1
2
Dev님 안녕하세요 :)
이미지 업로드는 매우 부하가 큰 작업이에요. JSON을 주고 받는 일반 API요청에 비하면 훨씬 부하가 큽니다. 이미지 파일 용량 자체가 매우 크니깐요. 따라서 이미지 업로드가 백엔드 서버를 거치게 되면 백엔드 서버가 금방 죽을 수 있어요. 혹은 동시 업로드 요청수를 제한해야될텐데 이건 유저경험이 별로죠.
프론트에서 바로 S3와 같은 파일저장소나 데이터베이스로 데이터를 보내지 않고 백엔드를 거치는 이유를 생각해봐야 되요. 보안문제 때문이죠. 아무나 업로드하고 삭제하면 안되니깐요. 저희가 정해둔 규칙 안에서 데이터가 관리되어야겠죠.
일반적인 API요청은 전달되는 데이터양이 적기 때문에(많아야 킬로바이트 단위) 백엔드를 거쳐서 디비에 저장되어도 괜찮아요. 하지만 이미지는 보통 메가바이트 단위죠?
PresignedUrl을 이용하면 이미지를 업로드할 때 백엔드 서버를 거치지 않고 클라이언트에서 바로 S3로 업로드가 가능해져요. 원래는 이미지를 백엔드가 이미지를 S3로 전달함과 동시에 보안절차(aws sdk secret key활용해서 aws s3 접속)도 같이 한번에 진행이 되죠. 이 과정을 분리시키는거에요. 백엔드는 presignedUrl 생성으로 보안절차 작업만 해주는겁니다. Client가 AWS S3로 바로 업로드할 수 있도록요.
Router.use 두번째 파라미터 ImageRouter : undefined 전달 오류
0
125
2
소스코드 요청
0
164
1
프록시 관련 질문
0
167
1
Presigned URL 사용시 데이터베이스 저장 시점
0
335
1
이미지 등록시 자동 등록 오류
0
218
1
강의에 사용된 코드 다운 받는 사이트 주소 있나요?
0
389
2
axios 이용해서 백엔드로 이미지 전송 중 새로고침
0
476
1
ImageList 컴포넌트에서 업로드 한 사진을 리스트에서 바로 보기 위해 이 방법도 괜찮나요??
0
386
1
이미지 처음 올릴 때만 나타나는 오류
0
256
1
es6 스타일로 Import 할때 동작하지 않습니다.
0
393
1
이미지 업로드시
0
367
1
node js를 이용하고 mysql에 이미지 경로 저장
2
1263
1
선생님 cloudFront를 사용하게되면 S3는 private으로 사용하는게 좋을까요
0
545
1
선생님 aws-sdk 모듈을 찾을 수 없다고 합니다.
0
666
1
new aws.S3 version 확인
2
509
1
react-router-dom v6 useHistory 이슈
7
641
0
람다에서 시간 초과 에러가 뜹니다!
0
318
1
첫 로드시 동일한 이미지 두번호출
2
492
1
이미지 업로드 시 배열로
2
531
1
Promise.all에 대한 질문
0
431
1
세션에 관한 질문이 있습니다.
0
434
1
Promise.all관련 질문 ("여러 이미지 미리보기" 중...)
0
312
1
cdn 주소
0
510
1
특정 user 페이지 가져오기 질문있습니다.
0
296
1





