NEW 기획 디자인 개발 프로덕트 아웃소싱 프리랜싱

개발

소유권을 가진 언어, 러스트(Rust)

IT 모니카

러스트(Rust)

컴퓨터 프로그래밍 언어 하면 C나 C++, 고(Go), 러스트(Rust), 파이썬, 코틀린, 타입스크립트 등을 떠올릴 수 있습니다. 이러한 프로그래밍 언어 중에서 러스트(Rust)는 2006년에 모질라의 개발자 그레이던 호어(Graydon Hoare)의 개인 프로젝트로 시작되었고, 2009년 모질라의 웹 브라우저 엔진 프로젝트가 되었습니다. 이런 러스트가 공식적으로 세상에 나온 것은 2015년 5월이고, 공개된 이후 지속적인 업그레이드 버전을 내고 있습니다. 그리고 2020년 러스트는 모질라에서 독립해, '러스트 재단(Rust Foundation)'을 공식 출범하여 러스트의 개발 및 배포, 운영 정책 등이 더욱 활발한 상태입니다.

 

이렇게 세상에 알려진 러스트는 시스템 프로그래밍 언어로서 다른 프로그램 언어들을 지원하고, 프로그램을 안정적으로 이끄는 역할을 합니다. 또 소스 파일을 작성, 이를 컴파일하고 기계어 파일로 변환한 후, 시스템 소프트웨어를 개발하는 언어입니다. 러스트는 다른 프로그래밍 언어들과 비교했을 때 후발 주자에 해당하는데요. 러스트가 세상에 등장한 지 이제 10여 년 정도밖에 되지 않았고, 아직 대중화되지 않았기 때문입니다. 오늘은 후발주자이지만, 앞으로의 발전이 기대되는 프로그래밍 언어 러스트의 기능과 특징, 그리고 활용 정도에 대해 살펴보겠습니다.

 

 

러스트(Rust)

러스트는 다양한 플랫폼에서 작동된다

프로그래밍 언어로서 러스트는 오픈 소스 시스템 (Open Source Software System, OSS)으로 모두에게 공개되어, 누구나 자유롭게 액세스를 할 수 있고 확인과 수정, 배포까지 가능합니다. 현재 러스트가 지원하는 프로그램 및 운영체제는 마이크로소프트 윈도(Microsoft Windows), 리눅스(Linux), 맥 OS(Mac OS X), 안드로이드 등으로 대다수의 시스템을 지원할 수 있습니다.

 

 

러스트는 메모리 오류를 방지할 수 있다

러스트는 다른 프로그래밍 언어들이 가지고 있는 기능뿐 아니라 별도의 보안 기능도 있습니다. C 언어와 C++ 언어와 같은 프로그래밍의 역할을 유지하면서도, 메모리를 잃지 않도록 버그를 방지하는데요. C 언어, C++ 언어들을 별도로 설정하여 이들 언어를 관리할 수 있고, 컴파일 시점에 메모리 오류를 찾아낼 수도 있습니다. 메모리 오류를 어떻게 방지하는지 구체적으로 보면 다음과 같습니다. 러스트는 프로그램을 변환하는 컴파일을 할 때, 필요한 코드를 일목요연하게 정리해서 삽입해주는 역할을 합니다. 이 점이 장점인 이유는 일반적으로 C 언어와 같은 프로그래밍 언어를 생각하면 알 수 있습니다. C 언어는 클린업 코드를 할 때 개발자가 직접 삽입해야 합니다.

 

하지만 러스트는 메모리 오류를 없애기 위해 개발자가 하는 것이 아니라, 컴파일러가 스스로 삽입해주기 때문에 개발자의 일을 줄일 수 있습니다. 이것이 가능한 것은 러스트를 이용하는 중에 오류가 일어나거나, 변수로 중단되면 메모리가 바로 해제되기 때문입니다. 또한 러스트는 안전하지 않은 메모리 현상이 나타나는 경우에도 빛을 발합니다. 러스트는 불안 요소가 감지되면 컴파일링을 멈추는데, 이 기능 때문에 러스트의 구문과 다른 언어의 충돌이 일어나지 않고, 흔히 나타나는 메모리 문제가 나타나지 않으니 오류 걱정을 하지 않아도 된다는 점 또한 러스트의 장점이라 할 수 있습니다.

 

러스트(Rust)

러스트의 핵심 기능은 소유권(Ownership)이다

러스트의 메모리 오류 방지는 러스트의 핵심 기능인 소유권이 있기 때문입니다. 이 소유권에 대해서도 살펴보겠습니다. 러스트의 소유권 개념에 앞서, 가비지 컬렉션(GC)에 대한 이해가 필요한데요. 여기서 가비지 컬렉션은 가비지(쓰레기)의 뜻처럼 프로그램 개발 과정에서 유효하지 않은 메모리를 말합니다. 어떤 프로그램이든 작동하다가 필요 없는 메모리가 발생하는 경우가 있는데, 이때 필요 없는 메모리 영역을 해제하는 기능입니다.

 

그런데 러스트는 GC가 없어도 메모리 안전이 보장된다는 이점이 있습니다. 그 이유는 바로 러스트가 가지고 있는 소유권(Ownership)때문입니다. 러스트의 핵심 기능인 소유권은 다소 낯선 개념일 수 있는데요. 소유권 기능은 컴퓨터의 모든 프로그램이 실행되는 동안 컴퓨터의 메모리를 관리합니다. 러스트에서 발생하는 모든 값들은 변수를 갖는 데 이것을 소유(Owner, 주인)라고 하고, 이때 발생되는 변수에 대해 오직 하나의 소유만 존재합니다. 반대로 소유하는 값이 없을 경우 자동적으로 버려지고 해제되므로 GC가 따로 작업할 필요가 없는 것입니다.

