DOCKER
DOCKER는 컴퓨터 안의 컴퓨터라고 생각하시면 좋습니다. 기존의 가상환경을 구축하는 것보다, 더 경량화된 컨테이너를 구축하는 작업이라고 보시면 됩니다. 다만 운영체제의 사양이 어느정도 받쳐줘야 사용할 수 있습니다. 특히 AIRFLOW의 경우에는 DOCKER CONTAINER에 8기가 정도의 메모리를 줘야 에어플로우를 쓰는데 문제가 없습니다.
- DOCKER IMAGE
- 단순히 응용 프로그램 뿐만 아니라 그 프로그램이 필요로 하는 모든 다른 환경까지 포함한 소프트웨어 패키지
- Docker Registry에 가면 다양한 Docker Image들을 찾아볼 수 있습니다.
- Docker Container
- Docker Image를 Docker Engine에서 실행한 것을 지칭
- Docker Engine만 실행하면 그 위에서 다양한 소프트웨어들을 충돌없이 실행 가능합니다.
Kubernetes(K8s)
컨테이너 기반 서비스 배포/스케일/관리 자동화를 해주는 오픈소스 프레임워크입니다. 가장 많이 사용되는 컨테이너 관리 시스템이며, Docker & K8s 조합으로 가장 많이 사용합니다. 다수의 서버에 컨테이너 기반 프로그램을 실행하고 관리할 수 있습니다.
- 컨테이너 기반 프로그램 == Docker Container
- 보통 Docker와 K8S는 같이 사용됨
- Pod: 같은 디스크와 네트웍을 공유하는 1+ 컨테이너들의 집합
AIRFLOW와 Kubernetes
DAG 수가 많아지면 WORKER 노드에서 TASK를 실행하는 것이 어려워집니다.
- DAG 별 필요한 환경설정이 생기고, 그들 간의 충돌이 발생하게 됩니다.
- 또한 다수의 WORKER 노드들을 AIRFLOW 전용으로 쓰는 것 자체는 낭비가 될 수 있습니다.
이에 대한 해결 방법으로 K8S를 WORKER 노드 대용으로 사용합니다.
- KubernetesExecutor를 사용
- Airflow task 코드를 Docker 이미지로 만듬
- 이 이미지를 K8S 클러스터에서 실행하는데 2가지 방법이 존재
- KubernetesExecutor
- DAG의 전체 태스크들이 하나의 Pod로 실행됨
- KubernetesPodOperator
- DAG의 특정 태스크들이 각각 별개의 Pod로 실행됨
- Pods는 K8S에서 가장 작은 배치 가능한 컴퓨팅 유닛!
- KubernetesExecutor
DBT
DBT는 ELT용 오픈소스로, DBT LABS라는 회사가 상용화한 데이터 빌드 툴입니다. ELT 과정에서의 각종 테스트, 문서화, 히스토리 저장 등 다양하고 범용적인 방식으로 ELT를 지원합니다. 데이터분석가들이 주로 사용합니다.
일단 DBT의 장점은,
- 다양한 데이터웨어하우스를 지원합니다(REDSHIFT, SNOWFLAKE, BIGQUERY, SPARK)
- 다수의 컴포넌트로 구성되어있습니다.
- 데이터 모델(MODELS) -> DATA LINEAGE 추적 가능 -> DATA DISCOVERY TOOL
- 입력 데이터(SEEDS)
- 데이터 체크(TESTS)
- 스냅샷(SNAPSHOTS)
- 클라우드 버전을 지원합니다(dbtCloud)
'데이터 엔지니어링 > 실리콘밸리에서 날아온 데이터엔지니어링 스타터 키트' 카테고리의 다른 글
[6주차] AIRFLOW SLACK 연동(파이프라인 에러메시지 받기) (0) | 2023.05.07 |
---|---|
[6주차] AIRFLOW 주요 고려사항 정리 (0) | 2023.05.07 |
[5주차] Airflow + Redshift로 ELT 구현하기 (0) | 2023.05.07 |
[5주차] Airflow BackFill(Incremental Update, execution_date) (0) | 2023.05.07 |
[5주차] OLTP/OLAP, MYSQL 데이터 복사하기 (0) | 2023.05.07 |