러스트(Rust) 2년 + @ 후기
첫 후기 작성한지 도 꽤 시간이 지났네요.
러스트는 그간 생태계적으로나, 언어 자체적으로나 많은 발전이있었고
벌써 2024Edition이 나왔습니다.
개인적으로는 이제는 언어자체의 특이성이 뭔지도 생각이 안날 정도로 익숙해져서
러스트를 짜면서 생긴 습관들이, 다른 언어를 다뤄야 할때 자연스럽게 표현이 되는 것 같아요.
아마 이게 마지막 러스트 관련 후기가 될 것 같습니다.
그래서 뭐가 달라졌나요? - 1. 좋은 코드스타일
좋은 코드는 디자인/설계에 대한 이해, 그리고 상황에 맞는 끊임없는 리팩토링으로부터 나온다고 생각합니다.
러스트 컴파일러/아날라이저는 아주 강력한 정적 분석을 제공해서 Jetbrain등에서 제공하는 IDE서포트와는 차원이 다른
리팩토링 안전성을 제공합니다.
가령 리팩토링을 수행하려고할때,
“기능이 잘 돌아가는데 왜 굳이 위험 감수하고 코드를 고쳐” 라는 반대논리가
사실은 그 언어에서 어느정도 일리가 있는 말일 수 있는데,
러스트에서는
“위험이 없는데 왜 좋은 코드를 못짜” 의 느낌이랄까요..
실제로 리팩토링하면서 breaking change가 되는 경험을 한적이 거의 없습니다.
그래서 뭐가 달라졌나요? - 2. 안전한 코드
c#, python 등의 다른 언어를 중간중간에 사용하면서,
과거와 비교해서 제 코드 스타일이 굉장히 안전해졌다는 느낌을 받습니다.
단순히 러스트를 짜면서 러스트 내에서 당연히 제공되는 안전성을 의미하는 게 아니라,
정말로 데이터의 흐름, 소유권, 레퍼런스, 라이프타임등을 등등을 자연스럽게 체크하게 됩니다.
물론 비즈니스 유즈케이스를 만약 제가 잘못이해하고있다면 논리적 버그는 발생하고
그런 부분은 러스트를 포함한 어떤 언어로도 막을 수 없지만요.
그래서 뭐가 달라졌나요? - 3. 개발자로서의 포텐셜
다른 언어를 하면서는 뭔가, 제가 개발자로서 기여할수있는 영역이 이미 그 시장에 맞춰서 정해져있는 느낌이었습니다.
예를 들어 웹 백엔드라던지, AI, 데이터 엔지니어 등이요.
하지만 데이터베이스라던지, 채팅 등의 고성능 백엔드, 네트워크 등 tech-heavy한 영역은
마음속에서 뭔가 건드리기 어렵다거나, 건드려봐야 쓸모가 없다고 느낀적이 많았습니다.
러스트를 사용하면서는 요즘에 개인적으로는 데이터베이스도 직접 만들어보고, 분산시스템으로 확장도 해보고 있습니다.
기회가 되면 블록체인등도 해볼수있고, 리버스 프록시등도 직접 만들어서 단순히 원리를 이해하는데 멈추는게 아니라
그게 직접 제 다음 직장으로 연결될 수 있는 가능성이 있다는게 좋은 것 같아요.
아 물론 이게 러스트가 모든 곳에 “적합하다”라는 말을 하는 건 아닙니다.
가령 프론트 작업을 러스트로 하는건 현재 툴들로 “가능”은 하지만,
최적의 툴은 아니다라는 평이 많은 것 같아요.
개인적으로 그쪽에 큰 관심을 두지 않아서 이부분은 그냥 전해들은 이야기입니다.
그래서 뭐가 달라졌나요? - 4. 연봉!
많은 분들이 관심있을만한 부분인것 같은데요 ㅎㅎ
여러가지 요소가 섞여있겠지만 러스트를 하면서 제 스스로 개발자로서 엄청나게 성장을 했다고 생각해요.
처음 시작했을때만 해도 라이브러리나 프레임워크가 엄청나게 다양하지 않았어서 특정 부분은 직접 만들수있는 방법을 생각해봐야 했고
그러다보니 프로그래밍에 대한 이해, 네트웤에 대한 이해, 비동기에 대한 이해 뭐 그런 것들이 자연스럽게 파고들게 된 부분이 있습니다.
직접 만들어도 c,c++ 급의 성능과 안전성이 보장되어있으니 괜찮겠다 하는 호승심 같은것도 있었던 것 같구요.
현재 3.5년차인 제 미천한 경력이지만, 한국 중견기업이었던 첫 직장과 비교해서 현재 연봉은 세후 기준 5배 +@ 정도 차이가 나요!
(저는 현재 외국에 있어서 (미국 아님) 고려되야할 부분이 있지만요.)
Rust 추천하시나요?
앞으로의 코딩은 점점 더 쉬워질거라고 생각합니다.
러스트 관련 검색을 해보시면 망설이는 대부분의 이유를 높은 난이도를 꼽는데,
글쎄요.. 수능으로 따지면 4등급만 되도 이정도 이해하는건 어렵지 않을 것 같은데? 하는 생각이에요 ㅎㅎ
그렇게 ‘난이도’ 부분이 해결되고 나면
결국 가독성/안전성/유지보수성 그런것들을 보게되고, 그 레벨은 사실 개발자의 결정보다는 회사의 결정이 더 크다고 생각합니다.
많은 회사들이 이 부분을 이미 인지하고 있고, 제가 알고있는 거의 모든 빅테크에서는 러스트를 도입했습니다.
실제로 러스트 재단의 핵심멤버인 Nico Matsakis 씨는 아마존에서 Senior Principle Engineer로 재직하면서 러스트를 열심히 심고 있고, Atomics&Locks 로 유명한 Mara Bos는 중국 화웨이에 테크 컨설팅을 하고있어요.
구글은 이미 Android OS 를 러스트로 짜서 메모리 취약점을 76%개선했고..
리눅스 개발자들사이에서 러스트 도입에 대해서 논쟁/논란이 많다는건 많이들 알고계실거라 생각합니다. 그리고 굉장히 보수적이라고 평가받는 리눅스 커뮤니티에서 아마 언어를 가지고 이정도로 논쟁이 있었던 건 유례가 없는 것으로 알고있습니다.
물론 개인적으로 리눅스가 러스트를 더 채택해야하는가에 대해서는 별로 의견이 없습니다. 제가 그럴 짬바가 아직 안되는 것 같아요.
어쨋든 종합적인 평결을 내보면, 러스트 추천합니다.