장바구니 담기 close

장바구니에 상품을 담았습니다.

러스트 웹 개발

러스트 웹 개발

  • 바스티안 그루버
  • |
  • 길벗
  • |
  • 2024-05-21 출간
  • |
  • 456페이지
  • |
  • 183 X 235 X 19mm
  • |
  • ISBN 9791140709441
판매가

33,000원

즉시할인가

29,700

배송비

무료배송

(제주/도서산간 배송 추가비용:3,000원)

수량
+ -
총주문금액
29,700

※ 스프링제본 상품은 반품/교환/환불이 불가능하므로 신중하게 선택하여 주시기 바랍니다.

출판사서평

러스트로 빠르고 견고하며 현대적인 웹 애플리케이션을 개발한다!

느리고 불안정한 웹 개발에 질렸다면 러스트로 해결하자!
러스트는 시스템 프로그래밍을 위한 안전하고 빠르며 생산적인 언어이다. 안전한 메모리 관리, 효율적인 컴파일러, 강력한 타입 시스템 등으로 코드를 안전하고 효율적으로 작성할 수 있다. 이 책은 이러한 러스트와 함께 비동기 런타임용 Tokio, 웹 서버 및 API용 Warp, 외부 HTTP 요청 실행을 위한 Reqwest 등 최신 웹 개발 기술과 도구를 사용하여 현대적인 웹 애플리케이션을 개발한다. 이를 통해 최신 트렌드에 맞는 웹 개발을 경험하고 익힐 수 있다. 느리고 리소스가 부족하며 불안정한 웹 개발에 질렸다면 러스트가 해결책이 될 것이다.

실용적이고 실무적인 가이드를 제시한다!
손으로 직접 해보는 것이 배우는 데 있어 가장 좋은 방법이다. 무언가를 직접 해본다면 다음에 좀 더 개선되고 자동화된 방식으로 작업할 때 그 장단점을 알 수 있기 때문이다. 이런 저자의 철학이 이 책에 녹아 있다. 기본적인 사항부터 구현한 다음, 러스트의 기능과 장점을 활용해 다른 솔루션을 뒤이어 구현하면서 코드를 점진적으로 개선해 나간다. 코드는 점차 군더더기가 없어지고, 좀 더 자동화된 방식으로 만들어진다. 이때 비로소 러스트의 아름다움을 알게 된다. 또한, 러스트로 웹 애플리케이션을 개발할 때 발생할 수 있는 일반적인 문제에 대한 실용적인 해결 방법과 팁을 제공하여 웹 애플리케이션을 효과적으로 구축할 수 있도록 도와 준다.

[베타평]

다른 기술 서적과 비슷하게, 따라 하기 방식으로 구성되어 있어 책을 따라 실습하다 보면 애플리케이션 하나가 완성됩니다. 다만, 다른 책과 달리 일단 에러를 발생시키고 왜 이런 에러가 발생했는지에 대한 이유를 설명하며 올바른 방법을 제시해 줍니다. 그냥 따라 하다 보면 이해되지 않은 부분을 무심결에 넘어가게 되는데, 이 책처럼 에러를 확인하면서 다시 한번 생각하게 해 주는 방식은 실무에서 프로그래밍을 할 때 시행착오를 겪는 과정과 동일하다고 느꼈습니다. 이는 마치 러스트의 컴파일러가 동작하는 방식과 유사한데, 저자가 러스트를 깊이 이해하고 있음을 생각하면 당연한 전개 방식이라고 생각합니다.
주제 하나를 가지고 처음부터 끝까지 블록 쌓기처럼 완성해 가는 과정 또한 마음에 들었습니다(마음의 든 정도가 아니라 정말 훌륭했습니다). 목표가 선명했으며, 왜 이렇게 바꿔 나가야 하는지를 설명하면서 그간 어렴풋하게만 알고 있던 개념들이 명확해지고 러스트뿐 아니라 프로그래밍 전반에 대한 이해도를 높일 수 있는 시간이었습니다.
역자가 원문에 있는 예제를 직접 실행해 보면서 발견한 문제점까지 꼼꼼하게 보완한 덕분에 오히려 원서보다 완성도가 높아져 학습자로서 감사 말씀을 드리고 싶습니다.
ㆍ실습 환경 macOS 13.0, Rust Playground, VS Code
유서호_해피테크놀로지 CTO

