홈 > 부모님 > 부모님 > 소설,일반 > 컴퓨터,모바일
러스트 웹 개발  이미지

러스트 웹 개발
Tokio, Warp, Reqwest를 활용한 웹 애플리케이션 개발!
길벗 | 부모님 | 2024.05.21
  • 정가
  • 33,000원
  • 판매가
  • 29,700원 (10% 할인)
  • S포인트
  • 1,650P (5% 적립)
  • 상세정보
  • 18.3x23.5 | 0.866Kg | 456p
  • ISBN
  • 9791140709441
  • 배송비
  • 2만원 이상 구매시 무료배송 (제주 5만원 이상) ?
    배송비 안내
    전집 구매시
    주문하신 상품의 전집이 있는 경우 무료배송입니다.(전집 구매 또는 전집 + 단품 구매 시)
    단품(단행본, DVD, 음반, 완구) 구매시
    2만원 이상 구매시 무료배송이며, 2만원 미만일 경우 2,000원의 배송비가 부과됩니다.(제주도는 5만원이상 무료배송)
    무료배송으로 표기된 상품
    무료배송으로 표기된 상품일 경우 구매금액과 무관하게 무료 배송입니다.(도서, 산간지역 및 제주도는 제외)
  • 출고일
  • 품절된 상품입니다.
  • ★★★★★
  • 0/5
리뷰 0
리뷰쓰기
  • 도서 소개
  • 출판사 리뷰
  • 작가 소개
  • 목차
  • 회원 리뷰

  도서 소개

러스트는 시스템 프로그래밍을 위한 안전하고 빠르며 생산적인 언어다. 또한, 개발자들이 가장 배우고 싶은 언어 1위이기도 하다. 이 책은 러스트로 웹 애플리케이션을 처음부터 끝까지 따라 하며 만들 수 있도록 도와준다.

먼저 애플리케이션의 뼈대인 기본적인 사항부터 구현한 다음, 러스트의 기능과 장점을 활용해 코드를 점진적으로 개선해 나간다. API를 외부에 공개하고, 데이터베이스를 연결하여 데이터를 저장하고, 애플리케이션을 테스트하고 배포하는 데 필요한 모든 과정을 다루며, 라우팅, 미들웨어, 데이터베이스, 비동기 작업 등 필요한 내용으로 가득차 있다.

또한, 따라 하는 실습에 그치지 않고 애플리케이션을 개발하는 동안 만나는 다양한 상황과 시행착오를 겪는 과정을 보여주면서 러스트의 장점을 살린 솔루션을 제공하기 때문에 여러분도 이 솔루션을 이해하여 자신의 프로젝트에 적용하고, 러스트를 더 깊이 있게 이해할 수 있을 것이다.

  출판사 리뷰

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

느리고 불안정한 웹 개발에 질렸다면 러스트로 해결하자!

러스트는 시스템 프로그래밍을 위한 안전하고 빠르며 생산적인 언어이다. 안전한 메모리 관리, 효율적인 컴파일러, 강력한 타입 시스템 등으로 코드를 안전하고 효율적으로 작성할 수 있다. 이 책은 이러한 러스트와 함께 비동기 런타임용 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




  작가 소개

지은이 : 바스티안 그루버
Centrifuge의 런타임 엔지니어로 러스트를 사용하고 있다. Rust Async Working Group의 일원이며, Rust and Tell Berlin Meetup Group을 설립했고 세계에서 가장 큰 암호화폐 거래소 중 한 곳에서 러스트를 사용해 핵심 백엔드에서 일한 경력이 있다. 또한, 경력 12년 이상의 작가로 LogRocket을 위해 정기적으로 러스트에 대한 글을 쓰고 있으며, 이 책의 웹사이트(https://rustwebdevelopment.com)에서 수집한 내용으로 인터뷰와 강연도 한다. 본인의 경험으로 복잡한 개념을 이해하기 쉬우면서도 심도 있는 내용으로 쉽게 가르치며, 많은 사랑을 받고 있다. 트위터 @recvonline

  목차

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 맺음말

찾아보기

  회원리뷰

리뷰쓰기

    이 분야의 신상품