러스트 서버, 서비스, 앱 만들기 리뷰

falconlee236

·

2024. 5. 29. 00:34

반응형

러스트 프로그래밍 언어를 여러분은 알고 계신가요?

생전 처음 들어본 사람도 있을 것이고, 이름만 들어볼 수도 있을 것이며, 조금 다뤄본 사람도 있고, 능숙하게 다뤄본 사람도 있을 것입니다.

 

러스트는 현재 개발자 산업에서 가장 유명하다고 할 수 있는 언어 입니다. 매년 스택 오버 플로우에서 배우고 싶은 언어 1위를 차지하고 있는 언어이기도 합니다.

2023 스택오버플로우 설문조사 통계중에서 개발자들이 가장 배우고 싶어하는 언어 1위가 rust이다. 출처 :https://survey.stackoverflow.co/2023/#most-popular-technologies-language

 

러스트는 c언어의 가장 큰 단점인 메모리 관리가 어렵다는 점을 해소하고자 등장했습니다. c언어는 메모리를 프로그래머가 직접 다루게 해서 더 빠른 성능과 시스템 내부까지 코딩이 가능하다는 장점을 가지고 있지만 메모리를 직접 다루기 때문에 실수하기 쉽다는 단점이 있습니다.

단적인 예로 c언어를 프로그래밍 하면서 발생하는 segfault오류는 유효하지 않은 메모리 주소 공간을 참조하면서 생기는 가장 흔한 문제이고, 또한 malloc으로 할당받은 heap memory를 해제하지 않아서 발생하는 메모리 누수 문제 또한 c언어 프로그래밍의 고질적인 문제입니다. 왜냐하면 작은 규모의 프로그램이라면 프로그래머가 쉽게 메모리를 해제할 수 있지만 프로그램의 크기가 커지고 구조가 복잡해질 수록 프로그래머가 일일이 누수가 발생한 메모리 변수를 일일이 찾아서 해결할 수 없기 때문입니다.

 

러스트는 위 문제들을 소유권이라는 개념으로 해결했습니다. 소유권에 대한 자세한 내용은 러스트 공식 홈페이지에서 확인할 수 있습니다. https://doc.rust-lang.org/book/

 

The Rust Programming Language - The Rust Programming Language

by Steve Klabnik and Carol Nichols, with contributions from the Rust Community This version of the text assumes you’re using Rust 1.76.0 (released 2024-02-08) or later. See the “Installation” section of Chapter 1 to install or update Rust. The HTML f

doc.rust-lang.org

 

이러한 특성 때문에 러스트언어는 시스템 프로그래밍 분야에서만 사용한다고 사람들에게 인식되고 있었습니다. 저도 그렇게 생각하고 있었습니다. 

 

하지만 학교 네트워크 수업에서 소캣 프로그래밍을 러스트로 해오라는 과제가 있었고, 자연스럽게 저는 러스트로 소캣 프로그래밍을 하면서 러스트의 네트워크 프로그래밍 가능성을 확인할 수 있었습니다. 그리고 저는 자연스럽게 러스트, 소캣 프로그래밍, 웹 프로그래밍 총 3가지 단어를 함께 아우를 수 있는 부분을 공부하고 싶었기 때문에 이 책인 러스트 서버, 서비스, 앱 만들기라는 책을 손에 잡았습니다.

출처: 교보문고

 

이 책의 특징은 섬세하고 예제 설명이 자세하다는 점입니다.

시중의 일부 책들은 프로그램 코드만 덩그러니 제시하고 이에 대한 설명이 매우 부실한 경우가 많습니다. 심지어 코드 설명을 코드 주석으로 때우는 경우도 매우 많습니다. 하지만 이 책 같은 경우는 한 코드에 설명이 2페이지 이상 있는 경우가 매우 많습니다. 따라서 저 처럼 러스트를 기존에 해본 사람에는 배웠던 내용을 복습하는 기회가 될 수 있고 러스트를 처음 공부하는 사람들에게는 러스트의 핵심 키워드를 책을 통해서 알 수 있게 되고 나중에 따로 공부할 때 학습 자료를 쉽게 찾을 수 있다는 장점이 존재합니다.

 

서버와 앱프로그래밍의 전통적인 강자는 역시 자바스크립트입니다. 그리고 이 책을 읽으면서 자바스크립트의 단점과 러스트의 장점을 확실히 알 수 있게 되었습니다. 이 책은 러스트의 장점을 가지고 프로그램을 작성합니다.

 

그리고 쉽게 접할 수 없는 다양한 패키지를 알려줍니다. rust에서 서비스를 만드는데 반드시 필요한 tokio 패키지는 이 책이 아니였다면 구글에서 검색 조차 할 수 없어서 매우 난관이였을 것입니다. 

 

마지막으로 가장 중요하고 제가 이 책에 마음에 들었던 점은 책 구성이 단계적으로 되어있고, 책을 전체적으로 따라가다 보면 하나의 완성된 웹 프로그램을 만들 수 있다는 점입니다. 심지어 서버와 DB연결까지 한번에 되어있습니다. 이 부분은 제가 글로 설명하기 힘들기 때문에 이 글을 읽고 있는 독자들이 직접 책을 구매하면서 느껴봤으면 좋겠습니다. 

 

러스트는 위에서 언급했듯이 외국 개발자들이 가장 배우고 싶어하는 언어이고, 이 인기를 반증하듯이 점점 수많은 책이 쏟아지고 있는 상황에 직면했습니다. 개발자는 평생 공부해야 하는 직업이고 새로운 언어를 배우는 것을 두려워하면 안된다고 생각합니다. 그렇기 때문에 저는 이 책을 추천하는 바입니다. 처음하는 사람에게 약간 어려울 수 있지만 그렇다고 아주 못할 정도는 아닙니다. 여러분 자신의 한계를 극복하고 한단계 성장하는 경험에 제 기여가 약간이라도 존재했으면 좋겠습니다. 감사합니다.

반응형