Go용 AWS SDK는 다음 기술 조합을 사용하여 대용량 파일 업로드 중 메모리 관리를 처리합니다.
1. 스트리밍: SDK는 스트리밍을 사용하여 대용량 파일을 업로드합니다. 즉, 파일을 더 작은 청크로 나누고 각 청크를 별도로 업로드합니다. 이 접근 방식은 한 번에 파일의 작은 부분만 메모리에 로드하여 메모리 사용량을 줄이는 데 도움이 됩니다[4].
2. 멀티파트 업로드: SDK는 멀티파트 업로드도 지원하므로 대용량 파일을 더 작은 부분으로 나누고 각 부분을 별도로 업로드하여 업로드할 수 있습니다. 이 접근 방식은 한 번에 파일의 작은 부분만 메모리에 로드하여 메모리 사용량을 관리하는 데 도움이 됩니다[3].
3. 청킹: SDK는 청킹을 사용하여 대용량 파일 업로드 중 메모리 사용량을 관리합니다. 파일을 더 작은 청크로 나누고 각 청크를 별도로 업로드합니다. 이 접근 방식은 한 번에 파일의 작은 부분만 메모리에 로드하여 메모리 사용량을 줄이는 데 도움이 됩니다[3].
4. 동시성: SDK는 동시성을 지원합니다. 즉, 파일의 여러 청크를 동시에 업로드할 수 있습니다. 이 접근 방식은 여러 고루틴에 로드를 분산시켜 업로드 성능을 향상시키고 메모리 사용량을 줄이는 데 도움이 됩니다[1].
5. 버퍼링: SDK는 대용량 파일 업로드 중 메모리 사용량을 관리하기 위해 버퍼링을 사용합니다. 파일 데이터를 메모리에 버퍼링한 다음 청크로 업로드합니다. 이 접근 방식은 한 번에 파일의 작은 부분만 메모리에 로드하여 메모리 사용량을 줄이는 데 도움이 됩니다[1].
이러한 기술을 사용하면 Go용 AWS SDK는 메모리 사용량을 효과적으로 관리하는 동시에 대용량 파일 업로드를 효율적으로 처리할 수 있습니다.
인용:[1] https://docs.aws.amazon.com/sdk-for-go/v1/developer-guide/s3-example-basic-bucket-Operations.html
[2] https://www.youtube.com/watch?v=R6W1ay4jYKk
[3] https://github.com/aws/aws-sdk-go/issues/1104
[4] https://stackoverflow.com/questions/34177137/stream-file-upload-to-aws-s3-using-go
[5] https://www.youtube.com/watch?v=HkF3_GLVKEg