Data Engineering Fundamentals

2025. 9. 28. 21:47CERTIFICATES/AWS DEA-C01

데이터의 종류

  • 정형 데이터
  • 비정형 데이터
  • 반정형 데이터

정형 데이터

정의

  • 정의된 방식이나 구조로 구성된 데이터
  • 관계형 데이터베이스

특징

  • 질의가 쉬움
  • 행과 열로 구성됨
  • 일관된 구조를 가짐

  • 데이터베이스 테이블
  • 일관된 컬럼을 가지는 CSV 파일
  • 엑셀 스프레드 시트

비정형 데이터

정의

  • 사전에 정의된 구조나 틀이 없는 데이터

특징

  • 사전 처리 없이 질의하기 쉽지 않음
  • 다양한 형식으로 제공됨

  • 고정된 형식이 없는 텍스트 파일
  • 비디오, 오디오 파일
  • 이미지
  • 이메일, 워드 처리 문서

반정형 데이터

정의

  • 정형 데이터처럼 구조화되지는 않지만 태그, 계층, 기타 패턴의 형태로 어느 정도 구조화된 데이터
  • 구조는 있지만 문서 전체에서 일관성을 갖지 않음

특징

  • 어떤 방식으로 태그되거나 분류된 요소
  • 정형 데이터보다는 유연하지만 비정형 데이터만큼 무질서하지 않음

  • XML, JSON
  • 이메일 헤더
  • 다양한 형식의 로그 파일

데이터의 속성

  • Volume(크기)
  • Velocity(속도)
  • Variety(다양성)

Volume(크기)

정의

  • 데이터의 양, 크기

특징

  • 기가바이트에서 페타바이트 또는 그 이상
  • 많은 양의 데이터를 저장, 처리, 분석하는 데 어려움이 있음

  • 사용자의 게시물, 이미지, 비디오 데이터를 매일 테라바이트씩 처리하는 유명한 소셜 미디어 플랫폼
  • 페타바이트 규모의 수년간 거래 데이터를 수집하는 소매업체

Velocity(속도)

정의

  • 새 데이터가 생성, 수집, 처리되는 속도

특징

  • 빠른 속도는 실시간 또는 거의 실시간 처리 기능을 요구
  • 특정 애플리케이션에는 빠른 수집 및 처리가 중요

  • IoT 기기의 센서 데이터는 매 밀리 초마다 스트리밍
  • 밀리 초마다 결정의 차이를 만들어 낼 수 있는 고빈도 거래 시스템

Variety(다양성)

정의

  • 다양한 데이터의 유형, 구조, 출처

특징

  • 데이터는 정형, 반정형, 비정형일 수 있음
  • 데이터는 여러 출처에서 다양한 형식으로 제공될 수 있음

  • 관계형 데이터베이스(정형), 이메일(비정형), JSON 로그(반정형) 로부터 데이터를 분석하는 기업
  • 전자 의료 기록, 웨어러블 헬스 기기, 환자의 피드백 양식에서 데이터를 수집하는 의료 시스템

Data Warehouse VS Data Lake

Data Warehouse

정의

  • 분석에 최적화된 중앙 저장소
  • 다양한 출처의 데이터를 구조화된 형식으로 저장

특징

  • 복잡한 쿼리와 분석을 위해 설계됨
  • 데이터는 정제, 변환, 적재됨(ETL)
  • 일반적으로 star 또는 snowflake 구조를 사용
  • 읽기 작업이 많은 작업에 최적화됨

  • 아마존 Redshift
  • 구글 BigQuery
  • 마이크로소프트 Azure SQL Dat Warehouse

  • 클릭 스트림, 구매, 카탈로그 데이터 등 모든 데이터가 데이터 웨어하우스에 저장됨
  • 회계팀, 분석팀, 머신러닝 등 용도에 맞게 필요한 데이터로 구성된 데이터 마트 생성하여 사용

Data Lake

정의

  • 방대한 양의 원시 데이터를 원래 형태 그대로 저장하는 저장소
  • 정형, 반정형, 비정형 데이터를 포함

특징

  • 사전 정의된 구조 없이 대량의 원시 데이터 저장 가능
  • 데이터가 있는 그대로 적재되기 때문에 전처리 필요 없음
  • 배치, 실시간, 스트림 처리를 지원
  • 데이터 변환 또는 탐색 목적으로 쿼리할 수 있음

  • 아마존 S3
  • Azure Data Lake Storage
  • HDFS

  • 모든 정보를 S3에 저장
  • Glue를 사용해 비구조적인 데이터에서 구조를 파악
  • Athena에서 Glue 데이터 카탈로그를 이용해 데이터 구조를 파악하고 쿼리할 수 있음