러스트에 대한 기초를 쌓고 무엇을 해야 할지 막막할 때 이 책이 웹 백엔드 개발에 대한 훌륭한 길잡이가 되어 줍니다. 이 책에서는 백엔드의 비동기 처리를 위해 Warp, Tokio, Reqwest를 사용하는 방법 그리고 개발에서 머무는 것이 아니라 실제 프로덕션으로 완성시키기 위해 배포와 테스트를 하는 방법까지 러스트 개발에 대해 상세하게 안내해 줍니다. 개인적으로 log4rs, tracing 소개와 GDB, LLDB 등 상세한 디버깅을 설명하는 6장이 가장 마음에 들었습니다. 러스트의 기초를 넘어 러스트를 웹 백엔드 개발 실무에 적용해 보고자 하는 분들에게 이 책을 추천하고 싶습니다.
ㆍ실습 환경 Windows WSL2, Ubuntu 20.04.6 LTS
전봉규_LG CNS

러스트 문법을 공부한 적이 있어 이 책의 베타 테스터로 참여하게 되었습니다. 러스트의 문법만 배웠지 웹으로는 처음 알게 되었습니다. 웹 프레임워크를 이용해 프로젝트 하나를 만드는 책의 구성이 좋았습니다. 또한, 함수형 기법으로 웹 프레임워크를 반영하는데, 함수형 기법까지 알게 되어 좋았습니다.
ㆍ실습 환경 macOS Sonoma, RustRover
문용준_SK C&C

목차

1부 러스트 소개
1장 왜 러스트인가?
1.1 배터리 포함: 러스트의 도구
1.2 러스트 컴파일러
1.3 웹 서비스를 위한 러스트
1.4 러스트 애플리케이션의 유지보수성
1.5 요약

2장 기초 쌓기
2.1 러스트 플레이북 따라 하기
__2.1.1 구조체로 리소스 모델링하기
__2.1.2 Option 이해하기
__2.1.3 에러를 해결하기 위해 문서 사용하기
__2.1.4 러스트에서 문자열 다루기
__2.1.5 이동, 대여, 소유권에 대해 훑어보기
__2.1.6 트레이트를 사용하고 구현하기
__2.1.7 Result 다루기
2.2 웹 서버 만들기
__2.2.1 동시에 다수 요청을 다루기
__2.2.2 러스트의 비동기 환경
__2.2.3 러스트에서 async/await 다루기
__2.2.4 러스트의 퓨처 타입 사용하기
__2.2.5 런타임 고르기
__2.2.6 웹 프레임워크 고르기
2.3 요약

2부 시작하기
3장 첫 경로 핸들러 만들기
3.1 웹 프레임워크에 대해 알아보기: Warp
__3.1.1 Warp에 있는 기능
__3.1.2 Warp의 필터 체계
3.2 첫 JSON 응답을 GET 요청으로 받기
__3.2.1 프레임워크가 생각하는 대로 따르기
__3.2.2 성공 경로 처리하기
__3.2.3 Serde의 도움 받기
__3.2.4 우아하게 에러 처리하기
3.3 CORS 헤더 다루기
__3.3.1 애플리케이션 레벨에서 CORS 헤더를 반환하기
__3.3.2 CORS 응답 검사
3.4 요약

4장 Restful API 구현하기
4.1 인메모리 스토리지에서 질문 가져오기
__4.1.1 모의 데이터베이스 설정하기
__4.1.2 테스트 데이터를 준비하기
__4.1.3 가짜 데이터베이스에서 읽어 들이기
__4.1.4 쿼리 매개변수 파싱하기
__4.1.5 전용 에러 반환하기
4.2 질문을 POST, PUT, DELETE하기
__4.2.1 스레드에 안전한 방식으로 데이터를 수정하기
__4.2.2 질문 추가하기
__4.2.3 질문 업데이트하기
__4.2.4 잘못된 요청 처리하기
__4.2.5 저장소에서 질문 삭제하기
4.3 url-form-encoded로 answers POST 요청하기
__4.3.1 url-form-encoded와 JSON의 차이점
__4.3.2 url-form-encoded로 answers 추가하기
4.4 요약