러스트(Rust)

 

 

러스트의 인기와 활용 정도

러스트의 인기와 활용 정도
컴퓨터 프로그래밍 사용에 대한 스택오버플로우의 조사

 

이쯤되면 러스트의 인지도는 어느 정도일지 궁금해지는데요. 개발자들이 프로그래밍에 대한 질문과 답변을 공유하는 스택오버플로우의 조사를 보면 알 수 있습니다. 현재 러스트는 스택오버플로우에서 진행한 프로그래밍 언어 인기투표에서 5년 연속 1위를 차지할 정도로 개발자에게 높은 인기를 얻고 있습니다. 이를 통해 개발자들의 꾸준한 관심을 받고 있음을 알 수 있습니다. 하지만, 사용도 면에서는 인기에 비해 좋은 성적을 거두지 못했습니다. 이는 프로그래밍 문법과 부족한 라이브러리 등으로 초대형 프로젝트에 적용되는 사례가 많지 않아, 러스트의 인기와 사용도가 반비례하는 것으로 보입니다.

 

러스트(Rust)

개발자들이 러스트 사용을 주저하는 이유

높은 인기에도 불구하고, 개발자들이 러스트 사용을 주저하는 이유에 대해서 생각해보게 되는데요. 가장 큰 이유는 러스트가 자랑하는 안정성, 보안, 속도 등에 대한 실제적 검증이 없었다는 점입니다. 앞에서 잠깐 언급한 것처럼 이 부분은 앞으로 다양한 대형 프로젝트에 사용해 검증되어야 할 부분입니다. 또 다른 중요한 이유는 초반 진입장벽이 너무 높다는 것입니다. 러스트가 진입장벽이 높은 이유는 문법이 다소 어렵고, 언어 기능이 다양하기 때문인데요. 그만큼 언어를 배우고 실행시키는데 많은 시간이 필요한데, 개발자들은 프로젝트를 실행하는 데 있어서 빠른 속도가 중요하기에 장애 요인이 되는 것입니다. 마지막으로 종속성 트리가 큰 애플리케이션을 실행할 경우, 컴파일 시간이 오래 걸린다는 평도 자주 나오는데요. 이 또한 시간이 오래 걸린다는 점이 문제로 지적되고 있습니다.

 

 

글로벌 기업들의 러스트 활용
출처: unsplash

글로벌 기업들의 러스트 활용

그러나 러스트의 다양한 장점들이 알려지고, 재단이 새로 꾸려지면서 서서히 변화가 일고 있습니다. 최근 구글, 마이크로소프트, 아마존, 페이스북 등 주요 글로벌 IT 기업들의 움직임을 보면, 성능과 보안에 민감한 인프라 및 시스템 프로그래밍 분야에서 러스트를 찾으면서, 사용 빈도가 조금씩 늘어나는 추세입니다. 러스트 사용에 가장 적극적인 기업은 아마존의 아마존 웹서비스인데요. 아마존 웹서비스는 소프트웨어 및 하드웨어 개발, 지원 엔지니어링, 시스템 및 보안 엔지니어링, 서버리스 컴퓨팅 등 다양한 분야에 러스트를 도입해 적용 중이고, 러스트 전문 개발자를 활발하게 구축하고 있습니다.

 

마이크로소프트는 윈도와 오피스에서 발생하는 메모리 오류 및 취약점을 해결하기 위해 러스트를 채택하여, 윈도용 앱을 개발할 수 있는 도구 러스트 포 윈도(Rust for Window)를 개발 중입니다. 고(Go)를 창안한 구글도 안드로이드 OS 개발 언어로 러스트를 함께 사용하면서, C 언어, C++ 언어의 메모리 버그의 보안 취약점을 해결하고, 오픈소스 프로젝트를 강화하고 있습니다. 그리고 페이스북은 러스트 팀을 따로 조직하여, C++과 러스트를 공동으로 활용하는 모습을 보여주고 있습니다.

 

지금까지 컴퓨터 프로그래밍 언어, 러스트에 대해 살펴보았습니다. 러스트의 이용률은 아직 높지 않지만, 꾸준히 개발자들이 관심을 받고 있으며, 글로벌 기업들이 러스트를 활용하는 이율도 증가하고 있습니다. C와 C++ 등 다른 프로그래밍 언어와 호환이 가능하며, 다른 메모리의 안전성과 속도 등을 보장하는 면이 장점으로 부각되고 있습니다. 러스트는 다른 언어들에 비하면 세상에 등장한 지 얼마 안 된 신생 프로그래밍 언어입니다. 지금은 기존의 언어들과 어울리는데 다소 시간이 필요하지만, 분명한 것은 지금보다 미래가 더 기대되는 프로그래밍 언어라는 점입니다. 앞으로도 러스트의 변화 추이를 꾸준히 지켜보면 좋겠습니다.

IT 모니카

온라인 플랫폼 안에서 IT의 무한한 정보를 글로 표현하고 소통하며 온택트 시대를 살아가는 글쟁이.

같은 분야를 다룬 글들을 권해드려요.

요즘 인기있는 이야기들을 권해드려요.

일주일에 한 번!
전문가들의 IT 이야기를 전달해드려요.

[구독하기] 버튼을 누르면 개인정보 처리방침에 동의됩니다.

일주일에 한 번! 전문가들의 요즘 IT 이야기를 전달해드려요.

[구독하기] 버튼을 누르면 개인정보 처리방침에 동의됩니다.