글을 쓰게 된 이유

모두가 같은 상황에서 저같은 고생을 하지 않길 바라며…

지금 저는 카이스트 몰입캠프에 와있습니다.. 여기서 다양한 프로젝트들을 개발하던 중 이미지를 업로드하는 일을 하게 되었고..

뭐랄까 이런건 다 백에서 처리할 줄 알아서..(선입견?) 좀 고생하면서 구현하게 되었습니다..

결론을 먼저 말하자면..

이미지 업로드는 프론트에서 하는게 훨씬 효율적이다! 라는 것입니다..

물론 백엔드에서도 multer, fileInterceptor 등으로 이미지를 받는 로직들을 구축할 수 있지만.. 그리고 저도 처음엔 그렇게 했지만.. 현업에서는 절대 쓰이지 않는 방식이라고 하네요..ㅜ

제가 시도한 방식들을 먼저 생각해보면..

  1. 그냥 백엔드 서버에 이미지를 저장해보자! > 가장 단순, but 한계가 명확함.. cloud 로 방향을 틀기로 했다..

  2. 백엔드에서 이미지를 업로드 하고 url을 db에 저장..

    이걸 딱 구현하고 나서는 이게 정답인줄 알았는데 이상하게 느리기도 하고 음.. 뭔가 아닌 것 같아서 도움을 요청함.. >> 조재건 코어님께서 말씀하시길

    스크린샷 2025-01-09 오후 3.29.41.png

    라고 하셔서 프론트에서 이미지를 올리고 presigned url을 활용하기로 함..

  3. 백엔드에서는 url만 반환해주는 api 딱 하나 구현하고 프론트에서 이미지를 올리는 방식으로 진행하기로 함

    스크린샷 2025-01-09 오후 3.31.45.png

    스크린샷 2025-01-09 오후 3.32.36.png

작동 방식은 이렇게 됩니다..

이미지 업로드 해야지!

프론트에서 백에서 구현된 aws presigned url 요청하는 api 불러온다.

프론트에서는 그 url로 이미지를 올린다.