[AWS DEA] 데이터 수집 - 2

 

 

지난 포스팅에는 데이터 수명 주기, 데이터 수집 시 고려사항에 대해 알아보았습니다. 이번에는 데이터 수집과 빅데이터의 기본 개념에 대해 이해해보고 데이터 수집 시 어떤 AWS 서비스를 사용할 수 있는지 알아보겠습니다. 

 

 

1. 데이터 수집에 대해

데이터 수집 프로세스는 생산자에서 시작됩니다. 생산자는 데이터베이스, 모바일 디바이스, 애플리케이션 등 다양하게 있으며 생산자가 데이터를 생성하면 수집 도구가 데이터를 수집합니다. EC2에 호스팅되는 애플리케이션 부터 AWS 데이터베이스, AWS Lambda와 같은 컴퓨팅 서비스 등이 수집된 데이터의 소비자가 될 수 있습니다.

 

1.1 AWS 데이터 수집 예시

다음과 같이 데이터 수집을 해야하는 상황이 있습니다.

  • 애플리케이션이 파일이 S3 데이터 레이크에 기록됩니다.
  • 데이터 레이크는 데이터 사이언스 팀과 데이터 분석 팀이 액세스 해야됩니다.
  • 지속적으로 데이터(고객 상호 작용 및 고객 리뷰)를 캡처한 다음 탭으로 구분된 값(TSV) 파일 형식으로 S3버킷에 기록됩니다.

데이터 엔지니어는 어떻게 파이프라인을 설계해야 할까요?

  1.   Amazon Athena
    • S3에 데이터가 저장되므로 Amazon Athena에서 표준 SQL을 사용해 데이터를 쿼리 및 분석 가능합니다.
    • 이를 위해 먼저 S3 버킷의 TSV 데이터를 Athena에 등록 후 데이터세트에 대해 임시 쿼리를 실행합니다.
    • 이럴 경우 쿼리 최적화된 열 기반 파일 형식인 Apache Parquet로 변환할 수도 있습니다.
  2.   Amazon Redshift
    • 데이터 분석팀에서 단순 조회 쿼리가 아닌 하위 집합을 필요로 한다면 Amazon Redshift를 활용합니다.
    • TSV데이터를 Redshift에 삽입하고 Redshift Spectrum을 사용하여 S3 데이터 레이크 내 데이터에 대한 데이터 웨어하우스 쿼리를 결합할 수 있습니다.
  3. Amazon Glue
    • 새로운 데이터가 S3에 도착하면 Athena 테이블을 업데이트하기 위해 AWS Glue와 AWS Glue 크롤러를 활용합니다.
  4. Amazon Redshift 클러스터
    • 여러 소스로부터 대량의 파일을 수신하고 있다고 가정했을 때, 매일 모든 파일이 단일 gzip 파일로 병합 및 압축됩니다. 이 파일은 S3 버킷에 업로드됩니다. 그 후 Amazon Redshift 클러스터에 로드됩니다.
    • COPY명령은 Redshift 대큐모 병령 처리 아키텍처를 사용하여 S3 파일 데이터를 병렬로 읽고 로드할 수 있습니다.
    • 따라서 파일 수가 Redshift 클러스터 내 슬라이스 수의 배수가 되도록 gzip 파일을 분할하면 병렬로 슬라이스에 로드할 수 있어서 전체 로드 시간이 향상될 수 있습니다.
    • 데이터를 여러 파일로 분할하고 테이블에 배포 키를 설정 후 병렬 처리를 사용할 수 있습니다.

위의 내용처럼 해당 시험에 좋은 결과를 얻으려면 데이터 분석을 위한 일반적인 사용 사례, 사례와 관련한 AWS 서비스 및 구현 하는 방법과 어떤 서비스를 선택해야 효율적인지 알고 있어야 합니다.

 

1.2 그 외 AWS 데이터 엔지니어링 관련 서비스

  1. Amazon EMR
    • 데이터 엔지니어링, 데이터 과학 개발 및 협업을 위해 방대한 양의 데이터를 쉽고 빠르게 처리할 수 있습니다.
  2. Amazon Kinesis
    • 데이터 레이크에 들어오는 스트리밍 데이터를 수집, 처리, 분석하고 실시간으로 대응할 수 있습니다.
    • Amazon MSK(Amazon Managed Streaming for Apache Kafka)도 같은 서비스를 제공합니다.
  3. Amazon OpenSearch Service
    • 애플리케이션 모니터링, 로그 분석 및 클릭스트림 분석을 위해 거의 실시간으로 데이터를 검색, 탐색, 필터링, 집계 및 시각화할 수 있습니다.

 

2. 데이터에 대한 이해

