Skip to content

Commit

Permalink
Study Robust Data Engineering Book
Browse files Browse the repository at this point in the history
  • Loading branch information
JeonDaehong committed Jan 8, 2025
1 parent cac3802 commit 8ae9e2d
Showing 1 changed file with 42 additions and 1 deletion.
43 changes: 42 additions & 1 deletion _posts/2025-01-07-robust-data-engineering.md
Original file line number Diff line number Diff line change
Expand Up @@ -321,8 +321,49 @@ rating: 5
- 예를 들어, 데이터 성숙도가 낮은 조직은 간단한 방법으로 데이터를 처리할 수 있으나, 파이프라인이 복잡해질수록 자동화의 중요성이 커집니다. 처음에는 크론 잡을 사용해 데이터 변환 프로세스를 예약하지만, 이는 작업 실패나 예기치 않은 오류를 쉽게 놓칠 수 있습니다. 그러나 조직의 데이터 성숙도가 높아지면, **에어플로**와 같은 오케스트레이션 시스템을 통해 자동화하고 작업 간의 종속성을 관리할 수 있습니다.
****
**2. 관찰 가능성과 모니터링**

- 페트렐라의 DODD 방법론은 데이터 관찰 가능성을 강조하는 훌륭한 프레임워크로, 데이터와 데이터 애플리케이션에 대한 가시성을 확보하고 그 변경 사항을 추적할 수 있도록 합니다. DODD는 데이터 엔지니어링 수명 주기 전반에 걸쳐 데이터를 추적하고 문제가 발생하기 전에 예방하거나 해결할 수 있게 도와줍니다. 이를 통해 모든 데이터 사용자들이 데이터 가치를 최적화하고, 문제를 신속히 파악하고 대응할 수 있도록 합니다.

**3. 사고 대응(Incident Response)**

- 데이터옵스는 이러한 기술적 요소들을 결합하여, 데이터 파이프라인을 신뢰성 있고 효율적으로 운영하며, 데이터 제품을 빠르게 개발하고 품질을 유지하는 데 필수적인 역할을 합니다.
- <span style="color:blue;">**🔥 데이터 아키텍처**</span>

**데이터 아키텍처**는 원천 시스템부터 데이터를 수집하고 저장하며, 변환하고 서빙하는 과정에서 발생하는 설계 패턴, 기술 및 도구의 트레이드오프를 신중히 고려하는 작업입니다. 데이터 엔지니어는 데이터 아키텍트와 협력하여 아키텍처를 구현하고, 그 설계에 대한 피드백을 제공할 수 있어야 합니다. 이는 시스템 전반에서 데이터 흐름을 최적화하고, 각 단계에서 발생할 수 있는 다양한 문제를 해결하기 위해 필수적인 과정입니다.

데이터 분석 트레이드오프는 다양한 데이터 처리 기술, 성능, 비용, 유지 관리 용이성 등의 요소 간의 균형을 맞추는 것을 의미합니다. 예를 들어, 데이터 파이프라인을 설계할 때 실시간 처리와 배치 처리의 선택, 데이터를 저장하는 데 사용할 시스템(예: 데이터베이스, 데이터 웨어하우스, 데이터 레이크 등)의 선택은 분석에 있어 중요한 트레이드오프입니다.

데이터 아키텍처는 유연성과 확장성을 고려하여 설계되어야 합니다. 비즈니스 환경이 변화함에 따라 데이터 처리 시스템도 신속하게 적응할 수 있어야 하므로, 민첩성을 확보하는 것이 중요합니다. 시스템은 변화하는 요구사항에 대응할 수 있어야 하며, 이를 위해 모듈화된 설계와 자동화된 배포 파이프라인이 필수적입니다.

데이터 아키텍처의 목표는 단순히 기술적 요구사항을 충족시키는 것뿐만 아니라, 이를 통해 비즈니스 가치를 창출하는 데 있습니다. 데이터를 효과적으로 수집하고 분석하여 비즈니스 의사결정을 지원하고, 기업 전략에 실질적인 기여를 할 수 있는 데이터 시스템을 구축하는 것이 핵심입니다.
- <span style="color:blue;">**🔥 오케스트레이션**</span>

**오케스트레이션**은 다양한 작업을 효율적이고 빠르게 실행하기 위해 예약된 순서대로 조정하는 프로세스입니다. 이 프로세스는 데이터 엔지니어링과 소프트웨어 개발에서 중요한 역할을 하며, 여러 단계에서 발생할 수 있는 작업 종속성 및 스케줄링 문제를 해결합니다.

오케스트레이션 엔진은 일반적으로 유향 비순환 그래프(DAG) 형태로 작업 간 종속성을 관리합니다. DAG는 작업들의 순서를 정의하며, 이를 바탕으로 작업을 한 번만 실행하거나, 특정 간격(예: 매일, 매주, 매시간, 5분마다 등)으로 자동으로 실행되도록 설정할 수 있습니다. 이러한 엔진은 시스템의 복잡한 작업을 스케줄링하고 실행할 수 있도록 돕습니다.

**작업 모니터링 및 오류 처리:**

- 오케스트레이션 시스템은 실행 중인 작업을 모니터링하고, 작업 간의 종속성이 완료되면 새로운 작업을 시작합니다. 또한, 외부 시스템과 도구를 모니터링하여 데이터가 도착하거나 조건을 충족하는지 확인하고, 조건이 맞지 않으면 오류를 발생시키며 경고를 보냅니다. 예를 들어, 이메일이나 다른 채널을 통해 경고 메시지를 전송할 수 있습니다.

**기능 및 시각화:**

- 고급 오케스트레이션 엔진은 작업 기록 기능, 시각화 기능, 경고 기능 등을 제공합니다. 이러한 기능은 작업의 진행 상황을 추적하고, 시스템에서 발생하는 문제를 시각적으로 쉽게 이해할 수 있도록 도와줍니다. 또한, **백필 작업(backfill)**과 같은 기능도 지원하여 새로운 DAG 또는 개별 작업을 기존의 종속성에 맞게 추가하거나 재실행할 수 있게 해줍니다.

**DAG의 이식성 및 테스트:**

- 초기 오픈 소스 프로젝트들은 에어플로(Airflow) 의 핵심 설계를 기반으로 하면서도, DAG의 **이식성(portability)**과 **테스트 가능성(testability)**을 개선하려고 노력했습니다. 이들 프로젝트는 엔지니어가 로컬 개발 환경에서 운영 환경으로 쉽게 이동할 수 있도록 돕는 목표를 가지고 있습니다. 대표적인 프로젝트들로는 **프리팩트(Prefect)**와 **대그스터(Dagster)**가 있습니다. 이러한 시스템은 더 나은 확장성과 테스트 기능을 제공하며, 개발 및 운영 환경 간의 차이를 최소화하려 합니다.

**기타 오케스트레이션 엔진:**

- **아르고(Argo)**는 쿠버네티스(Kubernetes) 프리미티브를 기반으로 구축된 오케스트레이션 엔진으로, 쿠버네티스 환경에서 애플리케이션의 생성과 운영을 최적화하는 데 중점을 둡니다.

- **메타플로(Metaflow)**는 넷플릭스의 오픈 소스 프로젝트로, 데이터 과학 오케스트레이션을 개선하는 데 초점을 맞추고 있습니다. 이는 데이터 과학자의 작업을 효율적으로 관리하고 실험을 추적할 수 있도록 설계되었습니다.

0 comments on commit 8ae9e2d

Please sign in to comment.