비교

  Data Warehouse Data Lake
스키마 데이터를 쓰기 전에 스키마가 정해짐(Schema-on-write) 데이터를 읽을 때 스키마가 정해짐 (Schema-on-read)
데이터 타입 정형 데이터 정형 데이터, 비정형 데이터
민첩성 정해진 스키마가 있기 때문에 덜 민첩 원시 데이터를 다루기 때문에 더 민첩
처리 ETL(추출-변환-적재) ELT(추출-적재-변환)
비용 복잡한 쿼리를 최적화해야 하기 때문에 비쌈 비교적 저렴하지만, 많은 양의 데이터를 처리하면서 가격이 오를 수 있음

Warehouse와 Lake 선택 기준

Data Warehouse 를 사용해야 할 때

  • 정형 데이터를 가지고, 빠르고 복잡한 쿼리가 필요할 때
  • 다양한 출처의 데이터 통합이 필수적
  • 비즈니스 인텔리전스와 분석

Data Lake 를 사용해야 할 때

  • 정형, 반정형, 비정형 데이터 모두 가질 때
  • 방대한 양의 데이터를 저장하기 위한 확장성 있고, 비용 효율적인 솔루션 필요
  • 데이터의 향후 필요성이 불확실하고, 저장과 처리에 유연성을 갖고 싶을 때
  • 고급 분석, 머신러닝, 데이터 발견이 핵심 목표일 때
  • 원시 데이터를 데이터 레이크에 수집한 후 처리하여 정제된 데이터를 분석을 위해 데이터 웨어하우스에 옮기는 식으로 두 방식을 조합해서 사용

Data Lakehouse

정의

  • 데이터 레이크와 데이터 웨어하우스의 장점을 조합한 하이브리드 데이터 구조
  • 데이터 웨어하우스의 성능, 안정성, 기능성을 지키면서
  • 데이터 레이크의 유연성, 확장성, 낮은 저장 비용을 유지

특징

  • 정형, 비정형 데이터를 모두 지원
  • schema-on-write, schema-on-read 모두 가능
  • 세부 분석과 머신러닝 작업 모두를 위한 기능 제공
  • 일반적으로 클라우드 또는 분산 아키텍처에 구축
  • 빅데이터에 ACID 트랜잭션을 적용하는 Delta Lake와 같은 기술의 이점을 가짐

  • AWS Lake Formation (S3 및 Redshift Spectrum과 함께 사용)
  • Delta Lake: Apache Spark와 빅데이터 워크로드에 ACID 트랜잭션을 제공하는 오픈소스 스토리지 계층.
  • Databricks Lakehouse Platform: 데이터 레이크와 데이터 웨어하우스의 기능을 결합한 통합 플랫폼.
  • Azure Synapse Analytics: 빅데이터와 데이터 웨어하우스를 통합하는 마이크로소프트의 분석 서비스.

Data Mesh

  • 2019년에 처음 사용된 용어임, 기술보다는 거버넌스와 조직 방식에 더 가까움
  • 개별 팀이 특정 도메인 내의 “데이터 제품(data products)”을 소유함
  • 이 데이터 제품들은 조직 내 다양한 “사용 사례(use cases)”를 지원함
  • “도메인 기반 데이터 관리(domain-based data management)” 개념임
  • 중앙 표준을 기반으로 한 연합형(federated) 거버넌스 방식임
  • 셀프 서비스 도구 및 인프라 제공함
  • 데이터 레이크, 데이터 웨어하우스 등이 포함될 수 있음
    • 하지만 “데이터 메시”는 특정 기술이나 아키텍처가 아니라 “데이터 관리 패러다임”을 의미함

ETL 파이프라인

정의

  • Extract, Transform, Load의 약자
  • 소스 시스템에서 데이터 웨어하우스로 데이터를 이동시키는 과정

Extract(추출)

  • 데이터베이스, CRM, 플랫 파일, API, 기타 데이터 저장소 등 소스 시스템에서 원시 데이터를 가져옴
  • 추출 단계에서 데이터 무결성을 보장해야 함
  • 요구사항에 따라 실시간 또는 배치 처리로 수행할 수 있음

Transform(변환)

  • 추출된 데이터를 대상 데이터 웨어하우스에 적합한 형식으로 변환
  • 다양한 작업이 포함될 수 있음
    • 데이터 정제(중복 제거, 오류 수정)
    • 데이터 보강(다른 소스에서 추가 데이터 결합)
    • 형식 변환(날짜 포맷 변경, 문자열 처리)
    • 집계 또는 계산(합계, 평균 계산)
    • 데이터 인코딩, 디코딩
    • 결측값 처리

