속도 < 방향
[Rust Web Development : 러스트 웹개발] 도서 리뷰 및 러스트 프로그래밍 언어 소개 본문
last update : 2024-09-26
참고 도서 : 러스트 웹 개발
위 책을 리뷰합니다.
1. 개요
러스트는 시스템 프로그래밍 언어로, interpreter 언어와 달리 컴파일러가 있다. Go의 garbage colletion 이나 Java의 JVM으로 인한 성능 저하가 없고, 파이썬/루비처럼 읽기 쉽다. C언어만큼 좋은 성능을 발휘하는데, 그 이유는 런타임 에러를 제거해주는 컴파일러 덕분이다. 메모리 안정성과 성능 및 편의성에 중점을 둔 언어로, 가비지 컬렉터 없이 메모리 안전성을 제공하며 C++의 대체재로써 등장했다. Mozilla 재단에서 처음 발표했는데, C++은 안전하지 않은 메모리 관리로 인해 비숙련 프로그래머가 코드 작성 시 오류나 취약점 발생 위험이 높아진다는 배경에서 처음 개발되었다. C/C++ 언어에서 메모리 버그를 완전히 잡아내기는 어렵다.
장점
성능 (runtime, garbage colletion 없음)
안전성 (컴파일러가 비동기 환경에서도 메모리 안전성 확인)
생산성 (테스트, 문서화, 패키지 관리자에 대한 기본 제공 툴로 빌드 및 유지보수가 쉬움)
활용
C, C++ 같은 언어를 사용하는 곳에서 대체가 가능하며 Node.js, Java, Ruby 등을 사용하는 곳에서도 사용할 수 있다.
웹 어셈블리로 컴파일하는 데 적합하며 블록체인 구현에도 사용된다.
러스트는 적절한 도구들을 함께 제공하는데, 아래는 애플리케이션 작성 시 필요한 도구들이다.
러스트는 기본적으로 C 컴파일러 기반이기 때문에 C 컴파일러가 설치되어 있어야 한다.
sudo apt update
sudo apt install build-essential
위 커맨드를 통해 기본적인 C 컴파일러를 설치한 후 Rust 컴파일러를 실행할 수 있다.
일반적으로 cargo 명령어를 통해 대부분의 rust 파일이 실행되는데, cargo 는 rust의 패키지 관리자이고, 해당 명령어를 통해 러스트 프로젝트를 만들고 실행할 수 있다.
cargo new 명령어는 지정한 이름으로 새로운 폴더를 만들고 새 깃 구조를 초기화한다.
새로 만들어진 폴더는 아래와 같은 구조로 되어있는데, src 디렉토리는 핵심 지점이다. 애플리케이션 코드는 이 안에 들어간다.
Cargo.toml 은 서드파티 종속성 라이브러리를 설정하는 곳으로 바이너리를 빌드할 때 다른 저장소 등에서 가져온다. 바이너리를 만들 때 target 폴더를 만들고 그 안에 넣는다. target 폴더 내의 debug 폴더에는 cargo run 명령어를 실행할 때 실행될 바이너리 파일이 들어있다.
cargo run 명령어는 애플리케이션을 빌드하고 ./target/debug 폴더 내의 바이너리를 실행한다.
러스트 컴파일러는 바이트코드를 생성하고 이를 LLVM이라는 다른 컴파일러에 전달하여 기계코드를 만든다.
cargo.toml 파일은 json, yaml 같은 구성 파일 형식이다.
유지보수성
패키지 관리자인 cargo 에는 코드 주석으로 문서를 생성하는 명령이 있어 기본 툴을 사용하여 적절하게 문서화할 수 있다.
또한 테스트도 기본으로 지원하기 때문에 불필요한 마찰과, 테스트를 위한 새로운 툴 검색 등의 리소스를 줄일 수 있다.
요약
- 바이너리를 만드는 시스템 프로그래밍 언어이다. 엄격한 컴파일러가 제공되므로 실수나 개선점을 쉽게 발견할 수 있어 디버깅이 용이하다.
- 비동기 관련 런타임을 포함하지 않기 때문에 비동기코드를 작성할 때 적합한 런타임을 선택해야 한다.
- 속도, 안전성, 정확성은 유지보수 시 엄청난 이점이 있다.
- 문서와 테스트가 언어 자체에 내장되어 있다.
참고 도서 : 러스트 웹 개발
위 책은 러스트 언어를 사용하여 기본적인 언어 및 컴파일 구조, 웹 서비스 개발, 배포까지의 전체 과정에 대해 잘 설명하고 있다.
특히 웹 개발을 할 때 고려해야 하는 사항 중 중요한 속도, 메모리 안정성, 런타임 성능 등 많은 측면에서 장점을 가지고 있는 언어로, 요새 신흥 강자로 떠오르는 언어이다.
자바 공화국인 한국에서 C/C++은 활용도나 러닝커브 측면에서 꺼려지기 마련이었는데, 나는 이 책을 통해 큰 도움을 많이 받아 강력추천한다. 생각보다 러닝커브가 높지 않아 너무 즐겁고 쉽게 러스트 언어에 대해 익힐 수 있었다.
'개발 > 리뷰' 카테고리의 다른 글
[도서/딥러닝] 구글 브레인 팀에게 배우는 딥러닝 with Tensorflow.js (0) | 2022.07.28 |
---|