- 5장 - 수명 주기 1단계 원천 시스템에서의 데이터 생성2024년 11월 15일
- 31514
- 작성자
- 2024.11.15.:41
개요
- 일반적인 운영 원천 시스템 패턴과 중요한 원천 시스템 유형 설명
- 시스템이 생성하는 데이터와 원천 시스템을 사용할 때 고려해야 할 사항 검토
- 드러나지 않는 요소가 데이터 엔지니어링 수명 주기의 첫 번째 단계에 어떻게 적용되는지 논의
원천 시스템에서 생성되는 데이터의 특성을 이해하는 것은 중요하다.
데이터 원천: 데이터는 어떻게 생성될까?
파일과 비정형 데이터
파일은 바이트의 시퀀스로서, 일반적으로 디스크에 저장된다.
- 정형 - 엑셀, CSV
- 반정형 - JSON, XML, CSV
- 비정형 - TXT, CSV
API
API는 시스템 간에 데이터를 교환하는 표준 방식이다.
API가 데이터 수집 작업을 단순화하는 것 같지만, 실제로 많은 API가 여전히 데이터의 복잡성을 상당 부분 드러내고 있다.
데이터 엔지니어는 종종 맞춤형 API 연결을 유지하는 데 상당한 에너지를 투자해야 한다.
OLTP 시스템
OLTP 시스템은 단일 쿼리로 방대한 양의 데이터를 검색해야 하는 대규모 분석에 기반한 사용 사례에는 적합하지 않다.
<ACID>
ACID 특성은 애플리케이션의 백엔드를 지원하기 위해 꼭 필요한 것은 아니다.
이러한 제약을 완화하면 성능과 확장성에 상당한 이점이 될 수 있다.
그러나 ACID는 데이터베이스가 일관된 형상을 유지하도록 보장하고, 앱 개발자의 작업을 획기적으로 간소화한다.
따라서 모든 엔지니어는 ACID를 사용할 때와 그렇지 않을 때의 작동 방식을 이해해야 한다.
<OLTP와 분석>
소규모 기업에서는 OLTP에서 직접 분석을 실행하는 경우가 많다.
이 패턴은 단기적으로는 효과적이지만 궁극적으로는 확장성이 떨어진다.
데이터 엔지니어는 운영 애플리케이션 성능을 저하하지 않으면서 분석 시스템과의 적절한 통합을 설정하기 위해 OLTP와 애플리케이션 백엔드의 내부 작동 방식을 이해해야 한다.
OLAP 시스템
OLAP는 대규모 분석 쿼리를 실행하도록 구축되어 있으며, 일반적으로 개별 레코드의 조회 처리에는 비효율적이다.
실제 사용 사례에서 엔지니어는 종종 OLAP 시스템에서 데이터를 읽어야 한다.
예를 들어, 데이터 웨어하우스는 ML 모델을 훈련하는 데 사용되는 데이터를 제공할 수 있다.
또는 분석 시스템에서 파생된 데이터를 CRM, SaaS 플랫폼 또는 트랜잭션 애플리케이션과 같은 원천 시스템으로 다시 전송되는 역방향 ETL 워크플로를 OLAP 시스템이 제공할 수도 있다.
변경 데이터 캡처(CDC)
CDC는 데이터베이스에서 발생하는 각 변경 이벤트를 추출하는 방법이다.
CDC는 데이터베이스 간에 거의 실시간으로 복제하거나 다운스트림 처리를 위한 이벤트 스트림을 생성하는 데 자주 사용된다.
로그
로그는 시스템에서 발생하는 이벤트에 대한 정보를 수집한다.
로그는 최소한 누가, 무엇을, 언제 수행했는지를 수집해야 한다.
<로그 인코딩>
- 바이너리 인코딩 로그 - 사용자 정의 압축 형식으로 인코딩
- 반정형 로그 - 객체 직렬화 형식(JSON)의 텍스트로 인코딩
- 일반 텍스트 로그 - 소프트웨어로부터 콘솔 출력을 저장
<로그 해상도>
로그는 다양한 해상도와 로그 레벨에서 생성된다.
로그 해상도는 로그에 캡처된 이벤트 데이터의 양을 나타낸다.
로그 레벨이란 로그 엔트리를 기록하는 데 필요한 조건, 특히 에러와 디버깅에 관한 조건이다.
데이터베이스 로그
데이터베이스 로그는 더 중요하다.
로그 선행 기록(WAL)은 데이터베이스 보장과 복구에 중요한 역할을 수행한다.
데이터베이스 서버는 테이블에 대한 쓰기 및 갱신 요청을 수신하고, 각 작업을 로그에 저장한 후에 확인 응답을 한다.
확인 응답에는 로그 관련 보증이 포함되므로 서버에 장애가 발생해도 복구할 수 있다.
CRUD
CRUD는 프로그래밍에서 일반적으로 사용되는 트랜잭션 패턴으로, 영구 스토리지의 네 가지 기본적인 연산 작업을 나타낸다.
다른 모든 데이터베이스와 마찬가지로, 스냅샷 기반 추출을 사용해 애플리케이션이 CRUD 연산을 적용하는 데이터베이스로부터 데이터를 가져올 수 있다.
입력 전용
입력 전용 패턴은 데이터를 포함하는 테이블에서 이력을 직접 유지한다.
레코드를 갱신하는 대신, 새로운 레코드가 생성된 시점을 나타내는 타임스탬프와 함께 입력된다.
입력 전용 패턴은 데이터베이스 로그를 테이블 자체에 직접 유지하므로 애플리케이션이 이력에 접근해야 할 때 유용하다.
하지만 테이블의 크기가 커질 수 있고 MAX()를 실행하기 때문에 오버헤드가 발생할 수 있다.
메시지와 스트림
이벤트 기반 아키텍처와 관련해 메시지 큐와 스트리밍 플랫폼이라는 용어가 서로 혼용되는 경우를 흔히 볼 수 있다.
<메시지>
메시지는 둘 이상의 시스템 간에 전달되는 원시 데이터다.
메시지는 이벤트 기반 시스템에서 불연속적이고 단일한 신호다.
메시지가 소비되면 메시지 큐에서 삭제된다.
<스트림>
스트림은 이벤트 레코드의 추가 전용 로그다.
이벤트가 발생하면 순서대로 누적되며, 타임스탬프 또는 ID로 이벤트 순서를 정렬할 수 있다.
시간 유형
시간은 모든 데이터 수집에서 중요한 고려 사항이지만, 특히 스트리밍의 맥락에서는 데이터가 연속적인 것으로 간주되고 데이터가 생성된 직후 소비될 것으로 예상되는 만큼 시간이 훨씬 더 중요하다.
이벤트가 생성, 수집 및 처리되는 각 시각 단계에서 발생하는 이벤트를 로그에 기록하고 정확하게 추정할 수 있다.
'Book > 견고한 데이터 엔지니어링' 카테고리의 다른 글
4장 - 데이터 엔지니어링 수명 주기 전체에 걸친 기술 선택 (1) 2024.11.13 3장 - 우수한 데이터 아키텍처 설계 (0) 2024.11.08 2장 - 데이터 엔지니어링 수명 주기 (2) 2024.11.01 1장 - 데이터 엔지니어링 상세 (0) 2024.10.31 다음글이전글이전 글이 없습니다.댓글