01. 서버 엔지니어가 다루는 데이터
01.01. Use Case
01.01. Transaction(거래 데이터)
- 거래 요청이 있고 요청에 대한 처리의 결과가 있는 데이터
- 비즈니스나 시스템에서 빈번하게 생성되고 업데이트 되는 데이터
- 예시
- 상품 주문
- 결제
- 환불 요청
- 기술적으로 시스템의 여러 동작/기능이 하나로 연결되어야 하고, 완결될 때 모두 같이 상태가 결정되는 경우
- 비즈니스나 도메인을 구성하는 추상화된 정보
- 시스템을 다루는 이해관계자나 제품에 대한상태 정보 등
- 메타데이터는 업데이트 될 수 있으나, 자주 업데이트 되지는 않는다.
- 예시
- 회원의 기본 정보
- 판매자의 기본 정보
- 판매자가 등록한 상품 정보
- 광고주가 설정한 광고 요청 설정
- 시스템의 설정 정보
02. 데이터 엔지니어가 다루는 데이터
02.01. 데이터 엔지니어가 다루는 데이터의 특징
- 하나의 메세지가 그 자체로 완결성을 가진다.
- 하나의 메세지는 immutable 하다.
a. 메세지 발생 이후에 메세지 안의 값을 변경하지 않는다.
b. 요구사항에 따라 파이프라인에서 특정 데이터를 추가/삭제 정도만 한다.
- 메세지 안에 메시지의 고유 값(다른 메시지들과 비교해서 unique함을 판단할 수 있는)을 구분할 수 있다.
- 시간 정보가 항상 있다.
02.02. Event
하나의 독립된 사건을 알리는 데이터.
데이터의 방생만 있고, 응답은 필요 없는 데이터.
발생한 데이터를 추후 활용해야 비즈니스/도메인의 의미가 부여된다.
다음과 같을 때 Event 데이터를 남긴다.
- 거래 데이터가 아니지만, 비즈니스에 필요한 데이터인 경우
- 하나의 사건 이후에 여러 거래들이 후처리 되어야 하는 경우
- Transaction으로 처리할 수도 있지만 꼭 하나로 연결될 필요가 없어서 독립된 여러 이벤트로 정의/발생 시킨 뒤, 추후에 분석단계에서 엮어서 활용하고 싶은 경우.
02.03. Log
어떤 시스템이나 거래의 중간에 순간의 주요 정보를 기록한 데이터
Event와 의미가 거의 같거나 비슷하다.
프로그래머의 관행상 파일로 남기는 event data를 로그라고 한다.
Event와 Log의 처리에서는 다음과 같은 기술적 주제를 다룬다.
1. 하나의 사건 이후에 여러 거래들이 후처리 되어야 하는 경우
- Message Queue를 이용한 Pub-Sub model
- 실시간 Event 전송
- Event, Log의 Visualization
- Event, Log의 Data Cleansing
02.04. Aggregation
Raw-Data(원본/원천 데이터)로 부터 비즈니스에 필요한 데이터를 얻기 위해서 집계, 통계를 이용해서 데이터를 만든다. 주로 합계, 평균, 추이를 나타내는 데이터를 만든다.
Aggregation은 데이터 분석을 맡은 사람이 ad-hoc 하게 하기도 한다.
다름의 경우 데이터 엔지니어링 기술이 좀 더 본격적으로 필요하다.
- 비스니스를 위해서 지속적으로 집계 데이터가 필요한 경우
a. Batch(ETL), Streaming 시스템
b. 안정성과 신뢰성을 갖춘 시스템
- 집계 대상이 되는 데이터 사이즈가 큰 경우
a. DB, OLAP 시스템
b. Backup, Merge, Partitioning, Sharding
- 집계 대상이 되는 데이터(데이터 소스 똔느 테이블)가 많은 경우
a. Denormalize, Star-Schema
b. OLAP cube
- 도메인의 특수성이 있는 경우