Data Engineering/자격증

[AWS DEA] 데이터 변환 및 처리 - 2

PTJ 2025. 5. 15. 17:50

 

지난 포스팅에 이어 AWS서비스를 활용한 데이터 변환 및 처리 예시와 작업 중 발생할 수 있는 문제와 해결방법을 살펴보고, 안전하게 데이터를 다룰 수 있는 연결 방법과 Data API에 대해 알아보겠습니다.

 

 

1. 데이터 변환 및 처리 문제 해결 흐름

1.1 대용량 데이터 조인

 

  1. 문제 상황
    여러분이 근무하는 의류 회사에서 데이터 카탈로그와 통합된 S3 버킷에 모든 과거 트랜잭션이 저장되어 있습니다. 해당 과거 트랜잭션을 판매 실적 보고서 데이터와 조인한다고 가정해 보겠습니다. 데이터 처리는 Amazon Redshift 클러스터에서 진행됩니다. 데이터 분석가가 여러분에게 Amazon Redshift클러스터의 워크로드를 줄이기 위한 솔루션을 제공해 달라고 요청했습니다.

  2. 해결 방법
    • 방법중 하나는 Amazon Redshift SQL을 사용하여 테이블을 조인하고 Redshift Spectrum을 사용하여 Amazon S3에서 과거 트랜잭션 데이터를 위한 외부 테이블을 생성하는 것입니다. 
    • 변환 실패 및 성능 문제에 대한 해결 방법을 묻는다면 아래와 같은 접근 방식을 따릅니다. 
      • 첫째, 데이터 변환에 사용되는 AWS서비스에서 생성된 로그를 확인합니다.
      • 둘째, 다양한 단계에서 데이터 품질 및 무결성을 확인합니다.
      • 소스데이터에서 변환 로직을 검증하여 매핑, 필터, 집계 및 계산이 모두 올바른지 확인합니다.
    • 다음과 같은 방법으로 성능 최적화를 보장할 수 있습니다. 
      • 데이터 변환 코드 및 쿼리의 실행을 프로파일링하고 분석하면 처리 시간, 메모리 사용량 또는 입력/출력 작업이 더 높은 영역 및 병목 현상을 식별할 수 있습니다.
      • 데이터 변환 작업을 최적화하기 위해 병렬 처리에 추가해야 하는 보다 효율적인 알고리즘, 파티셔닝 전략 등을 식별할 수도 있습니다.
    • 좋은 솔루션을 위해 추가로 고려해보면 좋은 것들은 아래와 같습니다.
      • 네트워크 문제, 리소스 가용성과 같은 일시적인 실패 또는 오류를 처리하기 위한 재시도를 방안을 마련합니다.
      • 데이터 변환 프로세스를 테스트해야 하며, 테스트 또는 스테이징 환경을 사용하고 단위 테스트, 통합 테스트 및 엔드투엔드 테스트를 구현하고 다양한 데이터 시나리오, 실패 시나리오 및 희귀 사례를 사용하여 테스트해야 합니다.
       

1.2 로그 수집

 

  1. 문제 상황
    애플리케이션 로그를 Amazon CloudWatch Logs로 보내고 거의 실시간으로 DynamoDB 데이터로 로그를 보강(추가적으로 의미있는 데이터를 붙이는것)한 다음 추가 연구를 위해 출력을 사용해야 할때 로그를 어떻게 수집하고 보강하는게 좋을까요?
  2. 해결 방법
    • 솔루션 중 하나는 DynamoDB 데이터로 로그를 보강하는 Lambda 함수를 생성하고, Kinesis Data Firehose 스트림을 생성하고, S3 버킷을 로그 대상으로 사용하여 CloudWatch Logs를 구독하도록 스트림을 구성하는 것입니다. 
    • 그런 다음 로그 이벤트를 전송 스트림으로 보내는 CloudWatch Logs 구독을 생성합니다.
    • Kinesis Data Firehose는 Kinesis Data Streams 또는 CloudWatch Logs와 같은 소스에서 Amazon Managed Service for Apache Flink, Amazon S3와 같은 다운스트림 서비스로 스트리밍 데이터를 수집, 변환, 저장합니다.

 

2. 데이터 변환 및 처리를 위한 연결 방법

AWS DEA시험을 위해서는 JDBC 및 ODBC(Open Database Connectivity)를 사용하여 다양한 데이터 소스에 연결하는 방법을 알고 있어야 합니다. 사용하는 데이터 소스와 AWS 환경의 특정 요구 사항을 기반으로 적절한 연결 방법을 선택하는 방법을 이해하고 있어야 합니다.

 

