독서일기

[Rust]개발자 인생 새로 쓰고 싶다면 반드시 읽어야 할 책(Feat.제로부터 시작하는 러스트 백엔드 프로그래밍)

Woonys 2024. 3. 24. 23:30
반응형

Introduction

시작부터 꽤나 자극적이긴 한데.. 어느 정도는 맞다고 생각한다. 내가 그런 생각으로 이벤트를 신청했기 때문이다.

개발자 관련 도서 출판사로 유명한 제이펍에서 인스타를 통해 서평단을 모집한다는 공고를 발견하고 지원했다. 지원글에 이렇게 작성했다.

 

폴리글랏을 꿈꾸는 백엔드 개발자입니다. 회사에서는 자바/코틀린, 사이드 프로젝트는 파이썬을 쓰고 있는데요. 러스트는 이전부터 배워야지, 배워야지 생각만 하고 차마 시도는 해보지 못했던 언어입니다. 워낙 접할 경로가 없다보니 낯설어서 그런 게 가장 큰 이유인 것 같습니다. 이때 이런 책이 있다면 마음에 큰 부담을 덜어줄 것 같습니다. 꼭 당첨돼서 러스트를 재밌게 공부할 수 있는 기회가 주어지면 좋겠습니다 :)

 

개발자에게 있어 프로그래밍 언어는 어떤 역할일까? 말 그대로 명령을 실행시키기 위한 도구에 지나지 않다. 자바는 자바대로의 장점이 있고 파이썬은 파이썬대로의 장점이 있다. 서로 다른 언어를 두고 무엇이 더 우월하네 따지는 것은 마치 망치와 드라이버를 놓고서 무엇이 더 뛰어난 도구인지를 논하는 것과 다를 바가 없다. 그저 각 언어마다 장단점을 이해하고 적재적소에 필요한 언어 및 그에 맞는 환경을 사용하는 것이 뛰어난 개발자로서의 덕목이지 않을까?

 

그런 맥락에서, 러스트는 아래 보는 바와 같이 계속해서 인기가 올라가고 있는 신흥 언어임에도 이 언어에 대해 아는 바가 없다보니 새로운 도구 리스트에 추가할 엄두가 나지 않았다. 그러던 차에 서평단에 당첨됐으니 얼마나 좋겠나.(정작 책을 이제야 펼쳐보는 게 함정이지만..)

 

TIOBE INDEX 2024 - 러스트 인기는 계속 증가 추세

 

책 뭐가 좋은데?

모든 개발자에게 다 좋은 책은 확실히 아니다. 러스트를 배워보고 싶은 마음이 안 드는 분이라면 애초에 제외될 수밖에 없다. 그런데 만약 자신이 백엔드 개발자이고, 폴리글랏까지는 아니더라도 러스트에 약간이나마 관심이 있다면 이 책은 꽤나 큰 도움이 될 것이다. 왜냐면, 이 책의 초점은 "러스트"가 아니라 "백엔드 프로그래밍"에 있기 때문이다. 책의 서문을 살펴보자. 앞서 내가 얘기했던 관점과 같은 맥락의 주제를 전하고 있다.

 

소프트웨어 개발이라는 영역에 '절대'란 없다. 어떤 기술이나 접근 방식의 좋고 나쁨을 평가할 때는 먼저 여러분의 관점을 명확하게 해야 한다.(...) 러스트는 안정적인 소프트웨어를 생산적으로 만들어내는 강점을 가졌다. 물론, 러스트는 여러분이 가진 모든 문제를 풀지는 못한다. 하지만 모든 종류의 실수를 없애고자 노력했다. - <제로부터 시작하는 러스트 백엔드 프로그래밍>

 

서문을 더 찬찬히 읽어보면 꽤나 재밌는데, 계속 이어서 적어본다.

 

