Apache Arrow 가 본드로 묶는 한 stack
2010년대 Python data stack 은 대부분 Pandas, 가끔 NumPy, 어쩌다 DB 였어. 그 세상은 갔어. Modern stack 은 여러 도구가 함께 뛰는 판이고, 그걸 in-memory 포맷 하나가 묶어 — Apache Arrow. 그래서 등장인물부터 알아 두는 게 도구 선택의 절반이야.
| 도구 | 버전 (2026.8) | 역할 |
|---|---|---|
| Python | 3.14 | 언어. Free-threaded build 는 3.14 부터 정식 지원이야 (PEP 779). 이제 실험 단계 아냐. |
| NumPy | 2.5.1 | 빠른 n차원 배열, Pandas/PyArrow/sklearn/PyTorch 의 수치 토대. |
| Pandas | 3.0.5 | Tabular 데이터: 청소, group, join, reshape. Copy-on-Write 기본, PyArrow-backed string 본격화. |
| Polars | 1.43.1 | Rust 기반 DataFrame. Eager + lazy API. Pandas 가 OOM 하는 데이터도 처리. |
| PyArrow | 25.0.0 | Python 의 Apache Arrow. Pandas / Polars / DuckDB / 스토리지를 copy 없이 잇는 columnar in-memory 포맷. |
| DuckDB | 1.5.5 | In-process SQL 엔진. Parquet/Arrow/CSV/Pandas/Polars 를 직접 query. "분석용 SQLite." |
| Parquet | format spec | Columnar binary 파일 포맷. 압축, 통계, column 단위 prune. 분석 at-rest 의 default. |
| Pandera | 0.32.1 | Pandas 그리고 Polars 둘 다 통합되는 schema validation. |
| Great Expectations | 1.19.1 | 더 무거운 expectation framework, 팀 간 data contract 에 좋음. |
| Apache Airflow | 3.3.0 | 가장 많이 배포된 orchestrator. DAG 안의 task, 그리고 scheduler, DAG processor, API server. Airflow 3 부터 스케줄링이 asset·event 를 안다. |
| Dagster | 1.13.16 | Asset-first orchestrator. 태스크가 아니라 데이터 asset 을 모델링. |
| Prefect | 3.8.1 | Pythonic flows. 가벼움, Airflow 보다 인프라 부담 적음. |
| dbt | 1.12.0 | SQL transformation 을 version-controlled 코드로. 진짜 modeling 이 일어나는 곳. 옆에 Fusion 엔진 위의 dbt v2 가 preview 로 같이 있어. |
| JupyterLab | 4.6.2 | 탐색용 인터랙티브 notebook IDE. 배포 타겟 아님. |
Arrow 가 본드
Apache Arrow 는 언어에 묶이지 않는 columnar 메모리 포맷이야. 실전에서 왜 중요하냐면 — PyArrow 로 Parquet 을 읽고, 그 Arrow Table 을 Pandas 에 넘기고, DuckDB 로 query 하고, 결과를 Polars 로 보내도 — 어느 단계도 데이터를 복사하지 않아. 전부 같은 메모리 buffer 를 공유해. 단계를 건널 때마다 serialize-deserialize 하던 옛 세상과 갈라지는 지점이 바로 여기야.
Arrow 를 별도 과목처럼 공부할 필요는 없어. 거기 있다는 것만 알면 돼. 그리고 Arrow-aware 라이브러리 (Pandas 3.0, Polars, DuckDB, PyArrow) 를 골라 쓰는 것만으로 stack 전체가 빨라진 것처럼 느껴져.