본문 바로가기

AWS Design Pattern/데이터 업로드 패턴

WRITE PROXY - 인터넷 스토리지로 고속 업로드

ㅁ  풀어야 할 문제

인터넷 스토리지는 일반적으로 읽기에 대한 수용 능력 및 데이터 안정성이 매우 뛰어나다. 그러나 이중화를 위해 여러 지역에 쓰기가 이루어지고 있고 HTTP 프로토콜로 클라이언트와 통신하므로 비교적 쓰기 속도가 느린 특성이 있다.

따라서, 큰 데이터를 인터넷 스토리지에 쓰는 경우 성능이 문제가 될 수 있다.

 

ㅁ  해결/패턴

클라이언트에서 인터넷 스토리지에 직접 데이터를 전송하는 것이 아니고, 가상 서버로 데이터를 받아 그 가상 서버로부터 인터넷 스토리지로 전송함

클라이언트에서 가상 서버로의 전송은 HTTP보다 빠른 프로토콜(예를 들어, UDP 기반의 프로토콜)을 이용할 수 있다.

, 작은 용량의 파일이 많을 경우 클라이언트 쪽에서 한번 압축하여 가상 서버로 전송 후 압출을 풀어 인터넷 스토리지에 전송 가능

가상 서버와 인터넷 스토리지는 같은 지역이라면 전용선이 연결되어 있어 직접 인터넷 스토리지에 전송하는 것보다 가상 서버를 통해 전송하는 것이 전체 전송 시간을 단축 시킬 수 있다.

 

  구현

-       데이터를 받기 위한 EC2 인스턴스를 가동함. EC2 인스턴스는 최종적으로 데이터를 저장할 S3와 같은 지역에 가동

-       EC2 인스턴스에 FTP 서버나 웹 서버, Aspera TaunamiUDP 등의 UDP 전송 소프트웨어, 또는 전송 속도를 가속화하는 소프트웨어를 설치 (이 서버를 업로드 서버로 함)

-       클라이언트에서 업로드 서버로 데이터를 전송함. 작은 용량의 파일이 많을 경우 일단 클라이언트에서 한 개의 파일로 합친다.

-       업로드 서버로 전송 완료 후 (또는 순차 처리로) 업로드 서버에서 S3에 전송함. 클라이언트에서 압축한 경우는 업로드 서버에서 압축을 푼 후S3로 전송함

ㅁ  장점

-       S3로의 전송 속도를 빠르게 할 수 있다.

-       특히, 해외 지역의 S3로 업로드할 경우 많은 속도 향상을 기대할 수 있다.

 

ㅁ  주의점

-       업로드 서버 EC2의 쓰기 속도(일반적으로 EBS에 쓰기 속도)가 병목 구간이 되는 경우가 있으므로 필요에 따라 디스크를 스트라이핑하여 속도를 올려줌

-       크기가 작은 EC2 인스턴스는 상대적으로 회선의 대역이 작기 때문에 높은 성능이 필요한 경우 큰 인스턴스를 이용

 

  기타

-       UDP를 이용한 데이터 전송 고속화 솔루션으로는 TsunamiUDP Aspera, Skeed SilverBullet 등이 있다.

-       S3로의 쓰기 성능을 높이는 방법으로는 파일을 분할하고 병렬로 쓰는 방법이 있다. (Multipart Upload라고함)

-       FTP EC2에 업로드할 경우, 그대로 S3에 자동 동기화시키는 등 고속화 외에도 사용자의 편리성을 높일 수 있다.