[레포트] AWS 스토리지 마이그레이션 서비스 및 대규모 데이터 전송 사례 #AWSSummitOnlineKorea

이번 AWS Summit Online Korea 세션 중 "AWS 스토리지 마이그레이션 서비스 및 대규모 데이터 전송 사례" 를 정리한 글입니다!
2020.05.14

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

안녕하세요! Classmethod 주식회사 엔지니어 이병현이라고 합니다!

이번 AWS Summit Online Korea의 세션을 들었던 내용을 정리해보려 합니다.

AWS Summit Online Korea AWS의 세션 영상, 슬라이드 자료 등 도움이 되는 것들이 많이 있으므로 관심이 있으시다면 신청하셔도 좋을 것 같습니다. 지금 신청하셔도 볼 수 있습니다! 한국뿐만 아니라 미국&캐나다, 호주&뉴질랜드, 아세안, 인도의 세션들도 같이 보실 수 있습니다.

제가 정리한 세션은 김용기 님 (솔루션즈 아키텍트, AWS) 의 AWS 스토리지 마이그레이션 서비스 및 대규모 데이터 전송 사례 입니다.

온프레미스 환경에서 스토리지 종류

IDC 스토리지

  • 블록 스토리지
    • 하나의 서버가 하나의 볼륨을 마운트 하는 방식입니다.
    • LUN(Logical Unit Number)이 연결되어있어서 어플리케이션이 해당 볼륨을 마운트해서 읽고 쓸 수 있습니다.
  • 파일 스토리지
    • NAS(Network Attached Storage)로 볼 수 있습니다.
    • 여러 서버들이 하나의 볼륨을 동시에 공유해 사용하는 방식입니다.
  • 오브젝트 스토리지
    • 비교적 최근에 나온 방식입니다.
    • HTTP 프로토콜로 데이터에 접근하는 방식입니다.

Cloud Storage

  • AWS 의 서비스
    • Amazon EBS (블록 스토리지 서비스)
    • Amazon EFS (파일 기반 스토리지 서비스)
    • Amazon FSx (파일 기반 스토리지 서비스)
    • Amazon S3 (오브젝트 스토리지 서비스)

데이터 마이그레이션에 대한 고민이 생기는 이유

  • 온프레미스에서 Cloud로 어떻게 데이터를 넘길지에 대해 생각해야 하기 때문입니다.
  • 데이터 이관은 쉬운 작업이 아니라고 합니다.
  • 동기화를 위해 서비스 다운 타임이 필요할 수도 있습니다.
  • 서비스 담당자라면 어떤 마이그레이션 서비스가 빠른지 생각할 수밖에 없습니다.

데이터 전송을 위한 5가지 고려사항

1) 어떤 데이터를 어느 스토리지로?

2) 한 번만 전송? 또는 지속적 동기화?

3) 단방향? 또는 양방향?

  • 온프레미스에서 클라우드로 한 번만 가면 되는지, 다시 클라우드에서 온프레미스로 옮겨져야 하는지를 고려해야 합니다.

4) 데이터양 및 가능한 전송시간은?

  • 이 사항에 따라서 사용해야 할 서비스가 달라질 수 있습니다.

5) 네트워크 대역폭 제한은?

  • 네트워크의 한계, 최저의 속도, 즉 네트워크 구간의 병목(Bottleneck)이 나는 구간의 속도를 알아야 합니다.

네트워크 대역폭 속도와 데이터 용량 관계

  • 대역폭에 따라 걸리는 시간의 차이가 있습니다.
  • AWS Direct Connect 은 1 Gbps와 10 Gbps를 제공합니다.
  • 10 PB는 124일이 걸리기 때문에 네트워크로는 거의 불가능 합니다.

-> 따라서 10 PB 같은 대용량 데이터는 AWS Snowball 오프라인 전송 서비스를 권고합니다.

처음은 Snowball로 큰 볼륨의 데이터를 오프라인으로 이동시킨 후 증분 데이터만 네트워크로 전송하는 혼합 이관전략도 가능합니다.

AWS 마이그레이션 서비스

오프라인 전송

벌크 데이터, 파일들, 오브젝트들, HDFS(Hadoop Distributed File System), 데이터베이스들에 사용합니다.

  • AWS Snowball Edge
  • AWS Snowmobile

전용장비를 이용한 오프라인 전송입니다.

온라인 전송

  • AWS DataSync (빠른 전송)
  • AWS Transfer for SFTP (파일 교환)
  • AWS Direct Connect (직접 연결)

AWS Direct Connect는 높은 대역폭을 제공해줍니다. 1 G, 10 G를 제공해주는 네트워크 서비스입니다.

데이터베이스와 서버 마이그레이션

  • AWS Database Migration Service
  • CloudEndure an AWS Company

데이터뿐만 아니라 데이터베이스와 서버 자체를 마이그레이션 하는 경우에 사용하는 서비스입니다.

스트리밍 데이터

  • Amazon Kinesis family
    • Data Firehose
    • Data Streams
    • Video Streams

스트리밍 데이터를 그대로 온프레미스, 클라우드에서 받아서 AWS Storage로 저장을 할 수 도 있습니다.

