빅데이터 세트 전송

업데이트: 2017년 10월 11일

이 문서는 데이터를 Cloud Storage로 전송하는 방법에 대한 높은 수준의 개요를 제공하고 사용자가 자신에게 가장 적합한 방법을 선택할 수 있게 도와주며 gsutil 도구를 사용하여 디지털 네트워크를 전송할 때의 권장사항을 설명합니다.

기존 비즈니스 작업을 Google Cloud Platform(GCP)로 이전할 때 Cloud Storage로 대용량 데이터를 전송해야 하는 경우가 많습니다. 가용성이 뛰어나고 내구성이 있는 객체 저장 서비스인 Cloud Storage는 버킷에 저장되는 파일 수 제한이 없지만 각 파일의 최대 크기는 5TB를 초과할 수 없습니다. Cloud Storage는 BigQueryCloud Dataflow와 같은 다른 GCP 서비스와 함께 작동하도록 최적화되어 있으므로 사용자는 더 광범위한 GCP 아키텍처를 사용하여 클라우드 기반 데이터 엔지니어링 및 분석을 손쉽게 수행할 수 있습니다.

이 문서의 내용을 최대한 활용하려면 다음 질문에 대한 대략적인 대답을 제시할 수 있어야 합니다.

  • 전송해야 하는 데이터의 양은 얼마인가요?
  • 데이터는 어디에 있나요? 예를 들어, 데이터 센터에 있나요? 아니면 다른 클라우드 제공업체에 있나요?
  • 데이터 위치에서 사용 가능한 네트워크 대역폭은 얼마나 되나요?
  • 데이터를 한 번에 전송해야 하나요, 아니면 주기적으로 전송해야 하나요?

비용 추정

현재는 Cloud Storage로 데이터를 이동할 때 수신 트래픽 비용이 청구되지 않습니다. gsutil 도구와 저장소 전송 서비스는 모두 무료로 제공됩니다. 최신 가격 세부정보는 GCP 네트워크 가격 책정 페이지를 참조하세요.

데이터가 전송되면 저장소, 네트워크, 작업을 기준으로 Cloud Storage 사용료를 지불합니다. 또한 다양한 저장소 등급의 비용 영향을 고려하고 사용 사례에 맞는 저장소 등급을 선택해야 합니다. Cloud Storage API 인터페이스는 클래스와 관계없이 모든 저장소 클래스에 동일한 API 액세스를 허용합니다. 자세한 내용은 Cloud Storage 가격 책정을 참조하세요.

Transfer Appliance의 가격에는 사용료, 배송비, 연체료가 포함됩니다. 이 어플라이언스에서 Cloud Storage로 내부 데이터화하는 작업은 무료로 제공됩니다. Transfer Appliance를 통해 데이터를 전송하면 일반적인 Cloud Storage 사용 요금을 지불하게 됩니다. 자세한 내용은 Transfer Appliance의 가격 정책을 참조하세요.

데이터 전송 솔루션으로 인해 Google 외부 비용이 발생할 수도 있습니다. 이 비용에는 다음이 포함되지만 이에 국한되지는 않습니다.

  • 소스 제공업체의 송신 및 운영 요금
  • 온라인 또는 오프라인 전송에 대한 타사 서비스 요금
  • 타사 네트워크 요금

올바른 데이터 전송 방법 선택

다음 다이어그램은 Cloud Storage로 데이터를 전송하는 각각의 방법을 보여줍니다.

Cloud Storage에 데이터 가져오기

  • X축은 데이터 소스가 GCP에 액세스할 수 있는지 또는 얼마나 '가까이 있는지'를 나타냅니다. 여기서는 성능이 뛰어난 인터넷 연결이 적용되는 소스는 거리가 멀지 않으며 인터넷 연결이 제공되지 않는 소스는 멀리 떨어져 있습니다.
  • Y축은 전송되는 데이터 양을 나타냅니다.

다음 다이어그램은 이 문서의 나머지 부분을 탐색하는 데 도움을 주며 도구 선택 프로세스를 안내합니다.

도구 선택

'가까움' 정의