5장 코드 정리하기
5.1 코드 모듈화
__5.1.1 러스트의 내장 mod 시스템 사용하기
__5.1.2 다양한 경우를 위한 실용적인 폴더 구조
__5.1.3 라이브러리와 하위 크레이트 만들기
5.2 코드 문서화하기
__5.2.1 문서 주석과 비공개 주석 사용하기
__5.2.2 주석에 코드 추가하기
5.3 코드베이스를 린팅하고 서식화하기
__5.3.1 클리피 설치하기
__5.3.2 Rustfmt로 코드 서식화하기
5.4 요약

6장 로그, 추적, 디버깅
6.1 러스트 애플리케이션 로깅하기
__6.1.1 웹 서비스에 로깅 구현하기
__6.1.2 들어오는 HTTP 요청을 로깅하기
__6.1.3 구조화된 로그 만들기
6.2 비동기 애플리케이션 추적하기
__6.2.1 Tracing 크레이트 소개
__6.2.2 애플리케이션에 tracing 통합하기
6.3 러스트 애플리케이션 디버깅하기
__6.3.1 명령줄에서 GDB 사용하기
__6.3.2 LLDB로 웹 서비스 디버깅하기
__6.3.3 비주얼 스튜디오 코드와 LLDB 사용하기
6.4 요약

7장 애플리케이션에 데이터베이스 추가하기
7.1 예제 데이터베이스 설정하기
7.2 첫 번째 테이블 만들기
7.3 데이터베이스 크레이트로 작업하기
__7.3.1 프로젝트에 SQLx 추가하기
__7.3.2 Store에 데이터베이스 연결하기
7.4 경로 핸들러 다시 구현하기
__7.4.1 get_questions에 데이터베이스 추가하기
__7.4.2 add_question 경로 핸들러 재구현하기
__7.4.3 질문을 수정, 삭제하는 핸들러 수정하기
__7.4.4 add_answer 경로 수정하기
7.5 에러 처리와 데이터베이스 상호 작용 추적하기
7.6 SQL 마이그레이션 통합하기
7.7 사례 연구: DBMS 바꾸기
7.8 요약

8장 서드파티 라이브러리와 통합하기
8.1 코드 준비하기
__8.1.1 API 고르기
__8.1.2 HTTP 크레이트 이해하기
__8.1.3 Reqwest로 예제 HTTP 호출 추가하기
__8.1.4 외부 API 요청에 대한 에러 처리하기
8.2 JSON 응답을 구조체로 역직렬화하기
__8.2.1 API 응답 정보를 수집하기
__8.2.2 API 응답에 대한 타입 만들기
8.3 API에 질문과 답변 보내기
__8.3.1 add_question 경로 핸들러 리팩터링
__8.3.2 질문 수정 시 금칙어 적용하기
__8.3.3 add_answer 경로 핸들러 수정하기
8.4 타임 아웃과 다수 요청을 한 번에 처리하기
__8.4.1 외부 HTTP 호출의 재시도 구현하기
__8.4.2 퓨처를 동시에 또는 병렬로 실행하기
8.5 요약

3부 프로덕션으로 투입시키기
9장 인증과 권한 추가
9.1 웹 서비스에 인증 추가하기
__9.1.1 사용자 개념 만들기
__9.1.2 데이터베이스 마이그레이션하기
__9.1.3 registration 엔드포인트 추가하기
__9.1.4 비밀번호 해시하기
__9.1.5 중복 계정 에러 처리하기
__9.1.6 상태 저장 인증과 상태 비저장 인증
__9.1.7 login 엔드포인트 추가하기
__9.1.8 토큰에 만료 날짜 추가하기
9.2 인증 미들웨어 추가하기
__9.2.1 데이터베이스 테이블 마이그레이션하기
__9.2.2 토큰 검증 미들웨어 만들기
__9.2.3 계정 ID를 처리하도록 기존 경로를 확장하기
9.3 다루지 않는 내용
9.4 요약