하이브리드 게이트웨이

  • AWS Storage Gateway family (APN partner product)

데이터 마이그레이션 서비스

AWS Transfer for SFTP

  • 온프레미스 파일들을 바로 S3로 저장 가능합니다.
  • 관리형 서비스 (설치가 필요 없습니다.)
  • 클라이언트는 FileZila, WinSCP 등을 사용합니다.
  • AWS Transfer for STFP 에 S3 연결합니다.
  • 데이터 저장 타겟이 S3 (오브젝트로 저장)
  • SSH 키 기반 인증, 패스워드 인증을 사용합니다.
  • API Gateway, Lambda 등 AWS 서비스와 연결 가능합니다.

AWS DataSync

  • S3와 EFS에 데이터를 전송할 수 있는 데이터 동기화 서비스입니다.
  • 네트워크를 통해 데이터 전송합니다.
  • 쉽고 빠르게 데이터를 보낼 수 있습니다.
  • 데이터 동기화 기능이 있습니다.
  • 클라우드 데이터를 통해 온프레미스의 데이터가 파손되었을 시에 복구 가능합니다.

AWS Storage Gateway

온프레미스에서 클라우드 스토리지에 가상으로 접근합니다.

  • 온프레미스 백업, 스토리지 파일 공유, 애플리케이션이 클라우드에 낮은 지연시간으로 접근합니다.

The AWS Storage Gateway family

  • 파일 게이트웨이
    • 로컬 캐시 기능 파일 어플리케이션, Amazon S3의 오브젝트 저장 혹은 접근합니다.
    • NFS(Network File System)/SMB(Server Message Block) -> S3에 오브젝트 형식으로 저장합니다.
  • 볼륨 게이트웨이
    • 온프레미스 블록스트리지 백엔드로 Amazon EBS 스냅샷과 클론, 로컬캐시 기능 제공합니다.
    • iSCSI(Internet Small Computer System Interface) 프로토콜을 통해 블록스트리지를 서버에서 마운트하여 사용할 수 있게 합니다.
    • 마운트 된 데이터는 EBS 스냅샷으로 저장함, 이 스냅샷을 EC2에서 마운트하여 사용 가능합니다.
  • 테잎 게이트웨이
    • 물리 테이프 백업을 대체하여 클라우드 스토리지 저장소로 활용
    • VTL(Virtual Tape Library) 형태로 저장됩니다.

위 3가지의 게이트웨이를 Storage Gateway에 vm 형태로 제공하면 https로 암호화하여 AWS 서비스를 사용 가능합니다.

AWS Snowball Edge

오프라인 전송으로 별도의 하드웨어 장비를 가지고 IDC에서 데이터를 저장한 후 차를 통해 운반하고 AWS Center 에서 데이터를 바로 S3로 옮겨주는 서비스입니다.

AWS Snowball 종류

  • Snowball
  • Snowball Edge
  • Snowball Mobile

한국에서는 Snowball Edge를 주로 사용합니다.

  • Snowball은 데이터 저장장치만 제공합니다.
  • Snowball Edge 저장장치 + EC2 인스턴스가 내장되어 있습니다.
  • Snowball Mobile은 대용량의 컨테이너를 통해 넘어가기 때문에 대단위의 전송입니다.

AWS Snowball Edge Compute or Storage Optimized

  • 42 또는 100TB 스토리지 용량
  • 종단 데이터 암호화
  • 견고한 8.5G 충격보호 케이스
  • 비와 먼지 방지
  • 로컬 컴퓨트, 메시징, 캐싱을 위한 AWS Greengrass(IOT와의 연결성을 위함) 지원
  • 에지 컴퓨트를 위한 EC2/AMI 지원
  • GPU(Optional)

스토리지 전송 서비스 비교

DataSync Transfer for STFP Snowball Edge Storage Gateway
전송 스토리지 S3, EFS, FSx S3 S3 S3, EBS, Backup
방향성 양방향 양방향 단방향 양방향
데이터 용량 S3 무제한 EFS 페타단위 S3 무제한 하드웨어 전송 S3 무제한 EBS 16TB
전송속도 네트워크 의존 네트워크 의존 하드웨어 전송 네트워크 의존
  • 클라우드가 S3인 경우 어떤 서비스 사용해도 가능합니다.
  • EFS, FSx의 경우 DataSync를 사용하는 것이 직접 보내기 때문에 편리합니다.
  • EBS로 보낼 경우 Storage Gateway가 직접 보내기 때문에 편리합니다.
  • 양방향, 단방향의 경우를 고려합니다.
  • 대용량 데이터의 경우 Snowball Edge 사용을 권고합니다.

대량의 데이터 전송 사례

롯데의 통합 온라인몰

고객 당면 과제

  • 서비스 개발을 위해 제품 이미지 업로드 필요
  • 제품 이미지 파일들을 최대한 빨리 클라우드로 전송
  • 파일 개수: 약 140,000,000 개
  • 전체 용량: 17TB
  • 각 파일 크기: 대부분 200K 이하, 일부 몇 메가 단위
  • 원본 스토리지: IDC에 있는 NAS 스토리지
  • 요구 사항:
    • S3에서 신규 파일 이름으로 변경 필요
    • 파일 경로 및 이름 목록 별도 보유