데이터가 GCP와 얼마나 '가까이 있는지'에 대한 구체적인 정의는 없습니다. 이는 데이터 크기, 네트워크 대역폭, 사용 사례의 특성에 따라 결정됩니다.

다음 다이어그램은 데이터 크기와 네트워크 대역폭을 고려하여 데이터 전송 시간을 예측하는 데 도움이 됩니다. 항상 특정 사용 사례에 맞게 전송 시간을 분석해야 합니다. 하나의 워크플로에서 3시간에 걸쳐 데이터 1TB를 전송하는 것은 납득이 되지 않을 수 있지만 다른 워크플로에서는 30시간에 걸쳐 동일한 양의 데이터를 전송하는 것이 가능할 수 있습니다.

전송 시간 예측

데이터를 GCP에 더 가깝게 만들기

이 섹션에서는 두 가지 기본 요소인 데이터 크기와 네트워크 대역폭을 사용하여 '가까운 정도'를 개선할 수 있는 방법에 대해 설명합니다.

데이터 크기 줄이기

소스에서 데이터의 중복을 제거하고 압축하여 데이터 크기를 줄일 수 있습니다. 데이터 압축 및 중복 제거를 수행하면 네트워크를 통해 전송해야 하는 양이 최소화되므로 전송하는 데 걸리는 시간과 저장에 드는 비용이 모두 줄어듭니다. 데이터에 작은 파일이 많이 포함되어 있으면 tar -cvzf와 같은 도구를 사용하여 압축하고 그룹화하여 gsutil이나 저장소 전송 서비스 사용 시 전송 속도를 크게 향상시킬 수 있습니다.

데이터 압축은 CPU와 시간이 많이 사용될 수 있는 작업이므로 이에 따른 단점을 고려해야 합니다. 파일을 보관용으로 저장하는 경우 Cloud Storage에 파일을 전송하기 전에 압축하는 것이 좋습니다. 앱에서 전송된 파일을 사용하려는 경우 Cloud Storage에서 데이터 압축을 해제해야 할 수 있습니다. 이 경우 파일의 압축을 해제하여 전송해야 합니다.

일반적으로 텍스트 데이터를 압축하면 압축 비율이 4:1이 될 수 있습니다. JPEG 또는 MP3와 같은 바이너리 및 멀티미디어 데이터에 대한 손실 압축 알고리즘은 일반적으로 크기를 줄이는 데 가장 좋은 옵션입니다.

가능하면 Avro 파일과 같이 원래 압축되어 있는 압축 파일 형식을 사용하세요.

네트워크 대역폭 늘리기

네트워크 대역폭을 늘리는 방법은 GCP 연결 방법에 따라 다릅니다. 다음 세 가지 방법으로 GCP에 연결할 수 있습니다.

  • 공개 인터넷 연결
  • 직접 피어링
  • Cloud Interconnect

공개 인터넷 연결로 연결

공개 인터넷 연결을 사용하는 경우 인터넷 서비스 공급업체(ISP)의 용량과 라우팅에 제한이 있기 때문에 네트워크 처리량을 예측할 수 없습니다. ISP는 제한된 서비스수준계약(SLA)을 제공하거나 아예 제공하지 않을 수도 있습니다. 하지만 이런 연결은 상대적으로 비용이 저렴합니다.

직접 피어링으로 연결

직접 피어링을 사용하여 Google 네트워크에 액세스하여 네트워크 홉을 최소화할 수 있습니다. 이 옵션을 사용하면 사용자 네트워크와 Google 에지 접속 지점(POP) 간에 인터넷 트래픽을 교환할 수 있습니다. 이렇게 하면 사용자의 네트워크와 Google 네트워크 사이의 홉 수가 감소합니다.

Cloud Interconnect로 연결

Cloud Interconnect는 Cloud Interconnect 서비스 제공업체 중 하나를 통해 직접 GCP 연결을 제공합니다. 이 서비스는 대규모 데이터 전송에 더 일관된 처리량을 제공하며 일반적으로 네트워크 가용성 및 성능에 대한 SLA가 포함되어 있습니다. 자세히 알아보려면 서비스 공급업체에 직접 문의하세요.

GCP로 데이터 전송