Load(적재)

  • 변환된 데이터를 대상 데이터 웨어하우스 또는 다른 데이터 저장소로 이동
  • 배치 방식(한 번에 전체 적재) 또는 스트리밍 방식(데이터가 들어오는 즉시 적재)으로 수행 가능
  • 적재 단계에서도 데이터 무결성이 유지되도록 보장해야 함

ETL 파이프라인 관리

  • 이 과정은 신뢰할 수 있는 방식으로 자동화해야 함
  • AWS Glue
    • 자동으로 ETL, ELT 가능
  • 오케스트레이션 서비스
    • EventBridge
    • Amazon Managed Workflows for Apache Airflow(Amazon MWAA)
    • AWS Step Functions
    • Lambda
    • Glue Workflows

Data Source

  • JDBC(Java Database Connectivity)
    • 플랫폼 독립적
    • 언어 종속적(Java)
  • ODBC(Open Database Connectivity)
    • 플랫폼 종속적(데이터베이스에 액세스하려면 특정 드라이버가 필요)
    • 언어 독립적
  • 원시 로그
  • API
  • 스트리밍 데이터

공통 데이터 형식

CSV(Comma-Separated Values)

  • 텍스트 기반 형식으로 데이터를 표 형태로 표현
  • 각 줄은 하나의 행에 해당, 행 내의 값들은 쉼표로 구분됨

적용 상황

  • 소규모 ~ 중간 규모 데이터 셋에 적합
  • 서로 다른 기술을 사용하는 시스템 간 데이터 교환에 활용
  • 사람이 읽고 편집하기 쉬운 데이터 저장 방식이 필요한 경우
  • 데이터베이스나 스프레드시트에서 데이터 가져오기/내보내기 용도

시스템

  • SQL 기반 데이터베이스
  • 엑셀
  • 파이썬 Pandas
  • R
  • 다양한 ETL 도구

JSON(JavaScript Object Notation)

  • 경량, 텍스트 기반의 사람이 읽기 쉬운 데이터 교환 형식
  • 키-값 쌍을 기반으로 정형, 반정형 데이터를 표현

적용 상황

  • 웹 서버와 웹 클라이언트 간 데이터 교환 시
  • 소프트웨어 애플리케이션의 설정 및 구성 관리
  • 유연한 스키마나 중첩 구조가 필요한 경우

시스템

  • 웹 브라우저
  • 다양한 프로그래밍 언어(JavaScript, Python, Java 등)
  • RESTful API
  • NoSQL 데이터베이스(MongoDB)

Avro

  • 데이터를 바이너리 형식으로 저장하면서 스키마까지 함께 포함
  • 원본 시스템의 컨텍스트 없이 다른 시스템에서 데이터를 처리할 수 있게 함

적용 상황

  • 빅데이터 및 실시간 처리 시스템
  • 스키마 진화(데이터 구조 변화)가 필요한 경우
  • 시스템 간 데이터 전송을 위한 효율적인 직렬화 방식이 필요할 때

시스템

  • Apache Kafka
  • Apache Spark
  • Apache Flink
  • Hadoop Ecosystem

Parquet

  • 분석 작업에 최적화된 컬럼 기반 저장 형식
  • 효율적인 압축과 인코딩 방식 지원

적용 상황

  • 분석 엔진을 사용하여 대규모 데이터 셋을 분석할 때
  • 전체 레코드가 아닌 특정 컬럼만 읽는 것이 유리한 경우
  • I/O 연산 및 스토리지를 최적화해야 하는 분산 시스템 환경

시스템

  • Hadoop 생태계
  • Apache Spark
  • Apache Hive, Apache Impala
  • Amazon Redshift Spectrum

데이터 모델링 개요

  • ERD(Entity Relationship Diagram)
  • 차원 테이블의 PK는 Fact 테이블의 FK

Data Lineage(데이터 계보)

  • 데이터가 소스에서 최종 목적지까지 이동하고 변환되는 과정을 생애주기 전체에 걸쳐 추적하는 시각적 표현

중요성

  • 오류를 소스로 추적하는 데 도움을 줌
  • 규제 준수를 보장
  • 데이터가 시스템 내에서 어떻게 이동, 변환, 소비되는지 명확하게 이해할 수 있게 함

스키마 진화

  • 데이터 셋의 스키마를 시간이 지나면서 변경, 적응시켜도 기존 프로세스나 시스템을 방해하지 않고 유지할 수 있는 능력

중요성

  • 비즈니스 요구사항 변화에 맞춰 데이터 시스템이 유연하게 적응할 수 있게 함
  • 데이터 셋의 컬럼/필드를 추가, 삭제, 수정할 수 있게 함
  • 기존 데이터 레코드와의 하위 호환성을 유지