10장 애플리케이션 배포하기
10.1 환경 변수로 애플리케이션 설정하기
__10.1.1 구성 파일 설정하기
__10.1.2 애플리케이션에 명령줄 입력을 허용하기
__10.1.3 웹 서비스로 환경 변수 읽고 파싱하기
10.2 서로 다른 환경에 맞춰 웹 서비스 컴파일하기
__10.2.1 바이너리를 빌드할 때 개발 플래그와 릴리스 플래그 사용하기
__10.2.2 다른 환경을 위해 크로스 컴파일하기
10.3 빌드 프로세스에서 build.rs 사용하기
10.4 웹 서비스에 맞는 도커 이미지 생성하기
__10.4.1 정적으로 연결된 도커 이미지 생성하기
__10.4.2 도커 컴포즈로 로컬 도커 환경 설정하기
__10.4.3 웹 서버의 구성을 추출하여 새로운 모듈에 넣기
10.5 요약

11장 러스트 애플리케이션 테스트하기
11.1 비즈니스 로직의 단위 테스트
__11.1.1 페이지 로직을 테스트하고 자체 에러로 처리하기
__11.1.2 환경 변수로 Config 모듈 테스트하기
__11.1.3 새로 생성된 모의 서버로 profanity 모듈 테스트하기
11.2 Warp 필터 테스트하기
11.3 통합 테스트 설정 만들기
__11.3.1 lib.rs와 바이너리로 코드 분할하기
__11.3.2 통합 테스트 크레이트와 원샷 서버 구현하기
__11.3.3 등록 테스트 추가하기
__11.3.4 에러가 발생하는 경우 되돌리기
__11 3.5 로그인과 질문 올리기 테스트하기
11.4 요약

부록 보안 고려하기
A.1 종속성의 보안 이슈 검증하기
A.2 자신의 코드 확인하기
A.3 맺음말

찾아보기

교환 및 환불안내

도서교환 및 환불
  • ㆍ배송기간은 평일 기준 1~3일 정도 소요됩니다.(스프링 분철은 1일 정도 시간이 더 소요됩니다.)
  • ㆍ상품불량 및 오배송등의 이유로 반품하실 경우, 반품배송비는 무료입니다.
  • ㆍ고객님의 변심에 의한 반품,환불,교환시 택배비는 본인 부담입니다.
  • ㆍ상담원과의 상담없이 교환 및 반품으로 반송된 물품은 책임지지 않습니다.
  • ㆍ이미 발송된 상품의 취소 및 반품, 교환요청시 배송비가 발생할 수 있습니다.
  • ㆍ반품신청시 반송된 상품의 수령후 환불처리됩니다.(카드사 사정에 따라 카드취소는 시일이 3~5일이 소요될 수 있습니다.)
  • ㆍ주문하신 상품의 반품,교환은 상품수령일로 부터 7일이내에 신청하실 수 있습니다.
  • ㆍ상품이 훼손된 경우 반품 및 교환,환불이 불가능합니다.
  • ㆍ반품/교환시 고객님 귀책사유로 인해 수거가 지연될 경우에는 반품이 제한될 수 있습니다.
  • ㆍ스프링제본 상품은 교환 및 환불이 불가능 합니다.
  • ㆍ군부대(사서함) 및 해외배송은 불가능합니다.
  • ㆍ오후 3시 이후 상담원과 통화되지 않은 취소건에 대해서는 고객 반품비용이 발생할 수 있습니다.
반품안내
  • 마이페이지 > 나의상담 > 1 : 1 문의하기 게시판 또는 고객센터 1800-7327
교환/반품주소
  • 경기도 파주시 문발로 211 1층 / (주)북채널 / 전화 : 1800-7327
  • 택배안내 : CJ대한통운(1588-1255)
  • 고객님 변심으로 인한 교환 또는 반품시 왕복 배송비 5,000원을 부담하셔야 하며, 제품 불량 또는 오 배송시에는 전액을 당사에서부담 합니다.