다른 클라우드 서비스 또는 온프레미스 데이터 센터에서 데이터를 전송할 수 있습니다. 사용하는 전송 방법은 사용자의 데이터가 GCP와 얼마나 '가까이 있는지'에 따라 다릅니다. 이 섹션에서는 다음 옵션에 대해 설명합니다.

  • 클라우드에서 전송: 매우 가까움
  • 코로케이션 또는 온프레미스 저장소에서 전송: 가까움
  • 멀리서 전송

클라우드에서 전송

데이터 소스가 Amazon S3 버킷, HTTP/HTTPS 위치 또는 Cloud Storage 버킷인 경우 저장소 전송 서비스를 사용하여 데이터를 전송할 수 있습니다.

코로케이션 또는 온프레미스 저장소에서 전송

GCP에 상대적으로 '가까이 있는' 코로케이션 시설 또는 온프레미스 데이터 센터에서 작업하는 경우 gsutil 또는 타사 도구를 사용하여 데이터를 전송합니다.

gsutil

gsutil 도구는 Windows, Linux, Mac에 사용할 수 있는 오픈소스 명령줄 유틸리티입니다.

  • 다중 스레드/처리: 많은 파일을 전송할 때 유용합니다.
  • 동시 복합 업로드: 큰 파일을 분할하여 청크를 동시에 전송하고 대상에서 구성합니다.
  • 재시도: 일시적인 네트워크 장애와 HTTP/4295xx 오류 코드에 적용됩니다.
  • 재개: 오류 발생 후 전송을 재개합니다.
제한사항

gsutil 도구에는 네트워크 제한 기능이 기본적으로 지원되지 않습니다. Trickle과 같은 도구를 함께 사용하여 네트워크 레이어에서 트래픽을 제어해야 합니다. 운영체제 수준의 권한이 있고 하위 수준 미세 조정에 자신이 있는 경우 TCP 매개변수를 조정하거나 전송 처리 속도를 높이면 전송 시간을 개선할 수 있습니다.

gsutil 도구는 일회성 전송이나 수동 시작 전송에 유용합니다. 지속적인 데이터 전송 파이프라인을 구축해야 하는 경우 gsutil크론 작업으로 실행하거나 Airflow와 같은 다른 워크플로 관리 도구를 사용하여 작업을 조정해야 합니다.

데이터 암호화

gsutil 도구는 전송 레이어 암호화(HTTPS)를 사용하여 전송 중인 트래픽을 암호화합니다. Cloud Storage는 데이터를 암호화된 형식으로 저장하고 사용자가 자체 암호화 키를 사용할 수 있도록 합니다. 보안 권장사항은 보안 및 개인정보 보호 고려사항을 참조하세요.

전송 다중 스레딩

단일 스레드 gsutil 프로세스를 사용하여 네트워크를 통해 여러 파일을 전송하는 경우, 전송에 사용 가능한 모든 대역폭이 사용되지 않을 수 있습니다. 다음 다이어그램은 파일 4개를 단일 스레드로 전송하는 방법을 보여줍니다. 각 파일은 이전 파일 전송이 완료될 때까지 기다려야 하므로 사용하지 않은 대역폭을 낭비하게 됩니다.

단일 스레드 전송

파일을 동시에 복사하면 사용 가능한 대역폭을 더 많이 사용할 수 있으며 데이터 전송 속도를 높일 수 있습니다. 다음 다이어그램은 파일 4개를 다중 스레드로 전송하는 방법을 보여줍니다.

다중 스레드 전송

기본적으로 gsutil 도구는 단일 스레드를 사용하여 파일 여러 개를 전송합니다. 멀티 스레드 복사본을 사용하려면 cp 명령어를 실행할 때 -m 플래그를 사용합니다.

다음 명령어는 소스 디렉토리의 모든 파일을 Cloud Storage 버킷에 복사합니다. [SOURCE_DIRECTORY]를 디렉토리로 바꾸고 [BUCKET_NAME]을 Cloud Storage 버킷 이름으로 바꿉니다.

gsutil -m cp -r [SOURCE_DIRECTORY] gs://[BUCKET_NAME]
동시 업로드 구성

