FREE SHIPING FOR OVER $100 - MOSTLY SHIP VIA USPS GROUND ADVANTAGE %D days %H:%M:%S
황정식
저자:황정식 2010년부터모바일기반의대학통합시스템,블록체인기반의데이터마켓서비스등다양한웹애플리케이션프로젝트를수행해온시니어백엔드개발자입니다.현재는(주)코드스테이츠에서미래의백엔드개발자를꿈꾸는학생들과함께교육엔지니어로즐거운일상을보내고있습니다. 소프트웨어개발에대한지식을공유하기를좋아합니다.특히수년전애플리케이션개발에사용한리액티브프로그래밍의매력에심취해프로젝트이후,RxJava를깊이공부하면서알게된지식들을공유하고,리액티브프로그래밍에 입문하고싶어하는분들에게약간의도움을주고자관련지식들을온라인강의로제작해인프런에오픈했습니다. 미래에제모습이어떤모습으로변해있을지아직은알수없지만,소프트웨어개발이라는영역안에서더나은삶을살아가기위해현재꾸준히노력하며살고있습니다.백발이되어서도소프트웨어를개발할수있는소프트웨어엔지니어가되기위해오늘도열심히노력하겠습니다.
지은이소개지은이의말기술감수자소개기술감수자의말추천사일러두기이책의대상독자이책의구성예제코드구성소프트웨어버전주의사항Part01리액티브프로그래밍(ReactiveProgramming)Chapter01리액티브시스템과리액티브프로그래밍1.1리액티브시스템(ReactiveSystem)이란1.2리액티브선언문으로리액티브시스템이해하기1.3리액티브프로그래밍(ReactiveProgramming)이란1.4리액티브프로그래밍의특징1.4.1declarativeprogramming1.4.2datastreams와thepropagationofchange1.5코드로보는명령형프로그래밍vs선언형프로그래밍1.5.1명령형프로그래밍1.5.2선언형프로그래밍1.6리액티브프로그래밍코드구성Chapter02리액티브스트림즈(ReactiveStreams)2.1리액티브스트림즈(ReactiveStreams)란2.2리액티브스트림즈구성요소2.3코드로보는리액티브스트림즈컴포넌트2.3.1Publisher2.3.2Subscriber2.3.3Subscription2.3.4Processor2.4리액티브스트림즈관련용어정의2.5리액티브스트림즈의구현규칙2.6리액티브스트림즈구현체Chapter03BlockingI/O와Non-BlockingI/O3.1BlockingI/O3.2Non-BlockingI/O3.3SpringFramework에서의BlockingI/O와Non-BlockingI/O3.4Non-BlockingI/O방식의통신이적합한시스템3.4.1대량의요청트래픽이발생하는시스템3.4.2마이크로서비스기반시스템3.4.3스트리밍또는실시간시스템Chapter04리액티브프로그래밍을위한사전지식4.1함수형인터페이스(FunctionalInterface)4.2람다표현식(LambdaExpression)4.3메서드레퍼런스(MethodReference)4.4함수디스크립터(FunctionDescriptor)Part02ProjectReactorChapter05Reactor개요5.1Reactor란5.2HelloReactor코드로보는Reactor의구성요소Chapter06마블다이어그램(MarbleDiagram)6.1마블다이어그램(MarbleDiagram)이란6.2마블다이어그램으로Reactor의Publisher이해하기Chapter07ColdSequence와HotSequence7.1Cold와Hot의의미7.2ColdSequence7.3HotSequence7.4HTTP요청과응답에서ColdSequence와HotSequence의동작흐름Chapter08Backpressure8.1Backpressure란8.2Reactor에서의Backpressure처리방식8.2.1데이터개수제어8.2.2Backpressure전략사용Chapter09Sinks9.1Sinks란9.2Sinks종류및특징Chapter10Scheduler10.1스레드(Thread)의개념이해10.2Scheduler란10.3Scheduler를위한전용Operator10.4publishOn()과subscribeOn()의동작이해10.5Scheduler의종류Chapter11Context11.1Context란11.2자주사용되는Context관련API11.3Context의특징Chapter12Debugging12.1Reactor에서의디버깅방법12.1.1DebugMode를사용한디버깅12.1.2checkpoint()Operator를사용한디버깅12.1.3log()Operator를사용한디버깅Chapter13Testing13.1StepVerifier를사용한테스팅13.2TestPublisher를사용한테스팅13.3PublisherProbe를사용한테스팅Chapter14Operators14.1Operator란14.2Sequence생성을위한Operator14.3Sequence필터링Operator14.4Sequence변환Operator14.5Sequence의내부동작확인을위한Operator14.6에러처리를위한Operator14.7Sequence의동작시간측정을위한Operator14.8FluxSequence분할을위한Operator14.9다수의Subscriber에게Flux를멀티캐스팅(Multicasting)하기위한OperatorPart03SpringWebFluxChapter15SpringWebFlux개요15.1SpringWebFlux의탄생배경15.2SpringWebFlux의기술스택15.3SpringWebFlux의요청처리흐름15.4SpringWebFlux의핵심컴포넌트15.5SpringWebFlux의Non-Blocking프로세스구조15.6SpringWebFlux의스레드모델Chapter16애너테이션기반컨트롤러(AnnotatedController)16.1SpringMVC기반Controller16.2SpringWebFlux기반ControllerChapter17함수형엔드포인트(FunctionalEndpoint)17.1HandlerFunction을사용한request처리17.2request라우팅을위한RouterFunction17.3함수형엔드포인트에서의requestbody유효성검증Chapter18SpringDataR2DBC18.1R2DBC란18.2SpringDataR2DBC란18.3SpringDataR2DBC설정18.4SpringDataR2DBC에서의도메인엔티티클래스매핑18.5R2DBCRepositories를이용한데이터액세스18.6R2dbcEntityTemplate을이용한데이터액세스18.7SpringDataR2DBC에서의페이지네이션(Pagination)처리Chapter19예외처리19.1onErrorResume()Operator를이용한예외처리19.2ErrorWebExceptionHandler를이용한글로벌예외처리Chapter20WebClient20.1WebClient란20.2WebClient로도서정보요청하기20.3WebClientConnectionTimeout설정20.4exchangeToMono()를사용한응답디코딩Chapter21ReactiveStreaming데이터처리찾아보기
*리액티브프로그래밍의기본기를확실하게다진다*리액티브프로그래밍은적은컴퓨팅파워로대량의요청트래픽을효과적으로처리할수있는리액티브시스템을구축하기위한핵심구성요소입니다.이책은스프링리액티브웹애플리케이션구현에있어중요한역할을하는Reactor의핵심개념들을쉽게이해할수있도록충분한설명과다양한예제코드,마블다이어그램등을제공합니다.또한Reactor에대한학습을토대로SpringWebFlux기반의Non-BlockingI/O방식의샘플애플리케이션을구현해보면서리액티브프로그래밍입문이라는길로자연스럽게안내합니다『스프링으로시작하는리액티브프로그래밍은』은리액티브프로그래밍을통해한단계성장한자바개발자가되고자하는초급자를위한책이다.복잡하게만느껴졌던자바비동기프로그래밍을쉽게설명하고있고,웹애플리케이션개발의기초를다질수있는책이다.