컴퓨터 공부/🌠 Journey to Data field

Understanding Data Engineering 8-Scheduling data

letzgorats 2024. 12. 9. 15:20

✅ RECAP

 

전 포스팅에서 공부한 내용을 복습해 보자.

 

- 데이터 처리의 중요성

: 데이터 처리는 원시 데이터(raw data)를 유의미한 정보로 변환하는 과정이다.

: 불필요한 데이터를 제거하여 비용 최적화를 하기 위해, 데이터 사용성을 높여 분석 및 활용 용이성을 강화하기 위해 필요하다.

 

- 핵심 개념

1. 데이터 압축 

: WAV 또는 FLAC 같은 고품질 음악 파일을 더 작은 .ogg 포맷으로 변환해 네트워크 비용을 줄이는 사례

: 품질은 유지하면서 스토리지와 전송 비용을 절감

 

2. 데이터 조직화

: 데이터를 구조화하고 정리하여 분석과와 데이터 사이언티스트가 쉽게 접근할 수 있도록 한다.

: (예시) 음악 파일에서 메타데이터 추출, 직원 데이터를 특정 테이블 스키마에 맞게 정리한다.

 

3. 자동화

: 데이터 준비 단계를 자동화하면 생산성을 높이고, 데이터 사이언티스트가 인사이트 도출에 집중할 수 있다.

 

4. 데이터 엔지니어의 역할

: 데이터 조작, 정리, 정규화

: 데이터가 구조화된 데이터베이스에 저장되도록 보장한다.

: 데이터를 쉽게 액세스할 수 있는 뷰(View)를 생성한다.

: 데이터베이스 성능을 최적화한다.

 

- ETL(Extract, Transform, Load) 프레임워크

: 데이터 처리 작업을 데이터 파이프라인의 맥락에서 연결지어 학습했다.

 

1. 추출(Extraction) : 데이터 소스에서 데이터를 가져오는 과정

2. 변환(Transfrom) : 데이터를 조작 및 변환하여 목적에 맞게 준비

3. 적재(Loading) : 데이터를 데이터 스토리지 솔루션에 저장


데이터 엔지니어링에서 '스케줄링(Scheduling)'은 데이터 파이프라인의 핵심 역할을 한다. 스케줄링은 데이터 처리 작업올바른 순서로 실행하고, 의존성을 해결하며, 자동화를 가능하게 만든다. 이번 포스팅에서는 데이터 스케줄링배치(batch)및 스트림(stream) 처리의 차이점, 그리고 구현 방법을 알아보겠다.

1. 스케줄링

- 스케줄링은 데이터 엔지니어링 시스템에서 작업을 실행하는 시점과 순서를 결정한다.

- 데이터 파이프라인의 작업들을 서로 연결하고, 자동화하며, 효율적으로 작동하도록 한다.


2. 스케줄링 방식

 

1. 수동 스케줄링(Manual Scheduling)

- 사람이 직접 작업을 실행하는 방식이다.

- (예시) 직원이 미국에서 벨기에로 이전할 때, 테이블을 즉시 업데이트해야 한다.

- downside(단점) : 작업이 사람에 의존하므로 비효율적이며 자동화되지 않았다

 

2. 시간 기반 스케줄링(Time-based Scheduling)

- 특정 시간에 작업을 자동으로 실행한다.

- (예시) 매일 아침 6시에 직원 데이터베이스를 업데이트한다.

 

3. 센서 스케줄링(Sensor-based Scheduling)

- 특정 조건이 충족되었을 때 작업을 실행한다.

- (예시) 직원이 미국에서 벨기에로 이전할 때, 테이블을 즉시 업데이트해야 한다.

- 주의점 : 항상 조건을 감시해야 하므로 리소스가 더 많이 필요하다. 


3. 배치 처리와 스트림 처리

특성 배치 처리(Batch) 스트림 처리(Stream)
데이터 처리 시점 일정 시간 간격으로 데이터를 그룹화하여 처리 데이터가 생성되자마자 처리
예시  매일 아침 6시에 직원 테이블 업데이트 사용자가 서비스 가입 시 즉시 프로필 저장
비용 리소스를 덜 사용하므로 저렴 실시간 작업이므로 비용이 높을 수 있음
활용 사례 재무부서의 매출 테이블 야간 업데이트 사용자 가입 후 즉시 서비스 제공
Spotflix 예시 오프라인 청취를 위한 곡 다운로드 온라인 스트리밍

 


4. 스케줄링 도구

Airflow, Luigi

데이터 스케줄링을 지원하는 도구

- Apache Airflow : 워크플로우 관리 및 스케줄링 도구로, 데이터 파이프라인 자동화에 적합하다.

- Luigi : 데이퍼 파이프라인 작업을 관리하고 실행하기 위한 경량 도구


5. 결론

스케줄링의 중요성

- 데이터 엔지니어링 시스템에서 작업의 순서를 조정하고 자동화한다.

스케줄링 방식

- 수동, 시간 기반, 센서 기반

스케줄링 도구

- Apache Airflow, Luigi

배치 vs 스트림 처리

- 배치 처리는 저렴하고 스트림 처리는 실시간 작업에 적합하다.


아래 문제를 풀어보자.

 

1. Schedules

You just saw three ways of scheduling data: 

manually, at a specific time, or if a specific condition is met. 

Can you correctly classify the following actions?

 

1. Processing music videos uploaded by artists every hour.

2. Running validation checks if new videos are being collected.

3. Generating the Spotflix Weekly Playlist every Monday at 00:00 A.M.

4. Updating the number of followers in a playlist table after a user subscribed to it.

5. Collecting data from Google Analytics every morning to check how the promotion campaign is going.

6. Running the song encoding pipeline, because engineering changed the encoder and wants to make sure they still pass the validation check.

 

Manual → 

Time

Condition →

 

Answer

더보기

Manual → 6

Time → 1, 3, 5

Condition → 2, 4


2. One or the other

 

You've seen that data can be processed in batches (records are grouped and processed at intervals) or streams (records are sent individually right away). 

Can you correctly classify the following actions as being batched or streamed? 

Some of these are tricky, you may have to think twice! Don't worry if you don't get it right the first time. All that matters is that you get the difference between batches and streams.

 

1. Reducing access to premium features when someone unsubscribes.

2. Updating the count of followers in a playlist when a user subscribes to it.

3. When a user listens to songs that are being recommended in real time, loading his upvotes and downvotes on each song.

4. Loading new employees to Spotflix's employee table.

 

Batch → 

Stream → 

 

Answer

더보기

Batch → 1, 4

Stream → 2, 3

 

(Hint)

Think about what happens when you unsubcribe from a service. Do they remove your accesses right away? No! They tell you you will still have access until the subscription period expires. So everyday at 11:59 PM, Spotflix runs the pipeline managing accesses, and all users whose subscription period ends at that date and that did not renew lose access. Because we group all unsubscribed users, this is a batching situation.

 


In a nutshell, batch processing can be scheduled when resources aren't being used elsewhere, which makes it cheap. Stream processing, on the other hand is used if you need the latest data: the urgency of showing the latest data help you decide if you need it.


데이터 스케줄링은 데이터를 적시에 처리하고 분석할 수 있는 강력한 시스템을 구축하는 데 필수적이다. 다음 포스팅에서는 Spotflix의 데이터 처리 흐름을 더 자세하게 살펴보자.

반응형