대용량 파일을 업로드하려는 경우 gsutil은 동시 복합 업로드 기능을 제공합니다. 이 기능은 각 파일을 여러 개의 작은 구성요소로 분할하고 이 구성요소를 동시에 업로드합니다. 다음 다이어그램은 대용량 파일 한 개를 업로드하는 것과 동시 복합 방법으로 같은 파일을 업로드하는 것의 차이점을 보여줍니다.

대용량 파일 한 개 업로드

동시 복합 업로드

동시 복합 업로드 사용 시 이점과 단점에 대한 자세한 내용은 cp 명령어 문서를 참조하세요.

TCP 매개변수 조정

다음 TCP 매개변수를 조정하여 TCP 전송 성능을 향상시킬 수 있습니다. 이 설정을 변경하기 전에 운영체제 문서를 읽고 전문가에게 문의하세요.

  • TCP 창 확장(RFC 1323)

    이 설정을 사용하면 확장 계수를 사용하여 TCP 창 크기가 16비트를 초과하도록 할 수 있습니다. 이 설정을 통해 데이터 전송에 사용 가능한 대역폭을 더 많이 사용할 수 있습니다. 이 작업을 수행하려면 발신자와 수신자 모두 TCP 창 확장을 지원해야 합니다.

  • TCP 타임스탬프(RFC 1323)

    이 설정을 사용하면 왕복 시간을 정확하게 측정할 수 있으므로 TCP 성능을 향상시키는 데 도움이 됩니다.

  • TCP 선택적 확인(RFC 2018)

    이 설정은 발신자가 수신자에게 없는 데이터만 다시 전송할 수 있음을 나타냅니다.

  • 버퍼 크기 전송 및 수신

    이 설정은 상대방에게 확인을 보내기 전에 주고받을 수 있는 데이터 양을 결정합니다. 대역폭 사용률이 제한되고 있다고 판단될 경우 이 설정을 늘려볼 수 있습니다.

전송 처리 속도 향상

효율적인 네트워크 대역폭을 늘리면 데이터 전송 처리 속도가 향상될 수 있습니다. 다음 gsutil 성능 진단 도구 명령어를 실행하면 네트워크 지연 시간을 테스트할 수 있습니다. [BUCKET_NAME]을 Cloud Storage 버킷 이름으로 바꿉니다.

gsutil perfdiag gs://[BUCKET_NAME]

gsutil을 사용하여 운영체제 프로세스, 스레드 등의 다양한 조합을 테스트해 볼 수 있습니다. gsutil 도구를 사용하면 네트워크에 가장 적합한 구성 옵션을 더 잘 이해할 수 있으며, 작은 파일 여러 개를 전송할지 또는 큰 파일 몇 개로 전송할지 등의 여부를 판단할 수 있습니다.

다음 옵션을 사용하여 네트워크 처리량을 정의할 수 있습니다.

  • -c 옵션은 프로세스 수를 설정합니다.
  • -k 옵션은 프로세스당 스레드 수를 설정합니다.
  • -n 옵션은 객체 수를 설정합니다.
  • -s 옵션은 각 객체의 크기를 설정합니다.
  • -t wthru_file 옵션은 로컬 디스크에서 파일을 읽어 로컬 디스크의 읽기 성능을 측정합니다.

예를 들어 다음 명령어는 프로세스 2개와 스레드 10개를 사용하여 크기가 각각 10MB인 파일 100개를 업로드합니다. 이 명령어에는 다중 스레딩을 위한 -m 옵션과 동시 복합 업로드를 위한 -p 옵션이 포함되어 있습니다. [BUCKET_NAME]을 Cloud Storage 버킷 이름으로 바꿉니다.

gsutil perfdiag -c 2 -p both -t wthru_file -s 10M -n 100 -k 10 gs://[BUCKET_NAME]

다음은 쓰기 처리량 값(초당 Mbit)을 포함하는 샘플 진단 출력을 보여줍니다.

------------------------------------------------------------------------------
                        Write Throughput With File I/O
------------------------------------------------------------------------------
Copied 100 10 MiB file(s) for a total transfer size of 1000 MiB.
Write throughput: 135.15 Mbit/s.
Parallelism strategy: both