작은 파일들을 옮기는 것이 가장 문제가 되었습니다.

Direct Connect를 사용하고 있었지만 만약 데이터를 Direct Connect로 보낸다면 너무 많은 대역폭을 사용하기 때문에 Snowball Edge 로 옮기자고 결론이 나왔습니다.

1차 시도

  • Snowball Edge HW 설치 in IDC(Internet Data Center)
  • AWS cli, Snowball Edge, Python 설치
  • Snowball Edge unlock 작업
  • 복제수행: aws s3 cp file1.jpg s3://10.0.0.1:8080/bucket/newfile1.jpg
  • 5일 동안 2,000만개 파일 전송
  • Snowball Edge 반납

Snowball Edge 절차 및 소요 시간

  1. AWS Console로 신청 (1~3 일 소요)
  2. IDC로 Snowball Edge가 오게 되고 연결을 함 (1~2일 소요)
  3. 데이터 복제 (소요 시간은 파일 전송 속도에 따름)
  4. AWS Console로 반납 신청하면 수거해 감 (1~2일 소요)
  5. S3 버킷으로 전송 (1~N 일 소요)

데이터 복제를 하는 시간도 많이 걸리지만 S3 버킷으로 전송하는 시간이 오래 걸린다고 합니다.

1차 결과

  • Size: 2408.5 GB
  • Objects: 19,567,430
  • Transfer Rate: 6.4 MB/s

2천만개에 5일 -> 1억 4천만개면 35일 -> S3 업로딩 시간 35일

전체 소요시간이 70일 예상이 되어 개선방안을 찾게 됩니다.

해결 방법

스크립트

  • 커넥션 타임을 줄였습니다.
  • Tar를 사용하여 뭉쳤습니다.
  • 뭉친 데이터는 메모리에 저장하였습니다.

커넥션 타임을 줄이기 위해 파일들을 tar 라이브러리로 뭉치게 됩니다. 이러한 데이터는 메모리상에 저장할 수 있도록 하였다고 합니다.

남아있는 시간 5일과 2차 Snowball Edge가 오는 날짜를 합쳐서 약 일주일 동안 스크립트를 작성하였다고 합니다.

2차 시도

  • Tar 파일 정상적으로 압축 성공합니다.
  • Smart_open의 메타데이터 기록 미지원
  • But, Tar 파일 업로드 후, Snowball Edge안에서 메타데이터 "snowball-auto-extract=true" 기록을 실패합니다.
  • 로컬디스크에 tar 파일 생성 후, Snowball Edge로 업로드 할 때 메타데이터 기록하여 성공합니다.

Smart_open이라는 라이브러리를 사용했는데 메타데이터가 기록되지 않는 것을 발견하게 됩니다.

메타데이터가 기록이 되지 않은 부분을 해결하기 위해 온프레미스 내에서 압축을 한 뒤 메타태그를 붙이는 방식으로 해결하였다고 합니다.

2차 결과

  • Size: 14,708 GB
  • Objects: 1,080
  • Transfer Rate: 169.1 MB/s

7배의 시간을 줄여 2주 내에 데이터 전송을 완료하게 됩니다.

결과 비교

Targer 파일 개수 파일 용량 NAS -> Snowball Edge
소요시간
Snowball Edge-> S3 소요시간 실패 오브젝트
1차 성능 19,567,430 2,408 GB 5일 113 시간(4D + 17H) 954
2차 성능 119,577,235 14,708 GB 5일 26시간 0
  • 7배 정도의 성능이 향상되었습니다.
  • 고객분께서 서비스 개발에 집중할 수 있게 되었습니다.
  • 대량의 작은 파일들을 Snowball Edge로 클라우드에 올린 사례입니다.

정리

  • 데이터마이그레이션시 고려사항
    • 클라우드에서 목표 스토리지
    • 온라인 또는 오프라인 전송
    • 네트워크 대역폭에

세션 처음에 나온 데이터 전송을 위한 5가지 고려사항 을 기반으로 하여 전략을 세우고, 자신의 상황과 AWS가 제공하는 마이그레이션 서비스를 매칭하여 어떤 서비스가 어울리지 고려 해야합니다.

  • 다양한 마이그레이션 서비스
    • DataSync
    • Transfer for SFTP
    • Snowball Edge
    • Storage Gateway


  • 작은 파일이 많을 때는 대용량으로 뭉쳐서 전송해야 합니다.
    • 빠른 시간내에 클라우드로 전송하기 위해 필요합니다.

후기

데이터를 온프레미스에서 클라우드로 이관할 시 이러한 생각과 작업이 필요하다는 것을 알게 되어 좋았네요. 단순히 어떤 서비스가 있는지 나열하는 것만이 아니라 실제 사례를 들어주니 잘 와 닿았던 것 같습니다. 공부가 많이 되었습니다. ?

정리한 내용이 잘 전달되었으면 좋겠네요. 읽어주셔서 감사합니다!