ETL에서 클린 코드: Python, Go, SQL이 각각 여러분에게 다른 사고 방식을 가르쳐 줍니다

발행: (2025년 12월 2일 오후 01:52 GMT+9)
7 min read
원문: Dev.to

Source: Dev.to

Cover image for Clean Code in ETL:How Python, Go, and SQL Each Teach You to Think Differently

Hey Devs 👋

때때로 데이터 엔지니어링에서 가장 큰 교훈은 거대한 시스템이나 화려한 아키텍처에서 오지 않는다… 더 단순한 것에서 온다:

언어 간 전환.

나는 Python, Go, 그리고 SQL을 각각 다른 단계에서 사용해 데이터를 이동하고 변환하는 일련의 ETL 작업을 하고 있었다. 며칠 동안 이 언어들을 오가며 작업한 뒤, 뭔가가 깨달았다:

“잠깐… 각 언어가 나에게 ETL을 다르게 쓰도록 강요하고 있구나.”

ETL과 조금이라도 관련이 있거나 데이터 엔지니어링 기본을 배우고 있다면, 왜 사람들은 데이터 시스템에서 언어를 자주 섞어 쓰는지 이해하는 데 도움이 될 것이다.

🧩 트리거: 3가지 사고방식을 가르쳐 준 간단한 작업

작은 연습으로 시작했다:

  1. 원시 데이터 정리 → Python
  2. 처리된 데이터를 효율적으로 푸시 → Go
  3. 데이터베이스 안에서 형태 만들기 → SQL

작업 자체는 특별하지 않았지만, 각 언어가 나에게 생각하게 만든 방식은 완전히 달랐다.

🐍 Python: 표현력 있는 변환의 언어

Python은 ETL을 유연하게 만든다. 행을 정리하든, 스키마를 정규화하든, CSV → Parquet 변환이든, Python은 다음을 장려한다:

  • 가독성 높은 변환
  • 빠른 실험
  • 지저분한 데이터 처리
  • “설명하듯이 작성하기”

ETL 로직을 가장 쉽게 표현할 수 있는 곳이다.

Python 사용 시 사고방식:
“모든 엣지 케이스를 다루는 명확한 코드를 작성하자.”
성능보다는 정확성과 명확성에 집중한다.

적합한 경우:

  • 피처 엔지니어링
  • 데이터 정제(워랭글링)
  • 포맷 변환
  • 데이터 보강 단계

⚡ Go: 구조와 성능을 강제하는 언어

데이터를 빠르게 이동해야 할 때—단순 변환이 아니라—Go가 빛난다. Go는 다음을 강요한다:

  • 엄격한 타입 지정
  • 예측 가능한 메모리 사용
  • 배치 처리
  • 동시성 패턴
  • 제어된 오류 처리

사실상 ETL 사고방식을 새롭게 재배선한다:

“효율적으로, 일관되게, 빠르게 만들자.”

Python이 스토리텔링이라면, Go는 구축이다.

적합한 경우:

  • 인제스트 스크립트
  • 커넥터
  • 대량 삽입
  • 데이터 이동을 위한 CLI 도구

(예를 들어 ClickHouse에 삽입한다면, Go가 매우 자연스럽게 느껴진다.)

🧾 SQL: 절차가 아닌 의도를 표현하는 언어

SQL은 ETL이 항상 단계별 코드를 작성하는 것이 아니라는 점을 상기시킨다. 때때로 우리는 단순히:

  • 데이터의 형태를 기술하고
  • 관계를 기술하고
  • 원하는 정제된 결과를 기술한다

…그리고 엔진이 나머지를 처리한다.

SQL은 다른 정신 모델을 강요한다:

“어떻게 계산할지 말하지 말고, 어떤 결과가 필요한지만 데이터베이스에 알려라.”

적합한 경우:

  • 중복 제거
  • 집계
  • 표준화된 테이블 조인
  • 분석용 데이터셋 형태 만들기

종종 SQL 하나의 우아한 SELECT 문이 전체 Python 코드를 대체한다.

🧠 더 큰 교훈: 깨끗한 ETL은 하나의 언어에 국한되지 않는다

사람들은 종종 묻는다:

  • “Python만으로 ETL이 충분할까?”
  • “Go로 전환해야 할까?”
  • “언제 SQL이 변환을 담당해야 할까?”

세 가지를 모두 섞어 사용해 본 뒤, 진실은 훨씬 단순하다:

깨끗한 ETL은 각 언어의 강점을 결합함으로써 얻어진다.

  • 변환에는 Python 사용
  • 인제스트 + 성능에는 Go 사용
  • 모델링 + 결과 형태 지정에는 SQL 사용

이것을 배우기 위해 거대한 파이프라인이 필요하지 않다—작은 작업 하나만으로도 차이를 명확히 알 수 있다.

💬 여러분 차례

이 언어들을 ETL에 번갈아 사용해 본 적이 있다면, 여러분의 이야기를 듣고 싶다:

  • 무엇이 자연스러웠나요?
  • 무엇이 고통스러웠나요?
  • 어느 언어가 더 깨끗한 설계로 이끌었나요?

그리고 데이터 엔지니어링을 배우고 있다면—작은 다중 언어 ETL 실험을 해보라. 어떤 튜토리얼보다 더 많은 것을 배울 수 있을 것이다.

Back to Blog

관련 글

더 보기 »