Glue Schema Registry

  • 스키마 발견, 호환성 검사, 검증, 등록 등을 지원

데이터베이스 성능 최적화

인덱싱

  • 전체 테이블 스캔을 피할 수 있음
  • 데이터 고유성과 무결성을 보장

파티션

  • 스캔해야 하는 데이터 양을 줄여줌
  • 데이터 라이프사이클 관리에 유용
  • 병렬 처리를 가능하게 함

압축

  • 데이터 전송 속도를 높이고, 스토리지 및 디스크 읽기량을 줄여줌
  • GZIP, LZOP, BZIP2, ZSTD(Redshift가 지원하는 압축 포맷)
    • 압축률과 속도 간의 다양한 trade-off 존재
  • 컬럼 기반 압축(Parquet)
    • 한 컬럼 내의 데이터는 같은 데이터 포맷을 갖기 때문에 압축하기 좋음

데이터 샘플링 기법

랜덤 샘플링

  • 모든 데이터가 동일한 확률로 선택됨

층화 샘플링

  • 모집단을 동질적인 하위 그룹(계층)으로 나눔
  • 각 계층 내에서 랜덤 샘플을 추출
  • 각 하위 그룹이 균형 있게 대표될 수 있도록 보장

기타

  • 체계적 샘플링(일정한 간격 k 마다 샘플 추출)
  • 군집 샘플링
  • 편의 샘플링
  • 판단 샘플

Data Skew 매커니즘

  • Data Skew : 분산 컴퓨팅 시스템에서 노드나 파티션 간 데이터가 불균형하게 분포되는 현상

Celebrity 문제

  • 트래픽이 불균형하면 균등 파티셔닝을 해도 효과가 없음
  • IMDb를 예로 들면, 브래드 피트 관련 트래픽이 한 파티션에 몰려 해당 파티션이 과부화

원인

  • 데이터의 비균일 분포
  • 부적절한 파티셔닝 전략
  • 시간적 skew 발생
  • 데이터 분포를 지속 모니터링하고, skew 이슈 발생 시 경고 발생시키는 것이 중요

Data Skew 대응 방법

  1. 적응형 파티셔닝 : 데이터 특성에 따라 파티셔닝을 동적으로 조정하여 더 균형 잡힌 분포를 보장
  2. Salting : 데이터 랜덤 요소(salt)를 추가하여 보다 균등하게 분산시킴
  3. 재파티셔닝 : 현재 분포 특성에 맞춰 데이터를 정기적으로 재분배
  4. 샘플링 : 데이터 샘플을 사용해 분포를 파악하고 그에 맞춰 처리 전략을 조정
  5. 사용자 정의 파티셔닝 : 도메인 지식을 기반으로 맞춤 규칙이나 함수를 정의하여 데이터 파티셔닝을 수행

데이터 검증 및 프로파일링

완전성

  • 정의 : 필요한 모든 데이터가 존재하며, 필수 요소가 누락되지 않았음을 보장
  • 검증 방법 : 결측값 확인, Null 개수, 필드가 채워진 비율
  • 중요성 : 누락된 데이터는 잘못된 분석 및 인사이트로 이어질 수 있음

일관성

  • 정의 : 데이터 값이 여러 데이터 셋 간에 일관되며 서로 모순되지 않음을 보장
  • 검증 방법 : 교차 필드 검증, 서로 다른 소스나 기간의 데이터 비교
  • 중요성 : 불일치 데이터는 혼란을 초래하고 잘못된 결론을 낳을 수 있음

정확성

  • 정의 : 데이터가 올바르고 신뢰할 수 있으며, 의도한 대상을 정확히 나타냄
  • 검증 방법 : 신뢰할 수 있는 소스와 비교, 알려진 규칙/표준에 대한 검증
  • 중요성 : 부정확한 데이터는 잘못된 인사이트와 잘못된 의사결정을 초래

무결성

  • 정의 : 데이터가 라이프사이클 전체와 여러 시스템에 걸쳐 올바르고 일관성을 유지함
  • 검증 방법 : 참조 무결성(DB에서의 외래 키 체크), 데이터 관계 검증
  • 중요성 : 데이터 요소 간의 관계가 보존되어야 데이터가 장기간 신뢰 가능

'CERTIFICATES > AWS DEA-C01' 카테고리의 다른 글

Container  (0) 2025.10.14
Compute  (0) 2025.10.14
Migration and Transfer  (0) 2025.10.14
Database  (0) 2025.10.14
Storage  (0) 2025.09.30