위에서 살펴봤듯이 수집되는 데이터에 대해 이해하는 것이 중요합니다. 데이터를 이해해야 정확하고 효율적인 솔루션을 결정할 수 있습니다. 다음에는 데이터 엔지니어링에 기초가 되는 빅데이터의 V5에 대해 알아보겠습니다.

 

2.1 빅데이터 V5

  1. Variety (다양성)
    • 비정형 데이터, 반정형 데이터 및 원시 데이터를 포함하는 다양한 데이터 유형이 있습니다.
    • 웹 서버 로그 파일, 동영상, 사진, 지리적 위치 데이터, 센서 또는 IoT 데이터 등이 될 수 있습니다. AWS는 Amazon RDS, Amazon S3, AWS Glue, Amazon Comprehend와 같은 AWS 서비스를 통해 정형, 반정형 및 비정형 데이터 처리를 지원합니다.
  2. Volume (크기)
    • 전송되는 데이터의 양 또는 전체 크기일 뿐만 아니라 데이터의 일별, 월간, 연간 증가량이기도 합니다. 이는 사용할 AWS 서비스에 대한 지표가 될 수 있습니다.
    • 일부 서비스에는 항목 또는 레코드 크기에 제한이 있으며 스토리지 볼륨이 증가할 수 있는 전체 크기에 제한이 있습니다.
    • 일반적인 데이터 분석 서비스 외에 네트워킹 서비스도 포함될 수 있기 때문에 처리량에도 주의해야 합니다.
    • 대량 데이터를 위한 AWS 스토리지 서비스에는 Amazon S3, Amazon Elastic Block Store(Amazon EBS), Amazon Redshift 그리고 DynamoDB가 있습니다.
  3. Velocity (속도)
    • 데이터를 소스 시스템에서 대상 스토리지 시스템으로 수집하고 처리하는 속도입니다.
    • 소스 데이터가 얼마나 빨리 생성되는지, 그리고 수신 데이터를 얼마나 빨리 처리해야 하는지 확실히 이해해야 합니다.
    • 실시간 스트림 솔루션과 준실시간 스트림 솔루션의 차이에 주의해야 합니다.
    • 수집 단계에서 데이터가 변환되는 경우도 있어서 모든 분석 요구 사항에 주의해야 합니다.
    • 가변적인 트래픽과 대량의 데이터 수집을 처리할 수 있는 AWS 서비스에는 Amazon Kinesis, Amazon MSK, Amazon OpenSearch Service, Lambda가 있습니다.
  4. Veracity (정확성)
    • 수집되는 데이터의 품질, 완전성 및 정확도를 의미합니다.
    • 데이터는 다양한 소스에서 제공될 수 있으며 데이터 생성 방법에 따라 데이터가 불완전하거나 일관적이지 않을 수 있습니다.
    • 수집된 데이터의 정확성을 알고 있다면 데이터 처리 시 이를 고려해야 합니다.
  5. Value (가치)
    • V5 중 가장 중요하다고 할 수 있습니다.
    • 데이터가 올바르게 수집되고 수집된 데이터가 현재 및 미래의 비즈니스에 부가가치를 창출하도록 하려면 수집되는 데이터를 고려해야 합니다.
    • 테라바이트 규모의 데이터를 수집한 다음 해당 데이터를 모두 정리 및 처리하지만 최종 데이터 제품이 아무런 부가가치도 창출하지 않는다면 이는 비용과 시간 낭비입니다.

 

3. 데이터에 따른 수집 솔루션

수집으로 돌아가 다양한 데이터 수집 요구사항과 그에 맞는 AWS 솔루션에 대해 알아보겠습니다.

 

3.1 트랜잭션 데이터

트랜잭션 데이터 시스템은 소량의 데이터를 신속하게 저장하고 검색할 수 있어야 합니다. 또한 최종 사용자는 데이터에 신속하고 간단하게 액세스할 수 있어야 합니다.

 

  1. 트랜잭션 데이터 스토리지
    • DynamoDB 및 Amazon RDS는 트랜잭션 데이터용 AWS 스토리지 서비스입니다.
  2. 트랜잭션 데이터 수집 서비스
    • AWS Database Migration Service(AWS DMS)를 사용하여 트랜잭션 데이터를 AWS로 수집할 수 있습니다.
    •  AWS DMS는 데이터베이스 트랜잭션 로그 파일을 업데이트하여 업데이트 사항을 캡처하고 전송할 수 있습니다.
    • 이 서비스는 Oracle 데이터베이스를 Amazon Aurora 데이터베이스로 마이그레이션하는 것과 같이 기존 데이터베이스 시스템을 새로운 데이터베이스 엔진으로 마이그레이션하는 데 사용할 수 있습니다.
    • 분석 관점에서는 AWS DMS를 일반 데이터베이스 엔진에서 S3 데이터 레이크로 연속 복제를 실행하는 데 사용할 수도 있습니다.

 

