Split View: 지금 주목받는 오픈소스 (5) 데이터와 ML 파이프라인
지금 주목받는 오픈소스 (5) 데이터와 ML 파이프라인
들어가며 — 스케줄러 하나로 끝나던 시절은 지났다
데이터 파이프라인을 만든다는 말은 오랫동안 스케줄러에 작업을 등록한다는 뜻이었습니다. 지금은 그 문장이 여섯 개의 결정으로 쪼개집니다. 원본을 어떻게 가져올지, 어디서 변환할지, 무엇을 관리 단위로 삼을지, 연산을 어느 엔진에 태울지, 모델 버전을 어떻게 추적할지, 임베딩을 어디에 둘지.
각 결정마다 다른 프로젝트가 자리를 잡았고, 서로 경쟁 관계가 아닌 경우가 많습니다. 아래는 순위가 아니라 담당 구간별 지도입니다.
스냅숏
| 프로젝트 | 라이선스(저장소 선언 기준) | 스타 | 최근 푸시 |
|---|---|---|---|
ray-project/ray | Apache-2.0 | 43,501 | 2026-08-12 |
pola-rs/polars | MIT | 39,339 | 2026-08-12 |
qdrant/qdrant | Apache-2.0 | 33,933 | 2026-08-12 |
mlflow/mlflow | Apache-2.0 | 27,478 | 2026-08-12 |
PrefectHQ/prefect | Apache-2.0 | 23,603 | 2026-08-12 |
dagster-io/dagster | Apache-2.0 | 15,976 | 2026-08-11 |
dbt-labs/dbt-core | Apache-2.0 | 13,623 | 2026-08-12 |
lancedb/lancedb | Apache-2.0 | 11,133 | 2026-08-12 |
apache/datafusion | Apache-2.0 | 9,131 | 2026-08-12 |
bentoml/BentoML | Apache-2.0 | 8,780 | 2026-08-03 |
dlt-hub/dlt | Apache-2.0 | 5,730 | 2026-08-12 |
모두 2026-08-12 기준입니다.
적재와 변환
dlt-hub/dlt는 원본에서 데이터를 꺼내 목적지에 적재하는 부분을 파이썬 라이브러리로 다룹니다. 스키마 추론과 변경 대응, 증분 적재를 맡아 주므로, 소스마다 비슷한 코드를 반복해서 쓰던 일을 줄여 줍니다. 별도 서비스를 세우지 않고 기존 코드베이스 안에 넣을 수 있다는 점이 실무에서 큰 차이를 만듭니다.
dbt-labs/dbt-core는 창고 안에서의 변환을 SQL과 의존 그래프로 관리하는 방식을 표준에 가깝게 만들었습니다. 테스트와 문서화가 함께 붙는다는 점이 본질입니다. 다만 창고 밖의 연산이나 실시간 처리는 이 도구의 영역이 아니고, 오픈소스 코어와 상용 관리형 제품의 경계도 확인해 두는 편이 좋습니다.
오케스트레이션 — 무엇을 관리 단위로 볼 것인가
dagster-io/dagster와 PrefectHQ/prefect는 같은 자리를 다른 관점으로 채웁니다.
Dagster는 산출물을 관리 단위로 삼습니다. 어떤 테이블이 어떤 입력에서 나왔는지가 구조에 드러나므로, 계보 추적과 부분 재실행이 자연스럽습니다. 대신 개념을 먼저 배워야 합니다.
Prefect는 기존 파이썬 함수에 표시를 붙여 흐름으로 만드는 쪽에 가깝습니다. 진입 장벽이 낮아 이미 있는 스크립트를 빠르게 옮길 수 있습니다.
둘 다 도입 자체가 목적이 되면 안 됩니다. 작업이 몇 개뿐이고 의존 관계가 단순하다면 크론과 잘 만든 스크립트가 여전히 정답일 수 있습니다.
실행 엔진
pola-rs/polars는 데이터프레임 처리를 다시 쓴 라이브러리입니다. 지연 실행으로 질의 계획을 세운 뒤 최적화해 실행하므로, 단일 장비에서 다룰 수 있는 데이터 규모의 상한이 눈에 띄게 올라갑니다.
# 예시: 지연 실행으로 큰 CSV를 걸러 집계
import polars as pl
q = (pl.scan_csv("events.csv")
.filter(pl.col("status") == "ok")
.group_by("country")
.agg(pl.len().alias("n")))
print(q.collect().head())
apache/datafusion은 최종 사용자용 도구가 아니라 질의 엔진을 만들기 위한 부품입니다. 직접 데이터 제품을 만드는 팀이 아니라면 이 프로젝트를 고를 일은 드물고, 대신 여러분이 쓰는 도구 안에 이미 들어 있을 가능성이 있습니다.
ray-project/ray는 파이썬 작업을 여러 장비로 분산합니다. 학습, 튜닝, 배치 추론처럼 한 장비를 넘어서는 워크로드에 쓰입니다. 반대로 단일 장비로 충분한 작업에 클러스터를 얹으면 디버깅 난도만 올라갑니다.
모델 수명 주기
mlflow/mlflow는 실험 기록과 모델 레지스트리에서 사실상 기본값에 가깝습니다. 어떤 데이터와 파라미터로 만든 모델이 지금 서비스 중인지 답하지 못하는 팀에게 가장 먼저 필요한 도구입니다.
bentoml/BentoML은 그 모델을 서비스로 포장하는 쪽을 맡습니다. 확인 시점의 최근 푸시는 2026-08-03으로 목록의 다른 프로젝트보다 조금 뜸했습니다. 문제가 있다는 뜻은 아니지만, 릴리스 주기와 이슈 응답을 직접 보고 판단하시길 권합니다.
검색 저장소
qdrant/qdrant는 필터와 벡터 검색을 함께 다루는 벡터 데이터베이스입니다. 메타데이터 조건이 결합된 검색이 많다면 강점이 드러납니다.
lancedb/lancedb는 서버 없이 파일 형식 위에서 동작하는 쪽을 택했습니다. 임베디드 구성으로 시작할 수 있어 초기 비용이 낮습니다.
다만 데이터가 이미 관계형 데이터베이스에 있고 규모가 크지 않다면, 전용 저장소를 도입하기 전에 기존 데이터베이스의 벡터 확장을 먼저 시험해 보는 편이 합리적입니다. 시스템을 하나 늘리는 결정은 되돌리기 어렵습니다.
도입 전 확인
라이선스 전문을 직접 확인하고, 상업적 도입은 법무 검토를 거치세요. 이 글은 법률 자문이 아닙니다.
이 목록은 전부 허용적 라이선스로 보이지만, 데이터 도구는 오픈소스 코어와 상용 관리형 제품을 함께 두는 회사가 많습니다. 문서에서 본 기능이 저장소 안에 있는 기능인지 확인하는 습관이 필요합니다. 그리고 파이프라인 도구는 한번 들어오면 오래 남습니다. 지금 팀 규모에 맞는 가장 단순한 구성에서 시작하세요.
저장소 정보(스타 수·라이선스·최근 활동)는 2026-08-12에 GitHub에서 직접 확인한 시점 값입니다. 수치와 상태는 바뀝니다.
링크
시리즈: 이전 글 — 관측 가능성과 보안 · 다음 글 — 오픈소스 프로젝트를 평가하는 법
이 블로그의 관련 글:
도구: CSV와 JSON 변환 · SQL 플레이그라운드
Open Source Worth Watching Right Now (5) Data and ML Pipelines
- Introduction — the days when a single scheduler was enough are over
- Snapshot
- Ingestion and transformation
- Orchestration — what do you treat as the unit of management
- Execution engines
- Model lifecycle
- Search stores
- Before you adopt
- Links
Introduction — the days when a single scheduler was enough are over
For a long time, saying you were building a data pipeline meant registering jobs with a scheduler. Today that one sentence splits into six decisions. How to pull the source data in, where to transform it, what to treat as the unit of management, which engine to run the computation on, how to track model versions, and where to keep the embeddings.
A different project has settled into each of those decisions, and in many cases they are not competing with one another. What follows is not a ranking but a map organised by the slot each project fills.
Snapshot
| Project | Licence (as declared in the repository) | Stars | Last push |
|---|---|---|---|
ray-project/ray | Apache-2.0 | 43,501 | 2026-08-12 |
pola-rs/polars | MIT | 39,339 | 2026-08-12 |
qdrant/qdrant | Apache-2.0 | 33,933 | 2026-08-12 |
mlflow/mlflow | Apache-2.0 | 27,478 | 2026-08-12 |
PrefectHQ/prefect | Apache-2.0 | 23,603 | 2026-08-12 |
dagster-io/dagster | Apache-2.0 | 15,976 | 2026-08-11 |
dbt-labs/dbt-core | Apache-2.0 | 13,623 | 2026-08-12 |
lancedb/lancedb | Apache-2.0 | 11,133 | 2026-08-12 |
apache/datafusion | Apache-2.0 | 9,131 | 2026-08-12 |
bentoml/BentoML | Apache-2.0 | 8,780 | 2026-08-03 |
dlt-hub/dlt | Apache-2.0 | 5,730 | 2026-08-12 |
All figures as of 2026-08-12.
Ingestion and transformation
dlt-hub/dlt handles the part where you pull data out of a source and load it into a destination, and it does so as a Python library. It takes on schema inference, coping with schema changes, and incremental loading, which cuts down on the near-identical code you used to write for every source. Being able to drop it into an existing codebase without standing up a separate service makes a real difference in practice.
dbt-labs/dbt-core pushed the practice of managing in-warehouse transformations with SQL and a dependency graph to something close to a standard. The essential part is that tests and documentation come attached to it. That said, computation outside the warehouse and real-time processing are not this tool's territory, and it is worth confirming where the line falls between the open source core and the commercial managed product.
Orchestration — what do you treat as the unit of management
dagster-io/dagster and PrefectHQ/prefect fill the same slot from different angles.
Dagster treats the output as the unit of management. Because the structure itself shows which table came out of which inputs, lineage tracking and partial re-runs come naturally. In exchange, you have to learn the concepts first.
Prefect is closer to attaching markers to existing Python functions and turning them into flows. The barrier to entry is low, so you can move scripts you already have across quickly.
Neither one should become an end in itself. If you have only a handful of jobs and the dependencies are simple, cron plus a well-written script may still be the right answer.
Execution engines
pola-rs/polars is a library that rewrote dataframe processing from scratch. It builds a query plan through lazy execution and then optimises it before running, so the ceiling on the data volume you can handle on a single machine rises noticeably.
# Example: filter and aggregate a large CSV with lazy execution
import polars as pl
q = (pl.scan_csv("events.csv")
.filter(pl.col("status") == "ok")
.group_by("country")
.agg(pl.len().alias("n")))
print(q.collect().head())
apache/datafusion is not an end-user tool but a component for building query engines. Unless you are a team building a data product yourselves, you will rarely have occasion to pick this project; instead, there is a good chance it is already inside a tool you use.
ray-project/ray distributes Python work across multiple machines. It is used for workloads that go beyond one machine, such as training, tuning, and batch inference. Conversely, putting a cluster under a job that a single machine handles fine only raises the difficulty of debugging.
Model lifecycle
mlflow/mlflow is effectively close to the default for experiment tracking and the model registry. For a team that cannot answer which model, built from which data and which parameters, is currently in production, this is the first tool they need.
bentoml/BentoML takes on the side of packaging that model as a service. Its last push at the time of checking was 2026-08-03, a little less frequent than the other projects on the list. That does not mean anything is wrong, but I recommend looking at the release cadence and issue responses yourself and judging from there.
Search stores
qdrant/qdrant is a vector database that handles filters and vector search together. Its strengths show when you have a lot of searches that combine metadata conditions.
lancedb/lancedb chose the path of running on top of a file format without a server. You can start with an embedded setup, so the initial cost is low.
That said, if your data already lives in a relational database and the scale is not large, it is more sensible to try the vector extension of your existing database before bringing in a dedicated store. The decision to add one more system is hard to reverse.
Before you adopt
Check the full licence text yourself, and route commercial adoption through legal review. This post is not legal advice.
Everything on this list appears to be permissively licensed, but with data tools, many companies keep an open source core alongside a commercial managed product. You need the habit of checking whether a feature you saw in the documentation is a feature that lives inside the repository. And pipeline tools, once they are in, tend to stay for a long time. Start from the simplest setup that fits the size of your team today.
Repository details (stars, licence, recent activity) were checked directly on GitHub on 2026-08-12 and are point-in-time values. The numbers and the status change.
Links
Series: Previous post — Observability and security · Next post — How to evaluate an open source project
Related posts on this blog:
- Data platforms and the lakehouse, end to end
- MLOps feature stores and Feast
- Vector database comparison
Tools: CSV and JSON converter · SQL playground