품목정보
발행일 | 2023년 04월 11일 |
---|---|
쪽수, 무게, 크기 | 520쪽 | 173*230*35mm |
ISBN13 | 9791165922047 |
ISBN10 | 1165922045 |
발행일 | 2023년 04월 11일 |
---|---|
쪽수, 무게, 크기 | 520쪽 | 173*230*35mm |
ISBN13 | 9791165922047 |
ISBN10 | 1165922045 |
지은이 소개 지은이의 말 기술 감수자 소개 기술 감수자의 말 추천사 일러두기 이 책의 대상 독자 이 책의 구성 예제 코드 구성 소프트웨어 버전 주의 사항 Part 01 리액티브 프로그래밍(Reactive Programming) Chapter 01 리액티브 시스템과 리액티브 프로그래밍 1.1 리액티브 시스템(Reactive System)이란? 1.2 리액티브 선언문으로 리액티브 시스템 이해하기 1.3 리액티브 프로그래밍(Reactive Programming)이란 1.4 리액티브 프로그래밍의 특징 1.4.1 declarative programming 1.4.2 data streams와 the propagation of change 1.5 코드로 보는 명령형 프로그래밍 vs 선언형 프로그래밍 1.5.1 명령형 프로그래밍 1.5.2 선언형 프로그래밍 1.6 리액티브 프로그래밍 코드 구성 Chapter 02 리액티브 스트림즈(Reactive Streams) 2.1 리액티브 스트림즈(Reactive Streams)란? 2.2 리액티브 스트림즈 구성요소 2.3 코드로 보는 리액티브 스트림즈 컴포넌트 2.3.1 Publisher 2.3.2 Subscriber 2.3.3 Subscription 2.3.4 Processor 2.4 리액티브 스트림즈 관련 용어 정의 2.5 리액티브 스트림즈의 구현 규칙 2.6 리액티브 스트림즈 구현체 Chapter 03 Blocking I/O와 Non-Blocking I/O 3.1 Blocking I/O 3.2 Non-Blocking I/O 3.3 Spring Framework에서의 Blocking I/O와 Non-Blocking I/O 3.4 Non-Blocking I/O 방식의 통신이 적합한 시스템 3.4.1 대량의 요청 트래픽이 발생하는 시스템 3.4.2 마이크로 서비스 기반 시스템 3.4.3 스트리밍 또는 실시간 시스템 Chapter 04 리액티브 프로그래밍을 위한 사전 지식 4.1 함수형 인터페이스(Functional Interface) 4.2 람다 표현식(Lambda Expression) 4.3 메서드 레퍼런스(Method Reference) 4.4 함수 디스크립터(Function Descriptor) Part 02 Project Reactor Chapter 05 Reactor 개요 5.1 Reactor란? 5.2 Hello Reactor 코드로 보는 Reactor의 구성요소 Chapter 06 마블 다이어그램(Marble Diagram) 6.1 마블 다이어그램(Marble Diagram)이란? 6.2 마블 다이어그램으로 Reactor의 Publisher 이해하기 Chapter 07 Cold Sequence와 Hot Sequence 7.1 Cold와 Hot의 의미 7.2 Cold Sequence 7.3 Hot Sequence 7.4 HTTP 요청과 응답에서 Cold Sequence와 Hot Sequence의 동작 흐름 Chapter 08 Backpressure 8.1 Backpressure란? 8.2 Reactor에서의 Backpressure 처리 방식 8.2.1 데이터 개수 제어 8.2.2 Backpressure 전략 사용 Chapter 09 Sinks 9.1 Sinks란? 9.2 Sinks 종류 및 특징 Chapter 10 Scheduler 10.1 스레드(Thread)의 개념 이해 10.2 Scheduler란 10.3 Scheduler를 위한 전용 Operator 10.4 publishOn( )과 subscribeOn( )의 동작 이해 10.5 Scheduler의 종류 Chapter 11 Context 11.1 Context란? 11.2 자주 사용되는 Context 관련 API 11.3 Context의 특징 Chapter 12 Debugging 12.1 Reactor에서의 디버깅 방법 12.1.1 Debug Mode를 사용한 디버깅 12.1.2 checkpoint( ) Operator를 사용한 디버깅 12.1.3 log( ) Operator를 사용한 디버깅 Chapter 13 Testing 13.1 StepVerifier를 사용한 테스팅 13.2 TestPublisher를 사용한 테스팅 13.3 PublisherProbe를 사용한 테스팅 Chapter 14 Operators 14.1 Operator란 14.2 Sequence 생성을 위한 Operator 14.3 Sequence 필터링 Operator 14.4 Sequence 변환 Operator 14.5 Sequence의 내부 동작 확인을 위한 Operator 14.6 에러 처리를 위한 Operator 14.7 Sequence의 동작 시간 측정을 위한 Operator 14.8 Flux Sequence 분할을 위한 Operator 14.9 다수의 Subscriber에게 Flux를 멀티캐스팅(Multicasting) 하기 위한 Operator Part 03 Spring WebFlux Chapter 15 Spring WebFlux 개요 15.1 Spring WebFlux의 탄생 배경 15.2 Spring WebFlux의 기술 스택 15.3 Spring WebFlux의 요청 처리 흐름 15.4 Spring WebFlux의 핵심 컴포넌트 15.5 Spring WebFlux의 Non-Blocking 프로세스 구조 15.6 Spring WebFlux의 스레드 모델 Chapter 16 애너테이션 기반 컨트롤러 (Annotated Controller) 16.1 Spring MVC 기반 Controller 16.2 Spring WebFlux 기반 Controller Chapter 17 함수형 엔드포인트(Functional Endpoint) 17.1 HandlerFunction을 사용한 request 처리 17.2 request 라우팅을 위한 RouterFunction 17.3 함수형 엔드포인트에서의 request body 유효성 검증 Chapter 18 Spring Data R2DBC 18.1 R2DBC란 18.2 Spring Data R2DBC란? 18.3 Spring Data R2DBC 설정 18.4 Spring Data R2DBC에서의 도메인 엔티티 클래스 매핑 18.5 R2DBC Repositories를 이용한 데이터 액세스 18.6 R2dbcEntityTemplate을 이용한 데이터 액세스 18.7 Spring Data R2DBC에서의 페이지네이션(Pagination) 처리 Chapter 19 예외 처리 19.1 onErrorResume( ) Operator를 이용한 예외 처리 19.2 ErrorWebExceptionHandler를 이용한 글로벌 예외 처리 Chapter 20 WebClient 20.1 WebClient란? 20.2 WebClient로 도서 정보 요청하기 20.3 WebClient Connection Timeout 설정 20.4 exchangeToMono( )를 사용한 응답 디코딩 Chapter 21 Reactive Streaming 데이터 처리 찾아보기 |
사람마다 다르겠지만, 7~8년 전에 리액티브 프로그래밍을 처음 들어보았고 한동안 잊어버리고 있었습니다.
처음 접했을 때 만만치 않겠다는 느낌이 들었었습니다.
취지는 알겠으나 가볍게 접근하기가 쉽지 않았었고, '굳이 이렇게까지?'라고 생각했었던 기억이 있습니다.
리액티브 프로그래밍은 리액티브 시스템을 구축하는데 필요한 프로그래밍 모델이라고 친절히 안내해 줍니다.
리액티브 시스템은 논블로킹 I/O 방식 즉, 비동기 메시지 통신을 기반으로 하는 시스템입니다.
우리말인데 어렵습니다. 리액티브 프로그래밍에 쓰이는 용어가 자체가 다양하기 때문인 것 같습니다.
개념과 용어를 이해하기 쉽게 풀어 나갑니다.
적용 방식을 보여주며 차근차근 알려줍니다.
코드를 설명하며 어디서 개념이 적용되었으며 어떤 용어와 부합하는지 짚어줍니다.
번역서가 아닌 우리나라 개발자가 쓴 책입니다.
그럼에도 굳이 원래 용어 대신하는 우리말을 사용하지 않았습니다.
괜찮은 선택인 듯합니다.
적절한 우리말로 용어를 대신한다면, 사람마다 이해 정도가 다르기에 우리말이 오히려 이해를 방해할 수 있기 때문이지 않을까 하고 저자의 의도를 짐작해 봅니다.
리액티브 시스템과 리액티브 프로그래밍,
리액티브 스트림즈 구현체 가운데 Reactor,
스프링 WebFlux를 다룹니다.
앞의 2개 파트를 읽고 나면 마지막 파트에서 또 다른 세상이 기다리고 있습니다.
왼손은 거들뿐 처럼 WebFlux는 도울뿐.
리액티브 프로그래밍에 접근했다가 좌절했던 아픈 기억을 떨쳐버릴 수 있었습니다.
스프링을 몰라도 좋습니다. 어느 정도 프로그래밍 경험만 있으면 내용을 따라가기 충분하다고 봅니다.
리액티브 프로그래밍을 알고 싶다면 많은 도움이 되리라 생각합니다.
'YES24 리뷰어클럽 서평단 자격으로 작성한 리뷰입니다'
리액티브 프로그래밍의 정석, 『스프링으로 시작하는 리액티브 프로그래밍』
(황정식 지음, 『스프링으로 시작하는 리액티브 프로그래밍』, 비제이퍼블릭, 2023)
Reactor에 대한 학습을 토대로 Spring WebFlux 기반의 Non-Blocking I/O 방식의 샘플 애플리케이션을 구현해 보면서 리액티브 프로그래밍 입문이라는 길로 자연스럽게 안내합니다.
또한 스프링 리액티브 웹 애플리케이션 구현에 있어 중요한 역할을 하는 Reactor의 핵심 개념들을 쉽게 이해할 수 있도록 충분한 설명과 다양한 예제 코드, 마블 다이어그램 등을 제공합니다.
이 책의 저자인 황정식씨는 2010년대 부터 다양한 웹 애플리케이션 개발 경험한 베테랑 시니어 개발자입니다. 현재는 미래의 백엔드 개발자를 기르는 데에 힘을 쏟고 있습니다. 저자는 리액티브 프로그래밍에 입문하고 싶어하는 사람에게 도움을 주고자 이 책을 지었습니다.
책은 총 3개의 Part와 21개의 Chapter로 구성됩니다.
첫번째 Part에서는 리액티브 시스템과 리액티브 프로그래밍의 개념을 알아봅니다. 또한 리액티브 프로그래밍을 배워야하는 이유와 리액티브 애플리케이션을 개발하기 위해 알아야 할 사전지식을 살펴봅니다.
두번째 Part에서는 Project Reactor(리액터)에 대해 학습합니다. 리액터는 리액티브 웹 개발을 위해 알아야 할 필수 지식입니다. 리액터는 리액티브 스트림즈 사양을 구현한 여러 구현체 중 하나입니다.
세번째 Part에서는 Spring WebFlux에 대해 배웁니다. Spring WebFlux는 Non-Blocking 통신을 지원하는 기술입니다. Spring WebFlux는 Spring 5.0부터 추가된 웹 프레임워크입니다. 간단한 웹 애플리케이션을 만들어보면서 요청 처리, 연동 방법에 대해 자세히 학습합니다.
저는 리액티브 프로그래밍을 이 책을 통해 처음 접해봤습니다. 그래서 책에 나오는 개념에 대해 익숙하지 않아서 초반에 애를 먹었습니다. 하지만 저자의 친절한 설명과 실습 예제로 익숙해졌습니다. 리액티브 프로그래밍은 MSA에도 궁합이 잘 맞는다고도 하니 이 책을 통해서 통달할 수 있도록 해야겠습니다.
이처럼 Non-Blocking I/O 방식의 경우, 작업 스레드의 종료 여부와 관계없이 요청한 스레드는 차단되지 않습니다.
p.68
Spring MVC와 Spring WebFlux의 가장 큰 차이점은 바로 Spring MVC는 Blocking I/O 방식이고, Spring WebFlux는 Non-Blocking I/O 방식이라는 점 입니다.
p.70
물리적인 스레드는 병렬성과 관련이 있으며, 논리적인 스레드는 동시성과 관련이 있습니다.
p. 208
Context는 어떠한 상황에서 그 상황을 처리하기 위해 필요한 정보라고 볼 수 있습니다.
p.237
Reactor나 RxJava같은 리액티브 프로그래밍은 Operator로 시작해서 Operator로 끝난다고 해도 과언이 아닐만큼 Operator는 리액티브 프로그래밍에서 가장 중요한 구성요소입니다.
p.308
결과적으로 Spring WebFlux가 이벤트 루프 방식을 도입함으로써 적은 수의 스레드로 많은 수의 요청을 Non-Blocking 프로세스로 처리할 수 있게 되었습니다.
p. 439
『스프링으로 시작하는 리액티브 프로그래밍』의 전개상 특징을 보자면 리액티브 프로그래밍을 구현하기 위한 사전 지식을 학습한 뒤, 바로 SpringWebFlux를 배우는 것이 아니라 Reactor에 대해 먼저 학습합니다. Reactor에 대해 충분히 학습하지 않으면 SpringWebFlux를 배우는 데 한계에 도달하고, 다시 Reactor에 공부하지 않도록 배려한 저자의 배려입니다. 또한 책 곳곳에 나오는 ‘주의사항’과 ‘기억하세요!’로 이해에 많은 도움이 됐습니다.
『스프링으로 시작하는 리액티브 프로그래밍』의 가장 큰 차별성을 고른다면 리액티브 프로그래밍을 다룬 가장 최신의 서적일 것입니다. 기술 서적은 무엇보다 최신의 기술을 충실하게 반영해야 합니다. 이 책은 최신의 기술을 반영하고, 실무에 쓸 수 있는 코드까지 학습하기 때문에 좋은 기술 서적이라 생각합니다.
『스프링으로 시작하는 리액티브 프로그래밍』에서 가장 인상적인 부분을 꼽자면 Block, Non-Blocking I/O와 같은 어려운 개념 설명입니다. 그림과 보충설명으로 개념에 대한 이해를 충실히 할 수 있도록 도와줍니다. 또한 이 책에는 프로그래밍에서 중요한 테스팅을 포함했습니다. 때문에 효율적으로 테스팅을 할 수 있게 도와줍니다.
읽으면 좋을 책
『스프링 부트 실전 활용 마스터』 (그렉 턴키스트 지음, 오명운 옮김, 이일민 감수, 책만, 2021. 05.28)은 웹플럭스, R소켓, 메시징 등을 활용하여 리액티브 웹 개발을 학습합니다. 『스프링으로 시작하는 리액티브 프로그래밍』과 같이 본다면 상호보완적으로 학습할 수 있을 것 같습니다.
『모던 자바 인 액션』 (라울-게이브리얼 우르마,마리오 푸스코,앨런 마이크로프트 지음, 우정은 옮김, 한빛미디어, 2019.08.01)은 리액티브 프로그래밍을 위한 사전 지식인 함수형 프로그래밍, 람다식 표현식과 같은 자바의 심화 내용을 자세히 학습할 수 있습니다.
추천 독자
비동기 프로그래밍 구현이 힘든 분
리액티브 프로그래밍의 기반을 충실하게 다지고 싶은 분
Spring FrameWork 기반의 프로젝트 경험이 있으신 분
『스프링으로 시작하는 리액티브 프로그래밍』은 개념 설명과 실전 적용, 두 마리 토끼를 잘 잡은 책입니다.
이 책의 난이도는 쉽지 않습니다. 하지만 저자는 최대한 쉽게 설명했고, 책을 흘러가는 대로 학습하다보면 충분히 이해할 수 있을것입니다.
책의 아쉬운 점으로는 흑백인 그림입니다. 가격이 오르더라도 책의 그림이 컬러였다면 더 좋았을 것 같습니다.
YES24 리뷰어클럽 서평단 자격으로 작성한 리뷰입니다
리액티브 시스템이란 무엇일까요? 리액티브 시스템이란 반응을 잘하는 시스템이라는 뜻입니다. 즉 클라이언트의 요청에 즉각적으로 응답하면서 지연 시간을 최소화한다는 뜻입니다. 바로 이 책의 요점은 그러한 시스템을 구축하는 프로그래밍을 가르치고 있습니다.
총 3장으로 나뉘는 책의 구성은 1장부터 리액티브 시스템의 정의와 차이점에 관해 설명하고, 리액티브 프로그래밍 시 사용하는 라이브러리에 대한 문법 규칙이나. 사전 지식에 관해 설명하고 있습니다.
2장에서는 Reactor에 대한 설명을 대부분으로 할애하고 있습니다. 이를 통해 Reactor의 중요 요소들인 Backpressure, Schelduer, Operator에 대해 학습하고 있습니다.
3장에서는 스프링 5 버전부터 추가된 리액티브 프로그램에 도움이 되는 모듈인 Webflux의 전반적인 부분에 대해 학습합니다. 이를 통해 추후에는 리액티브 스트리밍 데이터를 처리하는 방법도 배울 수 있습니다.
책은 스프링에 대한 기초적인 지식이 필요합니다. 그렇기에 초급 수준의 백엔드 공부가 필요하지만, 만약 이를 충분하게 공부하셨다면 더할 나위 없이 친절한 설명서가 되어 줄 것입니다.
스프링에 대한 기초적인 부분을 전부 익히고, 비동기 프로그래밍을 조금 더 최적화하고 싶은 초급 자바 개발자이거나, 스프링 기반의 리액티브 웹 프로그래밍의 기본기를 확실히 다지고 싶은 분게 추천해 드리는 책입니다.
< YES24 리뷰어클럽 체험단 자격으로 작성한 리뷰입니다.