# Rust를 공부하는 이유 ### 서문: 익숙함 너머의 도전 Python 하나로도 충분히 많은 일을 해낼 수 있다. 실제로 나는 지금까지 거의 모든 데이터 엔지니어링 업무를 Python을 중심으로 해결해왔다. 하지만 언젠가부터 '이걸로 정말 충분한가?'라는 의문이 생겼고, 그 질문은 곧 '내가 직접 오픈소스를 만든다면 어떤 언어로 어떤 구조를 설계할 수 있을까?'라는 고민으로 이어졌다. 이 글은 그런 고민에서 출발해, 내가 Rust라는 언어에 관심을 갖고 배우게 된 이유, 그리고 오픈소스 창시자가 되고 싶은 의지를 담은 글이다. ### 왜 나는 Python을 쓰고 있는데 다른 언어들(Scala/Rust)에 관심을 가지고 있는가 — 오픈소스 창시자로 가는 길 최근 3년간 나는 Python을 기반으로 거의 모든 데이터 엔지니어링 작업을 무리 없이 수행하고 있다. - **Python**으로 Airflow DAG를 작성해 파이프라인의 워크플로우를 구성하고, - **Python**으로 PySpark를 활용해 대용량 데이터를 처리하며, - **Python**으로 라는 언어로 S3 기반 Data Lake를 운영하는 데에도 전혀 부족함이 없다. 게다가 대부분의 데이터 엔지니어링 관련 기술은 Python SDK나 Connector를 기본으로 지원하므로, 실무를 위해 다른 언어를 반드시 배울 필요는 없어 보인다. 그런데 나는 지금 Rust라는 언어에 관심을 가지고 공부하고 있다. 왜일까? ### 매번 내게 건네는 질문: "이걸 지금 배워서 어디에 쓸 수 있나?" 솔직히 말하면, 실무에서 당장 Rust를 사용할 일은 장담하건데 결코 없다. 대부분의 데이터 파이프라인은 Python으로 충분하고, 실제 내가 운영 중인 시스템도 대부분 Python 기반이다. 그럼에도 불구하고 Rust를 배우고 있다는 사실은 단순한 호기심 이상의 의지를 반영한다. ### 결론: "나는 오픈소스 프로젝트 창시자가 되고 싶다" 나는 언젠가 직접 오픈소스 프로젝트를 만들고, 운영하며, 성장시키는 사람 — 창시자(creator)가 되고 싶다. 단순히 GitHub에 코드를 올리는 것을 넘어서, 내가 만든 프로젝트가 누군가에게 실제로 도움이 되고, 다른 개발자들이 기여하고 싶은 대상으로 성장하길 바란다. 그렇다면 내가 만드는 프로젝트는 단순한 wrapper나 glue code를 넘어서서, **코어 로직 자체를 다룰 수 있어야** 한다. 바로 그 지점에서 Apache Spark[^1]의 Scala나 Apache DataFusion[^2]의 Rust처럼 코어 로직을 담당하는 언어들이 필요해진다. ### Rust는 나에게 어떤 언어인가 Rust는 단순한 시스템 프로그래밍 언어가 아니다. 내가 꿈꾸는 오픈소스의 '코어'가 될 수 있는 언어다. Polars, DataFusion, Arrow 같은 프로젝트는 이미 Rust 기반으로 개발되고 있고, 단순히 사용하는 것을 넘어 내부 구현을 보고, 수정하고, 확장하려면 Rust를 알아야 한다. 이건 마치 PySpark로 ETL 작업 코드를 작성하던 내가, 더 깊은 최적화를 위해 Spark의 Scala 코드를 들여다보는 것과 같다. 높은 추상화만을 사용하는 일반 사용자(거의 대부분)에서, 더 낮은 추상화 단계를 이해하는 이해자, 나아가 직접 코드를 기여하는 기여자로 성장하려면 언어 장벽을 넘어야 한다. Rust는 그 장벽이자, 동시에 가능성이다. ### 나는 왜 Rust를 배우는가 — 다시 쓰는 결론 나는 실무에서 Rust를 쓸 일이 거의 없다는 것을 잘 알고 있다. 하지만 지금부터 틈틈이 Rust와 같은 언어를 익혀둔다면, 가까운 시일 내에 내가 관심 있는 오픈소스 프로젝트의 코어 영역에 직접 기여할 수 있을 것이고, 조금 더 먼 미래에는 내가 직접 오픈소스를 시작하고 이끌어갈 수도 있을 것이다. 다시 말하지만, 지금은 Python만으로도 충분하다. 하지만 내가 원하는 미래는, Python에만 익숙해져 다른 언어는 아예 거들떠보지 않는 개발자가 되는 것이 아니다. 내가 꿈꾸는 미래의 나는 Python은 물론 Rust, Scala 등 다양한 언어를 자유롭게 넘나들며 핵심을 설계할 수 있는 개발자다. 그리고 그 첫 걸음이 지금 내가 쓰고 있는 이 글이다. ### 마무리: 익숙함을 넘어, 본질로 향하는 길 누군가는 Rust를 배우는 이유를 묻는다. 나는 그 질문에 이렇게 답하고 싶다. "당장은 필요 없지만, 언젠가는 반드시 쓰일 것이다." 그리고 무엇보다, 나는 그 언젠가를 기다리는 사람이 아니라, 그 미래를 준비하는 사람이고 싶다. 익숙함에 안주하지 않고, 조금씩 시야를 넓히기 위한 작은 실천 — 지금 배우는 Rust와 오픈소스에 대한 관심은 그 시작일 뿐이다. [^1]: Apache Spark™ is a multi-language engine for executing data engineering, data science, and machine learning on single-node machines or clusters. - https://spark.apache.org [^2]: DataFusion is an extensible query engine written in [Rust](http://rustlang.org/) that uses [Apache Arrow](https://arrow.apache.org/) as its in-memory format. - https://datafusion.apache.org