KwanIk Devlog
article thumbnail
Published 2023. 1. 12. 23:29
Rust를 시작하면서 Language/Rust

들어가며

회사 사내스터디를 통해서 Rust 라는 언어에 대해 알게되었고, 올해의 목표 중 하나로 Rust 언어에 대한 기본기를 익히고 가벼운 프로젝트를 만들어 보는 것을 계획하게 되었다(회고록은 이번주 주말에 마무리하는 걸로). 구체적인 새 언어를 시작하고자 하는 배경은 회고록에서 기재하는 것으로 하고 그렇다면 왜 Rust를 공부해야겠다고 다짐했는지를 적어보고자 한다.

출처 - https://survey.stackoverflow.co/2022/#most-loved-dreaded-and-wanted-language-love-dread

우선 긴 말 필요없이 StackOverflow 설문조사 자료를 통해 확인할 수 있었던 것은 Rust가 7년 연속 가장 개발자들에게 사랑받는 언어라는 것이다. 7년 그것도 무려 7년이나!🤨 작년 말 드넓은 개발세계를 맛본 뒤로 굉장히 스스로를 우물 안 개구리라고 생각하게 되었고, 현실에 안주하는 삶을 살아오고 있었다는 것을 느끼게 되었었다. 본디 천성이 안정적이고 평범한 삶을 사는 것을 원하는 사람이지만, 평범하게 사는 것도 어려워진 세상에서 과연 내 인생의 모토가 얼마나 효과적인 원동력이 될 것이라는 생각을 한 터일 테다. 안주하는 삶을 살고 싶진 않았기에, 보다 평범한 삶을 효과적으로 누리기 위해 본격적으로 내 직업적 스킬을 늘리겠다고 다짐하게 되었고 Rust가 왜 사랑받는 언어인지를 찾아보게 되었다.

넓은 확장성

첫 번째로, Rust를 통해서 많은 것들을 개발할 수 있다. 기본적으로 Rust를 이용한 Back-end 서버 구축이 가능할 뿐만 아니라, Piston이나 Amethyst와 같은 엔진을 통한 게임 개발, Web Assembly를 통한 웹 애플리케이션 개발, 블록체인 플랫폼, 파이썬이나 R에 비해 알려지지 않았지만 Rust를 이용한 데이터 분석 시스템 VR 개발 등 Rust를 사용하여 개발할 수 있는 것이 굉장히 많다.

메이저 기업들의 사례

두 번째로 전 세계의 메이저 기업들이 Rust를 주도적으로 사용하고 있다(돈이 된단 소리다). 아마존, Cloudflare, 디스코드, Google , MS등이 서비스의 코어를 Rust로 전환하고자 하는 시도가 이루어지고 있으며, 가장 잘 활용한 사례로는 Figma가 Rust Web Assembly로 개발함에 따라 포토샵과 같은 전문가를 위한 툴을 제외하고 전세계의 시장을 잡아먹은 사례가 있다.

낮은 진입장벽

언어라는 것이 기본적으로 진입장벽이 중요한 팩터로 작용할 수 있다고 생각한다. 하지만 C, C++를 하지 않은 나도 Low Level에 가까운 Rust에 쉽게 다가갈 수 있었다(아직 시작이라 그럴수도). 쉽게 다가갈 수 있는 이유는 아래에 추가적으로 나오겠지만, 일단 기본적으로 문서와 커뮤니티가 굉장히 활성화되어 있다. 이는 사실 새로운 언어를 배움에 있어서 가장 중요한 요소 중 하나일 것이라고 생각한다.  

빠른 속도

Rust는 C, C++와 같이 Low Level에 속하는 언어인데 이는 곧, 메모리를 직접 관리해야 한다는 것을 의미한다. 다시 말해 Garbage Collector가 없다는 의미다. Java와 같은 언어에서는 Garbage Collector가 메모리를 알아서 관리해주므로, 메모리를 정리하는 작업에 대해서는 생소할 것이다. 대충 'Garbage Collector가 메모리를 정리해준다'라는 것을 알고 있을 뿐이다. 하지만 Garbage Collector가 존재한다는 것은 곧 퍼포먼스에 영향을 미친다는 소리인데, 실례로 Discord가 Garbage Collector로 인한 퍼포먼스 저하를 막기 위해 Go에서 Rust로 전환하였다.

안전함

빠른 속도에서 언급된 사유에 따르면 C와 같은 Low Level 언어에서는 메모리에 직접 접근을 해야한다는 의미가 되는데, 이는 곧 보안에 취약함을 시사하기도 한다. 하지만 Rust는 C와 다르게 직접 메모리를 할당하거나 해제하는 작업이 필요가 없다. Rust에서는 '소유권(Ownership)'이라는 개념을 도입했는데, 쉽게 얘기하면 데이터는 한번에 변수라는 한 소유자에 의해서 소요될 수 있다는 뜻이다. 사실 지금 소유권에 대해서 공부 중이라 우와우와만 하고 있어서 조금 더 쉽게 풀어쓰지는 못하겠다. Docs를 정주행하면 현재 포스트에 조금 더 보완을 하도록 하겠다.


Rust가 개발자들에게 사랑받는 이유를 보다 직접적으로 느끼기 위해서는 실제로 Document를 읽어보면 더 와닿을 것이라고 생각한다. 아직 초반부를 읽고 있지만, 기존에 알던 패러다임과는 다른 새로운 패러다임을 알게된 기분이라 새롭고 신선하게 다가오고 있다. 무엇인가를 사용하기 위해서는 잘 알고 사용하는 것이 중요하기 때문에, 보다 지식을 견고하게 하고 또 배운 내용을 공유해보고자 한다. Rust에서 웹으로 제공하고 있는 기본 가이드를 따라가며 순차적으로 포스팅을 할 계획이다.

그럼 같이 Rust의 세계에 발을 담궈보자🥸


References

  1. Rust  공식 홈페이지
    1.1 The Rust Programming Language 
  2. StackOverflow 2022년 설문
  3. Who Uses Rust? Companies that use Rust and What Rust is used for
  4. What is Rust? Safe, fast, and easy software development
반응형
profile

KwanIk Devlog

@갈닉

노력하는 개발자가 되고자 합니다. GitHub이나 블로그 모두 따끔한 피드백 부탁드립니다 :)