2.1 JDBC

  1. JDBC란?
    • 관계형 데이터베이스와 연결하고 상호 작용하기 위한 Java API입니다.
  2. JDBC 연결 방법
    • AWS에서 JDBC를 사용하여 데이터 소스에 연결하려면 먼저 연결하려는 특정 데이터베이스를 위한 JDBC 드라이버를 준비합니다.
    • 다음으로, 데이터베이스에 필요한 포트에 액세스하기 위한 인바운드 규칙을 사용하여 필요한 보안 그룹을 구성합니다.
    • Java 애플리케이션에서 JDBC 드라이버를 사용하여 적절한 연결 URL, 사용자 이름 및 암호를 제공해 데이터베이스에 대한 연결을 설정합니다.
    • 연결 URL에는 일반적으로 데이터베이스 호스트 이름 또는 IP 주소, 포트 번호 및 데이터베이스 이름이 포함됩니다.
    • 연결이 설정되면 JDBC API를 사용하여 SQL 문을 실행하고 쿼리, 업데이트 및 기타 데이터베이스 작업을 수행할 수 있습니다.

 

2.2 ODBC

  1. ODBC란?
    • 관계형 데이터베이스를 포함하여 다양한 데이터 소스에 연결하기 위한 표준화된 API입니다.
  2. ODBC 연결 방법
    • 먼저 연결하려는 데이터 소스에 해당하는 ODBC 드라이버를 선택합니다.
    • 데이터 소스에 연결할 시스템(Amazon EC2 인스턴스 또는 온프레미스 서버일 수 있음)에 ODBC 드라이버를 설치합니다.
    • 데이터 소스에 연결하는 데 필요한 구성 정보가 포함된 ODBC 데이터 소스 이름을 설정합니다. 여기에는 드라이버, 연결 세부 정보 (예: 호스트 이름, 포트, 인증) 및 기타 설정이 포함됩니다.
    • ODBC 연결을 지원하는 애플리케이션 또는 도구에서 DSN을 지정하여 데이터 소스에 대한 연결을 설정합니다. 그러면 쿼리를 실행하고 데이터와 상호 작용할 수 있습니다.

2.3 AWS 서비스들 간의 연결

Amazon RDS, Aurora 및 Amazon Redshift는 AWS 내의 데이터베이스 및 AWS 서비스에 대한 연결 프로세스를 단순화하고 직접 연결 옵션과 자동화된 관리를 제공하여 수동으로 JDBC 또는 ODBC 구성할 필요성을 줄여줍니다.

 

 

 

3. 데이터 API

다른 시스템에서 데이터를 사용할 수 있도록 AWS 서비스를 사용하여 데이터 API를 생성하는 방법에 대해 이야기해 보겠습니다.

 

3.1 데이터 API 사용 가이드

  1. 먼저, 데이터가 저장되는 위치를 알아야 합니다.
  2. API가 데이터 처리 또는 변환을 수행해야 하는 경우 AWS는 데이터를 정리하고, 정규화하고 사용 가능한 형식으로 변환하는 데 도움이 되는 AWS Glue 또는 Amazon EMR을 제공합니다.
  3. API Gateway를 사용하여 데이터 API를 생성하고 관리할 수 있습니다.
    • API Gateway는 프런트엔드 서비스에 액세스하여 클라이언트가 제어된 액세스를 통해 데이터에 안전하게 액세스할 수 있도록 합니다.
    • 인증, 권한 부여, 속도 제한, 캐싱, 요청, 응답 변환을 제공합니다.
  4. Lambda를 사용하여 데이터를 처리하고 API에 제공할 수 있습니다.
    • Lambda에서 코드를 작성하여 데이터 소스에서 데이터를 가져오고, 추가 변환을 적용하고, 형식이 지정된 데이터로 API 요청에 응답할 수 있습니다.
    • 요구 사항에 따라 API Gateway 또는 기타 AWS 서비스를 통해 Lambda를 트리거할 수 있습니다.

3.2 데이터 API 보안과 인증

  1. AWS Identity and Access Management(AWS IAM)를 사용하여 API Gateway와 Lambda 함수에 대한 액세스 및 권한을 제어함으로써 데이터 API를 보호하는 보안 조치를 구현할 수 있습니다. 
  2. AWS Certificate Manager, API 키, OAuth 또는 기타 인증 메커니즘을 사용하여 API 엔드포인트를 보호할 수도 있습니다.

3.3 캐싱 및 성능 최적화

  1. 데이터 API의 성능을 향상하려면 ElastiCache 또는 API Gateway에 내장된 캐싱 기능을 사용하여 응답을 캐시하고 지연 시간을 줄일 수 있습니다.
  2. 또한 Amazon CloudWatch를 사용하여 데이터 API의 성능, 지연 시간, 사용량을 모니터링하고 추적할 수 있습니다.
  3. 문제 해결 및 분석을 위해 API 요청. 로그 및 오류를 캡처하도록 로깅을 구성할 수 있습니다.
  4. API Gateway를 사용하여 API 버전을 관리할 수 있으며 변경 사항을 관리하고 이전 버전 호환성을 유지할 수도 있습니다.