파일을 업로드하고 텍스트 임베딩하는 API /api/ideas의 시간이 매우 지연됨

/api/ideas 요청이 오래 걸리는데는 주로 아래 외부 API 호출로 인해 발생한다.
서버에서 파일을 받아 직접 업로드 API를 호출하면 파일 I/O가 여러 번 발생하는데 이게 API 호출 속도가 지연되는 주된 이유가 된다.
파일의 크기가 10MB라고 할 때 서버의 입장에서 아래와 같은 파일 I/O가 발생한다.
[클라이언트로부터 read] 10MB
[버퍼/메모리에서 다시 read] 10MB
[GCS로 write] 10MB
더해서 파일을 전송할 때 네트워크도 파일 크기만큼의 부하를 받는다.
이번 포스팅에서는 1번만 구현해볼 예정이다.

개선 후 IdeaPost 업로드 시 사용자 기준 약 5초 정도 소요(133ms + 비동기 fetch 650ms + 4.3s)
이로써 약 45% 성능 개선을 달성했다.
signed url을 활용한 업로드는 단순 파일 업로드에서는 성능적인 이점을 가져올 수 있지만, 파일 검증/파싱/악성 데이터 확인 등 별도의 처리가 필요하다면 서버에서 직접 업로드하는 것이 더 나은 방식일 수도 있다.