AWS SDK for Go menangani manajemen memori selama pengunggahan file besar dengan menggunakan kombinasi teknik:
1. Streaming: SDK menggunakan streaming untuk mengunggah file besar, yang berarti memecah file menjadi beberapa bagian yang lebih kecil dan mengunggah setiap bagian secara terpisah. Pendekatan ini membantu mengurangi penggunaan memori dengan hanya memuat sebagian kecil file ke dalam memori dalam satu waktu[4].
2. Unggahan Multibagian: SDK juga mendukung unggahan multibagian, yang memungkinkan Anda mengunggah file besar dengan membaginya menjadi beberapa bagian lebih kecil dan mengunggah setiap bagian secara terpisah. Pendekatan ini membantu mengelola penggunaan memori dengan hanya memuat sebagian kecil file ke dalam memori dalam satu waktu[3].
3. Chunking: SDK menggunakan chunking untuk mengelola penggunaan memori selama pengunggahan file berukuran besar. Ini membagi file menjadi beberapa bagian yang lebih kecil dan mengunggah setiap bagian secara terpisah. Pendekatan ini membantu mengurangi penggunaan memori dengan hanya memuat sebagian kecil file ke dalam memori pada satu waktu[3].
4. Konkurensi: SDK mendukung konkurensi, yang berarti SDK dapat mengunggah beberapa potongan file secara bersamaan. Pendekatan ini membantu meningkatkan kinerja unggahan dan mengurangi penggunaan memori dengan menyebarkan beban ke beberapa goroutine[1].
5. Buffering: SDK menggunakan buffering untuk mengelola penggunaan memori selama pengunggahan file besar. Ini menyangga data file di memori dan kemudian mengunggahnya dalam beberapa bagian. Pendekatan ini membantu mengurangi penggunaan memori dengan hanya memuat sebagian kecil file ke dalam memori dalam satu waktu[1].
Dengan menggunakan teknik ini, AWS SDK for Go dapat secara efisien menangani unggahan file besar sekaligus mengelola penggunaan memori secara efektif.
Kutipan:[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