3.2 클릭 스트림 로그 (스트리밍 데이터)

클릭 스트림 로그와 같은 스트리밍 데이터는 지속적으로 실시간 또는 거의 실시간으로 수집되어야 합니다. 스트리밍 데이터는 소용량 이벤트를 대규모로 읽는 것이 특징입니다. 예를 들면 1KB 페이로드를 지속적으로 스트림에 쓰는 것입니다. 스트리밍 데이터의 경우 시간, 이벤트 양 또는 특정 세그먼트별로 처리를 바인딩하여 결과를 실시간으로 생성하기 위해 처리하는 데이터의 양을 제한해야 할 수 있습니다.

 

스트리밍 데이터 AWS 서비스에는 다음과 같습니다.

  1. Amazon MSK
  2. Amazon Kinesis
    • Amazon Kinesis Data Firehose는 스트리밍 데이터를 수집하고 구성 가능한 기간 동안 데이터를 버퍼링한 다음 대상 스토리지 서비스에 기록합니다.
    • 이러한 서비스에는 Amazon S3, Amazon Redshift, Amazon OpenSearch Service 등이 포함됩니다.
    • Amazon Kinesis Data Streams는 실시간으로 데이터를 수집합니다. 사용자 지정 애플리케이션을 사용하여 수신 데이터를 처리할 수 있고 지연 시간이 낮습니다.
    • Amazon Managed Service for Apache Flink(이전의 Amazon Kinesis Data Analytics)는 스트리밍 소스에서 데이터를 읽고 SQL 문 또는 Apache Flink 코드를 사용하여 스트림에 대한 분석을 수행합니다.
    • Amazon Kinesis Video Streams는 스트리밍 비디오, 오디오 스트림 및 기타 시계열 데이터(예: 열 화상 및 레이더 데이터)를 처리합니다.
    • 파일의 데이터를 사용하고 Kinesis Data Streams 또는 Kinesis Data Firehose를 사용하여 해당 데이터를 스트림에 기록하는 데 도움이 되는 Amazon Kinesis 에이전트도 있습니다.

 

3.3 서비스형 소프트웨어 데이터

  1. Amazon AppFlow
    • 서비스형 소프트웨어 서비스에서 데이터를 수집하고 데이터를 변환하여 Amazon S3, Amazon Redshift 또는 다른 SaaS 서비스에 기록하는 데 사용할 수 있습니다.

 

3.4 FTP / SFTP 프로토콜 사용해야 하는 데이터

  1. AWS Transfer Family
    • 일반적인 파일 전송 프로토콜을 사용하여 Amazon S3에 직접 파일을 전송하기 위해 AWS Transfer Family를 사용할 수 있습니다.

 

3.5 온프레미스 스토리지에 저장된 데이터

  1. DataSync
    • DataSync는 기존 온프레미스 스토리지 시스템에서 데이터를 수집할 수 있습니다.
    • 또한 DataSync는 NFS, Server Message Block(SMB)과 같은 일반적인 프로토콜을 사용합니다.

 

3.6 배치 데이터

배치 데이터를 사용하면 일반적으로 더 큰 이벤트 페이로드를 처리하고 CRON 작업과 같은 예약된 작업을 사용하여 매시간, 매일 또는 매주 단위로 이러한 페이로드를 수집할 수 있습니다. 예를 들어 S3 버킷에 저장된 데이터를 수집했다면 데이터 소스를 기준으로 데이터 경계를 설정하는 것입니다. 배치 데이터 수집은 즉시 처리할 필요가 없는 콜드 데이터에 적합합니다.

  1. Amazon EMR
    • Amazon EMR은 일반적인 Hadoop 프레임워크를 배포하는 방법을 제공하며 일부 도구는 데이터베이스에서 데이터를 수집하는 데 사용할 수 있습니다. 
    • 예를 들어 Amazon EMR에서 Spark를 실행하고 Java Database Connectivity(JDBC) 드라이버를 사용해 관계형 데이터베이스에 연결하여 데이터 레이크에 데이터를 로드할 수 있습니다.
  2. AWS Glue
    • AWS Glue는 JDBC 소스에 연결할 수 있는 완전관리형 ETL 서비스로, 다양한 데이터베이스 엔진에 연결할 수 있으며 이러한 연결을 통해 추가 처리를 위해 데이터를 전송할 수 있습니다.
    • AWS Glue는 다양한 데이터 스토어와 데이터 스트림 간에 데이터를 처리, 개선, 마이그레이션하는 데 도움이 되는 서비스입니다.
    • 데이터 엔지니어는 AWS Glue 대화형 세션을 사용하여 데이터를 분석 및 처리할 수 있으며, AWS Glue Studio에서 시각적으로 ETL 워크플로를 개발, 실행, 모니터링할 수 있습니다.