## 실무에서는 Python 하나로도 충분하다 지금까지 대부분의 데이터 엔지니어링 업무는 Python만으로 충분했습니다. - Airflow로 DAG 코드 작성 - PySpark로 Spark DataFrame API 코드 작성 - boto3로 AWS 클라우드 인프라 서비스 관련 코드 작성 대부분의 데이터 엔지니어링 기술은 Python Binding이나 Wrapper 형태로 제공되기 때문에, 실무에서는 굳이 다른 언어를 직접 다룰 필요가 없었습니다. ## **프로그래머로서 Python 하나만 잘하는 건 멋 없다** 어느 날 문득 이런 생각이 들었습니다. - “Python 하나만 잘하는 사람을 진짜 프로그래머라고 할 수 있을까?” - “Python Binding 아래의 **코어 로직**은 어떤 언어로 만들어져 있으며, 누가 설계했을까?” 우리가 익숙하게 사용하는 데이터 엔지니어링 관련 기술들의 핵심로직은 대부분 Python가 아닌 다른 언어들로 작성되어 있습니다. - **Apache Spark** → Scala - **NumPy** → C - **Apache DataFusion** → Rust - **Polars** → Rust - **DuckDB** → C++ 보시다시피, (조금 단호하게 말하자면) 데이터 엔지니어링 세계에서 Python은 **코어 위에 얹힌 바인딩 계층에 불과합니다.** Python의 편리한 인터페이스 아래에 더 낮고, 더 정교한 언어들이 있다는 것이죠. 저는 그 **코어 레벨의 세계를 이해하고 직접 다루는 프로그래머**가 되고 싶습니다. 또한 단순히 사용하는 것을 넘어, **코어 레벨의 로직들을 이해하며 더 나아가 직접 설계하고 작성하는 방향**으로 나아가고 싶습니다. ## Spark를 매우 많이 사용하고 있지만 Scala 대신 Rust가 끌리더라 저는 언젠가 많은 사람들에게 도움을 주는 오픈소스 프로젝트를 직접 만들고 운영해보고 싶습니다. 내가 만든 서비스가 다른 개발자 및 모두에게 실질적인 가치를 주고, 함께 발전하는 생태계를 만들고 싶기 때문입니다. 그런 프로젝트를 만들려면, Python 바인딩을 작성하는 수준을 넘어 **코어 로직을 직접 설계하고 최적화할 수 있는 언어**를 다뤄야 합니다. 이를 위해 제가 선택한 언어가 바로 Rust입니다. ## 그래서, 다른 언어도 아닌 왜 Rust? Rust는 단순한 시스템 언어가 아니라, “성능”과 “안정성”이라는 두 축을 모두 잡을 수 있는 도구입니다. Polars, DataFusion, Arrow(Rust 구현체에 한함) 같은 프로젝트는 이미 Rust로 쓰여 있습니다. 단순히 사용만 하는 입장에서, 내부 구현을 이해하고 기여할 수 있는 사람으로 성장하기 위해서 Rust는 선택이 아닌 필수입니다. ## 지금 필요한 것은 완벽함이 아니라 방향입니다 Rust를 당장 실무에서 쓸 계획은 없습니다. 하지만 지금부터 공부하고 익혀두면, 가까운 시일 내에 오픈소스 프로젝트의 코어 영역에 직접 기여할 수 있을 것입니다. Python 하나만으로도 충분했던 시절에서, 이제는 Python과 Rust를 함께 이해하며 시스템의 본질을 설계할 수 있는 개발자로 발전하고 싶습니다.