백엔드 개발의 세계는 끝없이 넓고 무궁무진하다. 여러분이 작업 중인 콘텍스트는 여러분이 해결하고자 하는 문제를 다루는 최적의 도구와 프랙티스에 큰 영향을 미친다. 예를 들어 트렁크 기반 개발은 ㅈ속적으로 클라우드 환경에 배포되는 소프트웨어를 작성하는 데는 굉장히 효과적이다. 그러나 고객이 호스팅하거나 온프레미스에서 운영하는 소프트웨어를 판매하는 비즈니스 모델이나 팀에는 적합하지 않다. 

<제로부터 시작하는 러스트 백엔드 프로그래밍>은 백엔드 애플리케이션 개발과 관련이 없는 것처럼 보일 수 있는 주제까지 광범위하게 다룬다. (...) 처음부터 테스트 주도 개발과 지속적인 통합(CI)에 중점을 둔다. 웹서버를 설치하고 실행하기 전에 CI 파이프라인을 먼저 구축할 것이다. API에 대한 블랙박스 테스팅이나 HTTP 모킹 같은 기법을 다루는 것은 불론이고, 러스트 커뮤니티에서 유명하거나 문서화되지는 않았지만 매우 강력한 기법도 소개한다. 또한 도메인 주도 설계 용어와 기법을 활용해 타입 주도 설계와 조합하고 시스템이 정확하게 동작할 수 있도록 할 것이다. 따라서 우리는 지루하고 올바른 해결책에 중점을 둔다. 성능 오버헤드가 발생한다 하더라도 더 신중하고 정교한 접근 방식을 통해 최적화할 수 있을 것이다.

러스트가 API 개발을 위한 생산적인 언어가 될 수 있을까? 질문에 대한 답은 '그렇다'이다. 나는 러스트 관련 책을 이미 읽어본 백엔드 개발자를 위해 이 책을 썼다. 그리고 현재 러스트 생태계에서 사용할 수 있는 아티클이나 자원이 부족하다고 생각하는 틈새시장을 위해 이 책을 썼다. 백엔드 개발을 위해 러스트를 사용한다면 여러분은 어떤 툴박스를 갖고 있으며, 디자인 패턴은 무엇을 사용하고, 그에 따른 단점은 무엇이라 생각하는가?

 

그렇다. 이 책은 단순히 러스트를 배우는데 초점을 맞추기보다 백엔드 프로그래밍을, 나아가 클라우드 네이티브 소프트웨어 엔지니어링을 더 잘 할 수 있는 도구 중의 하나로써 러스트를 활용하고 있다고 보는 게 맞다. 그래서인지 책은 러스트 문법에 대해서는 1도 설명하지 않은 채 러스트 셋업이 끝나면 곧바로 뉴스레터 API 서버를 제작하는 장부터 시작한다.(꽤나 당황했다) 그래도 러스트 셋업은 도와주니 다행인듯..

 

책 서문에서도 언급하듯 러스트를 어느 정도 본 적이 있는 백엔드 개발자를 대상으로 만들었다고 하나 개인적으로 훑어보니 꼭 러스트 초급을 떼야만 볼 수 있는 그런 책은 아닌 것 같다. 오히려 백엔드 경험이 있는지 여부가 더 중요하고 언어는 챕터를 따라가는 과정에서 막힐 때마다 [공식 문서 - 한글판](https://rinthel.github.io/rust-lang-book-ko/)을 살펴보는 게 속도감 있게 배울 수 있는 방법이라고 생각한다. 어차피 언어가 그 나물에 그 밥인데(초급 수준에는) 지루하게 변수, 반복문, 조건문 이런 거 살펴볼 시간에 곧바로 Hello world 반환하는 API 서버 셋업해보는 게 낫다. 그러니 이메일 뉴스레터 API 서버를 만들면서 러스트를 심도 있게 & 속도감 있게 배워보고 싶은 개발자들이라면 이 책을 적극 추천한다.

 

 

반응형