러스트(Rust)의 불안한 입지

Mon, Jul 11 2022 14:39:05 KST

Rust는 메모리 안전 (memory-safe) 언어로 알려져 있습니다. 그래서 Rust에 호기심 있어서 알아보았습니다.

1. 안전성이 필요한 분야

곰곰히 생각해보니까 Java, Python, Ruby, Crystal, Zig 언어도 메모리 안전한 언어라는 것입니다.

Java, Python, Ruby 언어는 native binary 를 생산하는 언어가 아니기 때문에 Rust와 Java, Python, Ruby를 비교하기는 무리가 있습니다. 그래서 Rust 를 Crystal, Zig 와 비교해보았는데,

성능: Zig > Rust > Crystal (성능은 Zig 가 제일 좋습니다)
메모리 사용량: Zig < Rust < Crystal (메모리 사용량은 Zig 가 제일 적습니다)
생산성: Crystal > Zig > Rust (생산성은 Crystal 이 가장 높습니다)

그래서 Rust의 활용성이 떨어진다는 거죠.

2. 임베디드 분야

Rust가 C/C++ 을 대체하네 어쩌네 그러는데 Rust로 만들면 바이너리가 커져서 임베디드 분야는 Rust로 C 언어를 대체하는 것이 불가합니다.

3. 리눅스 커널

Rust 커뮤니티는 Rust가 리눅스 커널 제작에 사용될 수 있다고 좋아하는 분위기인데 Rust로 만들면 바이너리가 커져서 리눅스 커널에 Rust가 많이 사용될 수록 리눅스 커널 자체가 망할 확률이 커집니다. 왜냐하면 리눅스 커널은 핸드폰, 임베디드 기기 등에 매우 폭넓게 사용되는데 리눅스 커널 바이너리가 커지면 임베디드 분야에서는 리눅스 커널을 사용하길 꺼리겠죠.

4. 서버

서버는 24시간 돌아가야 됩니다. 그래서 뻑나지 않고 돌아가는 것이 매우 중요합니다. C/C++ 로 만들면 메모리 관련하여 뻑날 가능성이 도사리고 있고 C/C++ 로 서버 만드는게 쉬운 일이 아닙니다. Java로 만들면 C/C++ 로 만든 것보다 뻑날 가능성이 적고, C/C++ 보다 생산성이 좋고, 개발자를 구하기 쉬워서 Java가 기업에서 히트를 친거 같은데… 기존에 잘 돌아가는 Java 서버를 Rust로 갈아엎을 일이 있을까요. 그러면.. C/C++ 로 만든 서버를 Rust로 갈아엎을 일이 있을까요. 보통은 이미 만들어놓은 건 웬만해서는 다른 언어로 포팅하지 않습니다.

그렇다면 기업용 신규 서버를 개발한다고 할 때 C/C++, Java, Rust, Go, Crystal 들 중에서 귀하께서는 무슨 언어를 택하겠습니까?
저 같으면 Crystal 을 택하겠는데 만약 제가 기업에서 개발시켜야 하는 입장이라면.. 신생 언어 Crystal 을 택하지는 않을 것이고 생산성 떨어지고 개발자도 구하기 어려운 Rust 를 택하지도 않을 것이고 C/C++, Java, Go 이렇게 셋 중에서 택할 거 같은데 Go 에 점수를 더 주고 싶습니다. 성능이 Java보다 나으니까요.

결론:

C 언어를 대용할 목적의 언어가 히트치려면

  • 제 1조건은 편리해야하고
  • 제 2조건은 C 를 대체할 수 있어야 합니다.

하지만, Rust는 편리하지도 않고 C 를 대체할 수 없습니다.

Zig, Go, Crystal, Nim 이런 언어들 때문에 Rust의 활용처는 점점 줄어들지 않을까요?
Zig 는 성능이 C 와 대등하고 Go, Crystal, Nim 언어는 C 보다 느리지만, 상당히 빠르면서, 사용하기 편리하고, 메모리 안전한 언어이기 때문에 Rust 사용처가 마땅치 않습니다.

앞으로 언어의 판도가 어케 될지 모르는 상황에서 Rust를 주력 언어로 삼는 건 인생 낭비가 될 수 있습니다.
Zig, Go, Crystal, Nim 이들 언어의 판도를 지켜볼 필요가 있습니다.