Scientia Conditorium

[책리뷰] 러스트 서버, 서비스, 앱 만들기 본문

서평/IT-책

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

크썸 2024. 6. 7. 22:35

[책리뷰] 러스트 서버, 서비스, 앱 만들기 - 백엔드 서버, 서비스, 프런트엔드 모두 러스트로 안전하고 빠르게 구축하기

 

 

전반적인 소감 및 마음에 드는 부분

개발자들이 가장 사랑하는 언어인 러스트로 실제 제품을 만드는 과정을 보여준 좋은 책입니다. 러스트를 사용해 웹 서비스와 애플리케이션을 개발하는 방법을 학습하도록 설계되었습니다. 튜토리얼 접근 방식을 통해 하나의 예제 코드를 점진적으로 개선해나가는 부분이 가장 마음에 들었습니다. 지금까지 러스트를 C++ 대체로 사용하거나 웹에서는 백엔드 부분에서만 사용하요 시스템 개발 언어로 알고 있었는데, 이 책을 통해 전반적인 사용법을 알게되어서 좋았습니다.

 

주석뿐만 아니라 코드 실행 관련하여 자세하게 설명되어 있습니다

이 책은 온라인 강의 플랫폼(디지털 스토어프런트)을 예시로 이를 만들기 위해 어떤 구조와 기술이 필요한지 설명해줍니다. 즉, 1장부터 쭈욱 따라하면 온라인 강의 플랫폼을 만들 줄 알게 됩니다. 이것저것 다른 외부 라이브러리를 덕지덕지 붙여나가는 것이 아니라 러스트 자체 기능을 주로 이용해서 서비스를 시작부터 배포까지 할 수 있도록 도와줍니다. 

 

 

대상 독자 및 책 난이도

러스트를 활용하여 제품을 만들어보고 싶은 사람들에게 추천합니다.

  • 서버 사이드, 웹 백엔드, API 개발에 참여하거나 흥미를 갖고 있는 백엔드 소프트웨어 엔지니어
  • 러스트를 GO, Java, C++의 대안으로 살펴보고 있는 분산 시스템 엔지니어
  • 머신러닝, 인공지능, 사물 인터넷, 이미지/비디오/오디오 처리 및 실시간 시스템의 백엔드 같은 영역에서의 저징ㄴ 서버와 애플리케이션을 개발하는 소프트웨어 엔지니어

러스트를 처음 공부하는 사람들에게는 다소 어려운 책 입니다. 어려운 부분을 저자가 잘 설명해주고 있기 때문에 천천히 진행하면 충분히 따라갈 수 있지만, 책 내용을 잘 활용하기 위해서는 백엔드 개발 경험을 갖고 있으며 러스트 혹은 C++에 어느 정도 친숙한 상태여야 합니다. 저자가 말하는 러스트에 친숙한 정도의 기준으로 아래 내용을 알고 있어야 한다고 합니다.

  • 러스트 프리미티브(데이터 타입), 사용자 정의 데이터 구조(구조체, 열거형), 함수, 표현식, 제어 루프(if, for while 루프)
  • 불변성(immutability), 소유권(ownership), 참조(reference), 대여(borrowing)
  • Result 및 option 구조체를 사용한 에러 핸들링
  • 러스트의 기본 함수 구조
  • 러스트 툴체인(빌드/디펜던시 관리 및 코드 포매팅을 위한 Cargo, 문서화, 자동화 테스팅 도구 등)

이것 저것 적혀있지만, 함축적으로 러스트를 이용해서 간단한 프로그램이라도 만들어본 경험이 있느냐 정도가 되겠습니다. 

 

 

다루는 내용과 범위

이 책의 마음에 드는 부분 중 또 다른 하나는 실제적인 프로젝트들의 연속으로 구성되어 있다는 점 입니다. 즉, 1장부터 쭉 따라하면 예제 코드와 함께 학습과 더불어 제품을 만들어 나가게 됩니다. 책의 마지막 부분을 학습하게 될 때쯤이면 상용 제품에 가까운 상태가 되도록 계속해서 진화해 나갑니다.

책 챕터는 크게 나누었을 때 3부, 12장으로 구성되어 있습니다. 1부에서는 웹 애플리케이션의 기본 개념을 소개하고, 필요한 기반들을 다집니다. 2부에서는 프론트 엔드 및 GUI에 관한 부분을 다룹니다. 브라우저에서 실행되는 웹 프레임워크 대신 서버 사이드 렌더링에 의존하는 간단한 접근 방식만 다룹니다.

각 장에서 다루는 핵심 내용만 추려보면 아래와 같습니다.

  • 분산 아키텍처와 웹 애플리케이션 같은 핵심 개념, 러스트의 강점 및 러스트 사용 여부 결정에 관한 힌트들
  • TCP Echo C/S 및 HTTP 서버, 컴포넌
  • 러스트를 사용해 RESTful 웹 서비스를 구현하는 방법
  • 데이터베이스에 데이터를 유지해야 할 필요성, 크레이트를 사용해 SQL 데이터베이스와 상호작용
  • 웹 서비스를 호출할 때 발생할 수 있는 예상치 못한 상황을 다루는 방법
  • 서버 사이드 렌더링 프레임워크, 사용자에게 입력을 요청하는 방법과 아이템 리스트를 처리하는 방법
  • 서버 사이드에서 사용되는 템플릿 엔진, 사용자 등록을 지원하는 방법
  • 고급 웹 애플리케이션 주제(사용자 인증, 라우팅, CRUD 방식으로 데이터를 유지보수하기 위해 RESTful 웹 서비스를 효과적으로 사용하는 방법 등)
  • 비동기 프로그래밍 및 러스트가 비동기 프로그래밍 패러다임을 지원하는 방법
  • P2P 애플리케이션 개발에서 러스트가 제공하는 강력함
  • 웹 애플리케이션을 도커 이미지로 준비하고 패키징하는 방법

어떤 프레임워크를 선택한 이유를 자세히 설명해줍니다.

결론

이 책은 참조용 가이드가 아니라 개요를 설명하는 책입니다. 즉, 러스트를 사용해 개발할 수 있는 다양한 네트워크 서비스에 관한 영감을 주는 가이드로 사용하는 편이 훨씬 더 좋습니다. 온라인 플랫폼 개발을 해본 적이 없기에 Rust를 특정 부분만 대체하거나 쓸 수 있는 방법이 확실히 떠오르지 않는다. 다만 Rust의 강점은 비동기 프로그래밍과 안정성을 생각했을 때, 이 책은 추후 사이드 프로젝트 할 때 좋은 가이드가 되어주었다. 비슷한 분야에 재직 중인 현업자들에게는 좋은 대채 수단 및 인사이트를 제공해줄 수 있으며, 나처럼 웹에 관심을 가져 조금씩 도전해보려는 사람들에게는 아주 좋은 가이드가 된 책이다.

 

"제이펍 리뷰어 3기 활동을 위해 책을 제공받아 작성된 서평입니다."