[php] PHP 라이브러리 S3 파일 업로드 속도 최적화

Amazon S3는 안정적인 파일 저장 및 관리 서비스로 널리 사용되고 있으며, PHP 언어를 이용해 S3에 파일을 업로드하는 데 많은 라이브러리들이 제공됩니다. 그러나 파일 업로드 과정에서 속도가 느릴 수 있는데, 이를 최적화하기 위해 사용할 수 있는 몇 가지 방법이 있습니다. 이번 포스트에서는 S3 파일 업로드 속도를 최적화하는 방법을 알아보겠습니다.

1. 멀티파트 업로드 활용

S3에 크기가 큰 파일을 전송할 때, 멀티파트 업로드를 사용하면 전송 속도를 향상시킬 수 있습니다. PHP의 aws/aws-sdk-php 라이브러리를 사용하는 경우 CreateMultipartUploadUploadPart 메소드를 사용하여 멀티파트 업로드를 수행할 수 있습니다.

use Aws\S3\S3Client;
$s3 = new S3Client([
    'version' => 'latest',
    'region'  => 'us-west-2'
]);
$bucket = 'your-bucket';
$key = 'your-object-key';
// Create multipart upload
$uploadId = $s3->createMultipartUpload([
    'Bucket' => $bucket,
    'Key'    => $key
])['UploadId'];
// Upload a part
$part = $s3->uploadPart([
    'Bucket'     => $bucket,
    'Key'        => $key,
    'UploadId'   => $uploadId,
    'PartNumber' => 1,
    'Body'       => 'your-part-data'
]);

멀티파트 업로드를 통해 파일의 크기를 쪼개어 병렬로 전송하기 때문에, 전송 속도를 크게 향상시킬 수 있습니다.

2. Transfer Acceleration 사용

S3 Transfer Acceleration을 활용하면 긴 거리의 사용자도 빠르게 업로드 및 다운로드 속도를 누릴 수 있습니다. aws/aws-sdk-php 라이브러리에서는 useTransferAcceleration 메소드를 통해 Transfer Acceleration을 적용할 수 있습니다.

use Aws\S3\S3Client;
$s3 = new S3Client([
    'version' => 'latest',
    'region'  => 'us-west-2',
    'use_path_style_endpoint' => true, // Optional
    'use_accelerate_endpoint'  => true
]);

Transfer Acceleration을 사용하면 데이터가 Amazon의 글로벌 네트워크를 통해 최적 경로로 전송되므로 속도가 개선됩니다.

3. AWS 지역 설정 최적화

파일 업로드의 속도에 영향을 주는 요소 중 하나는 AWS의 지역 설정입니다. S3에 업로드할 파일이 가까운 지역에 저장되어 있는지 확인하고, 지역 설정을 최적화하여 파일 업로드 속도를 향상시킬 수 있습니다.

S3 파일 업로드 속도를 최적화하기 위해 멀티파트 업로드, Transfer Acceleration 및 AWS 지역 설정을 활용하는 방법을 알아보았습니다. 이러한 방법들을 적용하여 파일 전송 속도를 최대화할 수 있습니다.