Dusty 시작 — ETL 및 연구 데이터 정리를 위한 작은 DSL

발행: (2025년 12월 11일 오후 08:55 GMT+9)
5 min read
원문: Dev.to

Source: Dev.to

ETL 및 연구 데이터 정리를 위한 작은 DSL, Starting Dusty 표지 이미지

몇 주 동안 나는 진지하게 나만의 프로그래밍 언어를 만들 생각을 해왔습니다. 거대한 범용 언어도 아니고, 파이썬을 대체할 것도 아니며, 야심찬 목표도 없습니다. 작고, 유용하며, 집중된 무언가를 만들고 싶었습니다.

그때 Dusty가 등장합니다.

Dusty는 ETL 작업과 연구 데이터 정리를 위해 설계된 가벼운 DSL(도메인‑특화 언어)입니다. 그 이상도 이하도 아닙니다. 거대한 생태계, 패키지 매니저, 프레임워크가 없습니다. 목표는 단순합니다: 복잡한 CSV/JSON 정리 작업을 짧고 읽기 쉬운 스크립트로 바꾸는 것.

제가 직접 겪은 문제들부터 시작합니다. 연구 데이터나 해커톤 데이터셋을 다룰 때마다 같은 패턴을 반복하게 됩니다:

  • CSV 로드
  • 행 필터링
  • 결측값 수정
  • 일부 필드 이름 변경
  • 다른 파일과 조인
  • 정리된 결과 내보내기

파이썬도 가능하지만 스크립트가 금방 지저분해집니다. Pandas는 강력하지만 작은 작업에는 과합니다. SQL은 구조화된 테이블에 좋지만 불규칙한 CSV에는 맞지 않습니다. 대부분의 ETL 도구는 기업용으로 만들어졌고, 학생이나 인디 개발자를 위한 것은 아닙니다.

그래서 Dusty는 과도한 부하 없이 간단한 데이터 변환에 초점을 맞춥니다.

Dusty가 어떻게 보일까 (초기 프로토타입 아이디어)

Dusty 스크립트는 다음과 같습니다:

source users = csv("users.csv")

transform adults = users
  | filter(r -> int(r.age) >= 18)
  | map(r -> { id: r.id, name: r.name })

save adults to csv("clean_adults.csv")

읽기 쉽습니다.
import 문이 없습니다.
보일러플레이트가 없습니다.
그저 데이터 흐름만 있습니다.

핵심 ETL 연산

Dusty는 다음과 같은 핵심 연산을 지원합니다:

  • source
  • filter
  • map
  • select / rename
  • join
  • aggregate
  • save

실험실, 프로젝트, 대학 연구에서 사용하는 실제 데이터셋을 정리하기에 충분합니다.

구현 방식

첫 언어 프로젝트이기 때문에 실용적으로 접근합니다:

  • Dusty 인터프리터는 파이썬으로 작성됩니다(문법과는 무관).
  • Dusty 코드는 .dusty 파일에 저장됩니다.
  • 사용자는 간단한 CLI로 실행합니다:
dusty run main.dsty

v0.1 로드맵

Dusty v0.1을 다음과 같이 완성할 계획입니다:

  • 동작하는 파서
  • CSV 지원
  • filter / map 연산
  • save 기능
  • 몇 개의 예제 파이프라인
  • 기본 문서화

패키지 매니저, 모듈, 대규모 기능은 아직 추가하지 않을 것입니다. Dusty v0.1은 누구든 한 번에 전체 프로젝트를 이해할 수 있을 정도로 작게 유지됩니다.

공개적으로 작성하는 이유

한 가지 깨달은 점이 있습니다: 조용히 혼자 만들면 길을 잃기 쉽습니다. 공개적으로 만들면, 비록 조용히라도, 자연스럽게 책임감을 갖게 됩니다. 그래서 이 주간 블로그는 작은 DSL을 처음부터 만들면서 겪는 진행 상황, 실수, 통찰을 공유하기 위한 수단입니다.

큰 약속은 없습니다.
과장도 없습니다.
그냥 꾸준히 작업합니다.

Back to Blog

관련 글

더 보기 »