러스트 서버, 서비스, 앱 만들기
2024년 06월 14일 출간
국내도서 : 2024년 05월 17일 출간
- eBook 상품 정보
- 파일 정보 pdf (9.50MB)
- ISBN 9791193926352
- 지원기기 교보eBook App, PC e서재, 리더기, 웹뷰어
-
교보eBook App
듣기(TTS) 불가능
TTS 란?텍스트를 음성으로 읽어주는 기술입니다.
- 전자책의 편집 상태에 따라 본문의 흐름과 다르게 텍스트를 읽을 수 있습니다.
- 이미지 형태로 제작된 전자책 (예 : ZIP 파일)은 TTS 기능을 지원하지 않습니다.
PDF 필기가능 (Android, iOS)
쿠폰적용가 17,640원
10% 할인 | 5%P 적립이 상품은 배송되지 않는 디지털 상품이며,
교보eBook앱이나 웹뷰어에서 바로 이용가능합니다.
카드&결제 혜택
- 5만원 이상 구매 시 추가 2,000P
- 3만원 이상 구매 시, 등급별 2~4% 추가 최대 416P
- 리뷰 작성 시, e교환권 추가 최대 200원
작품소개
이 상품이 속한 분야
베타리더 후기 x
시작하며 xii
감사의 글 xiv
이 책에 대하여 xv
표지에 대하여 xix
PART I 웹서버와 웹 서비스
CHAPTER 1 왜 러스트가 웹 애플리케이션에 적합한가? 3
1.1 모던 웹 애플리케이션 개요 4
1.2 웹 애플리케이션을 위해 러스트를 선택하기 7
__1.2.1 웹 애플리케이션의 특성 8
__1.2.2 러스트를 사용한 웹 애플리케이션 구현의 이점 9
__1.2.3 러스트에 없는 것은? 15
1.3 예제 애플리케이션 소개 15
__1.3.1 무엇을 만들 것인가? 16 / 1.3.2 예제 애플리케이션의 기술적 가이드라인 19
요약 20
CHAPTER 2 기본 웹서버 작성하기 21
2.1 네트워킹 모델 22
2.2 러스트를 사용해 TCP 서버 작성하기 24
__2.2.1 TCP/IP 통신 흐름 설계하기 24 / 2.2.2 TCP 서버와 클라이언트 작성하기 26
2.3 러스트를 사용해 HTTP 서버 작성하기 31
__2.3.1 HTTP 요청 메시지 파싱하기 33 / 2.3.2 HTTP 응답 메시지 구성하기 42
__2.3.3 main() 함수와 server 모듈 작성하기 51
__2.3.4 router 및 handler 모듈 작성하기 52 / 2.3.5 웹서버 테스팅하기 57
요약 60
CHAPTER 3 RESTful 웹 서비스 구축하기 62
3.1 Actix 시작하기 62
__3.1.1 첫 번째 REST API 작성하기 63 / 3.1.2 Actix 개념 이해하기 66
3.2 REST를 사용해 웹 API 만들기 70
__3.2.1 프로젝트 범위와 구조 정의하기 71 / 3.2.2 애플리케이션 상태 정의 및 관리하기 74
__3.2.3 데이터 모델 정의하기 78 / 3.2.4 강의 게시하기 83
__3.2.5 한 강사의 모든 강의 정보 얻기 87 / 3.2.6 한 강의에 관한 세부 정보 얻기 90
요약 93
CHAPTER 4 데이터베이스 조작하기 95
4.1 프로젝트 구조 설정하기 96
4.2 첫 번째 데이터베이스와의 비동기 커넥션 작성하기(이터레이션 1) 98
__4.2.1 데이터베이스 및 커넥션 라이브러리 선택하기 98
__4.2.2 데이터베이스를 설정하고 비동기 풀과 연결하기 99
4.3 웹 서비스 설정하기와 단위 테스트 작성하기(이터레이션 2) 105
__4.3.1 디펜던시와 라우트 설정하기 106
__4.3.2 애플리케이션 상태와 데이터 모델 설정하기 107
__4.3.3 디펜던시 주입을 사용해 커넥션 풀 설정하기 108
__4.3.4 단위 테스트 작성하기 111
4.4 데이터베이스에서 레코드를 생성하고 질의하기(이터레이션 3) 113
__4.4.1 데이터베이스 접근 함수 작성하기 114 / 4.4.2 핸들러 함수 작성하기 117
__4.4.3 데이터베이스 기반 웹 서비스를 위한 main() 함수 작성하기 120
요약 124
CHAPTER 5 에러 핸들링하기 125
5.1 프로젝트 구조 설정하기 126
5.2 러스트와 Actix Web에서의 에러 핸들링 기본 130
5.3 커스텀 에러 핸들러 정의하기 137
5.4 모든 강의 정보 얻기에 대한 에러 핸들링하기 141
5.5 강의 상세 정보 얻기에 대한 에러 핸들링하기 148
5.6 새로운 강의 게시에 대한 에러 핸들링하기 150
요약 153
CHAPTER 6 API의 진화와 두려움 없는 리팩터링 154
6.1 프로젝트 구조 개편하기 155
6.2 강의 생성 및 관리와 관련된 데이터 모델 개선하기 160
__6.2.1 데이터 모델 변경하기 162 / 6.2.2 강의 API 변경하기 168
6.3 강사 등록 및 유지 관리를 가능하게 하기 183
__6.3.1 강사를 위한 데이터 모델과 라우트 184
__6.3.2 강사 관련 라우트에 대한 핸들러 함수 187
__6.3.3 강사 관련 라우트에 대한 데이터베이스 접근 함수 189
__6.3.4 강사에 대한 데이터베이스 스크립트 191
__6.3.5 강사 관련 API 실행 및 테스트하기 193
요약 197
PART II 서버 사이드 웹 애플리케이션
CHAPTER 7 러스트를 사용한
서버 사이드 웹 애플리케이션 개요 201
7.1 서버 사이드 렌더링 개요 202
7.2 Actix를 사용해 정적 웹페이지 제공하기 204
7.3 Actix와 Tera를 사용해 동적 웹페이지 렌더링하기 207
7.4 폼을 사용해 사용자 입력 추가하기 210
7.5 템플릿을 사용해 리스트 표시하기 213
7.6 클라이언트 사이드 테스트 작성 및 실행하기 217
7.7 백엔드 웹 서비스에 연결하기 220
요약 224
CHAPTER 8 템플릿을 사용해 강사 등록하기 226
8.1 초기 웹 애플리케이션 작성하기 227
8.2 등록 폼 표시하기 234
8.3 등록 제출 처리하기 240
요약 247
CHAPTER 9 강의 유지보수를 위한 폼 다루기 249
9.1 사용자 인증 설계하기 250
9.2 프로젝트 구조 설정하기 251
9.3 사용자 인증 구현하기 252
9.4 HTTP 요청 라우팅하기 258
9.5 HTTP POST 메서드를 사용해 리소스 생성하기 262
9.6 HTTP PUT 메서드를 사용해 리소스 업데이트하기 265
9.7 HTTP DELETE 메서드를 사용해 리소스 삭제하기 268
요약 269
PART III 고급 주제: 비동기 러스트
CHAPTER 10 비동기 러스트 이해하기 273
10.1 비동기 프로그래밍 개념 소개 274
10.2 동시 프로그램 작성하기 281
10.3 비동기 러스트 자세히 살펴보기 287
10.4 퓨처 이해하기 292
10.5 커스텀 퓨처 구현하기 300
요약 304
CHAPTER 11 비동기 러스트를 사용해 P2P 노드 구현하기 305
11.1 P2P 네트워크 소개 306
__11.1.1 전송 308 / 11.1.2 피어 신원 308 / 11.1.3 보안 308
__11.1.4 피어 라우팅 308 / 11.1.5 메시징 309 / 11.1.6 스트림 멀티플렉싱 309
11.2 libp2p 네트워킹의 핵심 아키텍처 이해하기 310
__11.2.1 피어 ID 및 키 페어 311 / 11.2.2 멀티어드레스 312
__11.2.3 스웜과 네트워크 동작 314
11.3 피어 노드 사이에서 ping 명령 교환하기 316
11.4 피어 발견하기 318
요약 321
CHAPTER 12 도커를 사용해 웹 서비스 배포하기 323
12.1 서버와 앱의 프로덕션 배포 개요 324
__12.1.1 소프트웨어 배포 수명 주기 325 / 12.1.2 도커 컨테이너 기본 327
12.2 첫 번째 도커 컨테이너 작성하기 329
__12.2.1 도커 설치 확인하기 329 / 12.2.2 간단한 도커 컨테이너 작성하기 331
__12.2.3 다단계 도커 빌드 334
12.3 데이터베이스 컨테이너 빌드하기 337
__12.3.1 Postgres 데이터베이스 패키징하기 338
__12.3.2 데이터베이스 테이블 생성하기 344
12.4 도커를 사용해서 웹 서비스 패키징하기 347
12.5 도커 컴포즈를 사용해서 도커 컨테이너 조정하기 348
요약 355
APPENDIX A 부록 357
Postgres 설치 357
찾아보기 360
웹 애플리케이션은 애플리케이션 계층 프로토콜로 HTTP를 사용하며, 표준 인터넷 브라우저를 통해 인간 사용자가 접근할 수 있는 기능들을 제공하는 프로그램이다. 이러한 웹 애플리케이션이 하나가 아니라 수십 또는 수백 개의 분산 애플리케이션 요소로 구성되어 네트워크상에서 협력하고 통신할 때, 이를 분산 웹 애플리케이션이라 부른다. (…) 그림 1.1은 모던 웹 애플리케이션의 분산 시스템 스택의 전형적인 논리적 형태를 나타낸다. 실제 세계에서라면 이러한 시스템은 수천 대의 서버에 분산되어 있겠지만, 그림에서는 3개의 서버만 네트워킹 스택을 통해 연결된 것으로 나타냈다. (5쪽)
REST 아키텍처 스타일을 사용해 API를 노출하는 웹 서비스를 RESTful 웹 서비스(RESTful web service)라 부른다. 이번 절에서는 EzyTutors 디지털 스토어프런트를 위한 RESTful 웹 서비스를 만든다. (…) 이번 장에서 구현할 웹 서비스의 핵심 기능은 신규 강의 등록하기, 특정 강사의 강의 목록 얻기, 개별 강의에 대한 세부 정보 얻기다. 초기 데이터 모델은 course라는 하나의 리소스만 갖는다. / 데이터 모델을 다루기 전에, 먼저 프로젝트 구조와 코드 형태를 마무리하자. 또한 여러 Actix 워커 스레드들이 안전하게 메모리의 데이터에 접근할 수 있도록 저장하는 방법도 결정한다. (70~71쪽)
이번 장에서는 관계형 데이터베이스로 PostgreSQL을 사용한다. Postgres는 잘 알려진 오픈 소스 관계형 데이터베이스로 확장성, 안전성, 기능 및 대규모의 복잡한 데이터 작업을 처리하는 데 뛰어나다. / sqlx 크레이트를 사용해 Postgres에 연결한다. 이 크레이트는 가공되지 않는 SQL 구문으로 쿼리를 작성할 수 있다. sqlx는 컴파일 시간에 쿼리를 확인하며, 내장 커넥션 풀을 제공하고, Postgres에 대한 비동기 커넥션을 반환한다. 컴파일 시간 확인은 런타임 에러를 발견하고 예방하는 데 매우 유용하다. / 데이터베이스에 대해 비동기 커넥션을 갖는다는 것은 튜터 웹 서비스가 데이터베이스로부터의 응답을 기다리는 동안 다른 태스크를 수행할 수 있다는 의미이다. (98쪽)
UpdateCourse 구조체는 옵셔널 필드들을 포함하고 있기 때문에, 먼저 API 클라이언트가 어떤 필드들을 보냈는지 검증해야 한다. 필드에 대한 새로운 값을 보냈다면, 해당 필드를 업데이트해야 한다. 그렇지 않다면 데이터베이스의 기존값을 유지해야 한다. 이를 위해 먼저 모든 필드를 포함하고 있는 현재 강의 레코드를 추출한다. 다음으로 API가 특정한 필드에 대한 값을 보냈다면, 해당 값을 사용해 데이터베이스를 업데이트하고, 그렇지 않으면 기존의 값을 사용해 업데이트한다. / 이것으로 강의와 관련된 데이터 모델, 라우트, 핸들러, 테스트 케이스, 데이터베이스 접근 함수에 대한 코드 변경을 완료했다. $PROJECT_ROOT에서 다음 명령을 실행해서 컴파일 에러가 발생하는지 확인할 수 있다. (181쪽)
이전 장에서 강사 등록하기에 관해 살펴봤다. 사용자가 강사로서 등록할 때, 강사 관련 정보는 2개의 데이터베이스에 걸쳐서 저장되었다. 강사의 이름, 이미지, 전문 영역과 같은 프로파일 상세 정보는 백엔드 튜터 웹 서비스 안의 데이터베이스에서 유지보수된다. 사용자 ID, 비밀번호 같은 등록 상세 정보들은 웹 애플리케이션 안의 로컬 데이터베이스에 저장된다. / 이번 장에서는 이전 장에서 만든 코드 위에서 구현한다. 러스트 프런트엔드 웹 앱을 작성할 것이다. 이 웹 앱을 통해 사용자들은 애플리케이션에 로그인할 수 있고, 로컬 데이터베이스와 상호작용할 수 있고, 백엔드 웹 서비스와 통신할 수 있다. (249쪽)
tutors 리스트에 여러분이 추가한 엔트리가 표시된다. 이를 통해 컨테이너가 재시작되어도 데이터베이스 변경은 로컬 볼륨에 지속된다는 것을 확인할 수 있다. 연습 삼아 다른 엔드포인트에 대해서도 테스트를 해보자. / 여기까지 온 것을 축하한다. 여러분은 튜터 웹 서비스와 Postgres 데이터베이스를 성공적으로 도커화했다. 또한 도커 컴포즈를 사용해 모든 컨테이너들을 매우 간단한 명령어로 빌드, 시작, 중지시킬 수 있게 되었다. (355쪽)
백엔드부터 프런트엔드까지 직접 구축하며 러스트 스킬업
러스트는 고도의 동시성을 안전하게 제공하는 언어로 설계되었고, 이를 활용하면 ‘모든 프로그래밍 언어의 도전’인 고성능 네트워크 서비스를 만드는 것도 가능하다. 이 책은 다양한 도구, 기법, 기술을 십분 활용해 오직 러스트만으로 백엔드부터 프런트엔드까지 현대적인 웹 서비스 및 애플리케이션을 점진적으로 구축해나간다.
1부에서는 웹 애플리케이션의 기초를 다지고 백엔드를 구축한다. 먼저 1장은 분산 아키텍처 등 핵심 개념 및 책에서 구축해나갈 온라인 교육 플랫폼 애플리케이션에 대해 소개한다. 2장에서는 TCP 기반 컴포넌트를 개발하고, 3장은 서드파티 크레이트를 활용해 RESTful 웹 서비스를 구현하는 방법을 살펴본다. 4장은 SQL 데이터베이스(PostgreSQL), 5장은 예외 처리, 6장은 리팩터링을 다룬다.
2부에서는 Actix 프레임워크를 이용한 서버 사이드 렌더링 프런트엔드 및 GUI를 개발한다. 7장은 프레임워크 및 폼에 대해 설명하고, 1부에서 개발한 백엔드 웹 서비스와 상호작용하는 방법도 살펴본다. 8장은 서버 사이드 Tera 템플릿 엔진을 살펴보고 폼을 이용한 사용자 등록 방법을 설명한다. 9장은 사용자 인증, 라우팅, HTTP 메서드를 사용한 CRUD 방식의 유지보수를 다룬다.
끝으로 3부는 프로덕션 배포를 위한 고급 주제를 다룬다. 10장은 Tokio와 퓨처를 활용한 비동기 프로그래밍, 11장은 libp2p를 사용한 P2P 애플리케이션 개발, 12장은 웹 애플리케이션을 도커 이미지로 준비하고 패키징하는 방법을 살펴본다.
챕터별로 실제 작동하는 프로젝트에 대해 이터레이션을 걸쳐 점진적으로 기능을 추가해나가며, 관련 이론은 프로젝트의 문맥 안에서 설명하는 실무 친화적인 방식으로 쓰인 책이다. 웹에서 돌아가는 서버/서비스/앱을 직접 만드는 과정을 통해, 개발자들의 사랑을 받으며 성장 중인 러스트 생태계의 진가를 맛보고 개발 스킬도 크게 향상할 수 있다.
주요 내용
● 러스트로 데이터베이스 기반 웹 서비스 개발
● RESTful API 빌드 및 보안 확보
● 러스트로 서버 측 웹 애플리케이션 작성
● 웹 서비스 성능 측정 및 벤치마킹
● 웹 서비스 패키징 및 배포
● 풀스택 러스트 애플리케이션
작가정보
(Prabhu Eshwarla)
20년 이상 대기업에 고품질의 비즈니스 크리티컬 소프트웨어와 분산 시스템을 공급하고 IT 운영을 담당했다. 현재는 러스트를 사용해 레이어 1 블록체인을 구축하는 스타트업의 CTO다. 복잡한 기술을 쉽게 가르치는 데 진심인 교육자이기도 하다. 분산 시스템용 소프트웨어 인프라 및 시스템 도구 구축에 러스트가 강점이 있음을 일찍이 파악하고 활용해왔다. 코딩의 창의적 성격을 중요하게 여기지만, 깔끔하고 효율적이며 안전하고 유지 가능한 코드를 만들기 위한 소프트웨어 엔지니어링의 엄격함 또한 중시한다.
대학 졸업 후 소프트웨어 엔지니어, 소프트웨어 품질 엔지니어, 애자일 코치 등 다양한 부문에서 소프트웨어 개발에 참여했다. 재미있는 일, 나와 조직이 성장하고 성과를 내도록 돕는 일에 보람을 느껴 2019년부터 번역을 시작했다. 저서로 《코드 품질 시각화의 정석》(지앤선)이 있고, 옮긴 책은 《제로부터 시작하는 러스트 백엔드 프로그래밍》(제이펍), 《추천 시스템 입문》(한빛미디어), 《타입스크립트, 리액트, Next.js로 배우는 실전 웹 애플리케이션개발》(위키북스), 《애자일 개발의 기술 2/e》(에이콘출판사) 등 다수다.
이 상품의 총서
Klover리뷰 (0)
- - e교환권은 적립일로부터 180일 동안 사용 가능합니다.
- - 리워드는 1,000원 이상 eBook, 오디오북, 동영상에 한해 다운로드 완료 후 리뷰 작성 시 익일 제공됩니다. (5,000원 이상 상품으로 변경 예정, 2024년 9월 30일부터 적용)
- - 리워드는 한 상품에 최초 1회만 제공됩니다.
- - sam 이용권 구매 상품 / 선물받은 eBook은 리워드 대상에서 제외됩니다.
- 도서나 타인에 대해 근거 없이 비방을 하거나 타인의 명예를 훼손할 수 있는 리뷰
- 도서와 무관한 내용의 리뷰
- 인신공격이나 욕설, 비속어, 혐오 발언이 개재된 리뷰
- 의성어나 의태어 등 내용의 의미가 없는 리뷰
구매 후 리뷰 작성 시, e교환권 100원 적립
문장수집
- 구매 후 90일 이내에 문장 수집 등록 시 e교환권 100원을 적립해 드립니다.
- e교환권은 적립일로부터 180일 동안 사용 가능합니다.
- 리워드는 1,000원 이상 eBook에 한해 다운로드 완료 후 문장수집 등록 시 제공됩니다. (5,000원 이상 eBook으로 변경 예정, 2024년 9월 30일부터 적용)
- 리워드는 한 상품에 최초 1회만 제공됩니다.
- sam 이용권 구매 상품 / 선물받은 eBook / 오디오북·동영상 상품/주문취소/환불 시 리워드 대상에서 제외됩니다.
구매 후 문장수집 작성 시, e교환권 100원 적립
신규가입 혜택 지급이 완료 되었습니다.
바로 사용 가능한 교보e캐시 1,000원 (유효기간 7일)
지금 바로 교보eBook의 다양한 콘텐츠를 이용해 보세요!
- 구매 후 90일 이내 작성 시, e교환권 100원 (최초1회)
- 리워드 제외 상품 : 마이 > 라이브러리 > Klover리뷰 > 리워드 안내 참고
- 콘텐츠 다운로드 또는 바로보기 완료 후 리뷰 작성 시 익일 제공
가장 와 닿는 하나의 키워드를 선택해주세요.
총 5MB 이하로 jpg,jpeg,png 파일만 업로드 가능합니다.
신고 사유를 선택해주세요.
신고 내용은 이용약관 및 정책에 의해 처리됩니다.
허위 신고일 경우, 신고자의 서비스 활동이 제한될 수
있으니 유의하시어 신중하게 신고해주세요.
이 글을 작성한 작성자의 모든 글은 블라인드 처리 됩니다.
구매 후 90일 이내 작성 시, e교환권 100원 적립
eBook 문장수집은 웹에서 직접 타이핑 가능하나, 모바일 앱에서 도서를 열람하여 문장을 드래그하시면 직접 타이핑 하실 필요 없이 보다 편하게 남길 수 있습니다.
차감하실 sam이용권을 선택하세요.
차감하실 sam이용권을 선택하세요.
선물하실 sam이용권을 선택하세요.
-
보유 권수 / 선물할 권수0권 / 1권
-
받는사람 이름받는사람 휴대전화
- 구매한 이용권의 대한 잔여권수를 선물할 수 있습니다.
- 열람권은 1인당 1권씩 선물 가능합니다.
- 선물한 열람권이 ‘미등록’ 상태일 경우에만 ‘열람권 선물내역’화면에서 선물취소 가능합니다.
- 선물한 열람권의 등록유효기간은 14일 입니다.
(상대방이 기한내에 등록하지 않을 경우 소멸됩니다.) - 무제한 이용권일 경우 열람권 선물이 불가합니다.
첫 구매 시 교보e캐시 지급해 드립니다.
- 첫 구매 후 3일 이내 다운로드 시 익일 자동 지급
- 한 ID당 최초 1회 지급 / sam 이용권 제외
- 구글바이액션을 통해 교보eBook 구매 이력이 없는 회원 대상
- 교보e캐시 1,000원 지급 (유효기간 지급일로부터 7일)