사용자의 네트워크와 Google 네트워크 간 홉 수를 확인하려면 자율 시스템(AS) 번호 플래그 세트와 함께 traceroute 명령줄 도구를 사용하면 됩니다. 다음 명령어는 Linux 환경에서 작동합니다.

traceroute -a test.storage-upload.googleapis.com

GCP를 비롯한 대부분의 Google 서비스에 대한 AS 번호인 AS15169를 찾습니다. 다음 샘플 출력은 Google 네트워크에 진입하려면 6홉이 걸림을 보여줍니다.

traceroute to storage.l.googleusercontent.com (74.125.68.128), 64 hops max, 52 byte packets
     1  [AS0] XXXX.XXXXX.XXX (192.168.2.1)  1.374 ms  1.094 ms  0.982 ms
     2  [AS0] XXXX.XXXXX.XXX (192.168.1.1)  1.582 ms  1.932 ms  1.858 ms
       ...
     6  [AS15169] 108.XXX.XXX.XXX (108.XXX.XXX.XXX)  17.281 ms
       ...

성능 진단 도구 옵션의 전체 목록을 보려면 gsutil 도구 문서를 참조하세요.

타사 도구

gsutil 도구는 많은 워크플로에 적합합니다. 하지만 고급 네트워크 수준 최적화나 지속적인 데이터 전송 워크플로에는 고급 도구를 더 많이 사용하려는 경우가 있을 수 있습니다. 고급 도구에 대한 자세한 내용은 Google 파트너를 참조하세요.

알파벳 순서로 표시된 다음 링크는 다양한 옵션 중 일부를 강조합니다.

  • Google용 Aspera On Demand - Aspera의 특허 취득 프로토콜을 기반으로 하며 대규모 워크플로에 적합합니다. 요청 시 구독 라이선스 모델로 제공됩니다.

  • Bitspeed - 대용량 파일 또는 많은 파일을 전송하는 데 적합한 최적화된 파일 전송 프로토콜을 제공합니다. 이 솔루션은 물리적 및 가상 어플라이언스로 제공되며 기존 네트워크 및 파일 시스템에 플러그인할 수 있습니다.

  • TervelaCloud FastPath - GCP 안팎으로 관리되는 데이터 스트림을 빌드하는 데 사용할 수 있습니다. 자세한 내용은 Cloud FastPath를 사용하여 데이터 스트림 만들기를 참조하세요.

  • Komprise - 온프레미스 저장소의 데이터를 분석하여 사용률이 낮은 데이터를 식별한 후 Cloud Storage로 이동하는 데 사용할 수 있습니다. 자세한 내용은 Komprise를 사용하여 사용률이 낮은 데이터를 Cloud Storage에 보관을 참조하세요.

  • Signiant - 어디서나 파일을 주고받을 수 있는 Media Shuttle을 SaaS(Software as a Server) 솔루션으로 제공합니다. 또한 Signiant는 고도로 최적화된 프로토콜을 기반으로 한 자동 확장 유틸리티인 Flight와 지리적으로 분산된 위치에서 대규모 전송을 수행하기 위한 자동화 도구인 Manager+Agents를 제공합니다.

멀리서 데이터 전송

데이터가 GCP '가까이' 있지 않으면 오프라인 데이터 전송이 필요합니다. 오프라인 전송을 사용하면 물리적 저장소 미디어에 데이터를 로드하고 GCP와의 네트워크 연결이 양호한 내부 데이터화 지점으로 전달한 다음 그 지점에서 데이터를 업로드할 수 있습니다.

Transfer Appliance 및 여러 타사 서비스 제공업체는 요구사항 확인 후 선택할 수 있는 다양한 전송 옵션을 제공합니다. 주요 선택 기준은 두 가지입니다.

  • 전송 크기
  • 데이터의 동적 특성

Transfer Appliance는 대용량 데이터 전송에 적합합니다. 하지만 동적 데이터가 많은 경우 Zadara Storage가 더 나을 수 있습니다.

Google 담당자에게 문의하여 가장 좋은 선택을 할 수 있도록 도움을 받으세요.

다음 단계

이 페이지가 도움이 되었나요? 평가를 부탁드립니다.

다음에 대한 의견 보내기...