스프링 6와 스프링 부트 3로 배우는 모던 API 개발 (Java 17과 Spring Boot 3 기반의 REST, gRPC, GraphQL을 활용한 반응형 API 설계)

스프링 6와 스프링 부트 3로 배우는 모던 API 개발 (Java 17과 Spring Boot 3 기반의 REST, gRPC, GraphQL을 활용한 반응형 API 설계)

$34.18
Description
실습을 통해 프로덕션 수준의 API를 설계, 테스트, 보안, 배포 및 유지보수 하는 방법을 배워 애플리케이션의 기능을 향상시켜 보자!
스프링은 자바를 사용해 확장 가능하고 신뢰할 수 있는 웹 애플리케이션을 구축할 때 사용 가능한 강력하고 널리 사용되는 프레임워크이며, 스프링 부트는 스프링 기반 애플리케이션의 설정과 구성을 단순화시켜 주는 인기 소프트웨어이다. 이 책은 웹 개발 시에 참고할 수 있는 스프링 6와 스프링 부트 3에 대한 깊이 있는 가이드로, 현대적이고 견고한 웹 API 및 서비스 구축에 대한 실용적인 지식을 제공한다.

이 책은 RESTful 웹 서비스 기본 지식, 스프링에 대한 개념 이해, API 스펙 설계를 포함한 API 개발에 필수적인 다양한 주제를 다루며 비동기 API 설계, 보안, 사용자 인터페이스 설계, API 테스트, 웹 서비스 배포 등을 설명한다. 나아가 실전 애플리케이션에 필요한 다양한 유형의 API 구축에 참조할 수 있는 실제 수준의 샘플 앱을 제공한다. 이 샘플 앱을 통해 설계 및 사양, 구현, 테스트, 배포를 포함한 전체 API 개발 주기에 대해 이해하게 될 것이다.

이 책에 대한 학습을 마치고 나면, Spring 6와 Spring Boot 3를 사용해 확장 가능하고 유지보수 가능한 현대적인 API를 설계, 개발, 테스트 및 배포하는 방법을 배우게 될 뿐만 아니라 애플리케이션의 보안과 신뢰성을 강화하고 전반적인 기능을 향상시키는 베스트 프랙티스를 익히게 될 것이다.

★ 이 책에서 다루는 내용 ★

◎ 스프링과 자바를 사용한 엔터프라이즈 수준의 API 생성
◎ 다양한 케이스에 사용 가능한 REST, gRPC, GraphQL 및 비동기 API의 이해와 구현
◎ 설계부터 배포까지 실제 웹 API 및 서비스의 개발
◎ API 사양 및 구현에 대한 베스트 프랙티스 학습
◎ 인증 및 권한 부여를 통한 안전한 API 설계 및 구현
◎ 워크플로 및 오케스트레이션 엔진을 사용한 마이크로서비스 기반 솔루션의 개발
◎ API에 접근하는 사용자 인터페이스의 설계 및 테스트 능력 습득
◎ 서비스 및 API에 대한 로깅 및 추적 메커니즘 구현
저자

소라브샤르마

소라브샤르마는오라클의수석개발관리자로업계에서20년이상의경험을가지고있다.그는자바,자바스트립트,오라클DB를사용해온프레미스및클라우드기반애플리케이션을설계하는관리자이자아키텍트이다.소라브는선도적인기업들과협력해엔터프라이즈제품및애플리케이션을제공했고,팀을이끌며N-tier및클라우드기반웹애플리케이션을개념화,모델링,설계및개발하는것에전문가수준의역량을가지고있다.또한,마이크로서비스기반솔루션개발과다양한유형의워크플로및오케스트레이션엔진구현도경험했으며지속적으로학습하며책과교육을통해지식을공유하고있다.

목차

[1부]RESTful웹서비스

▣01장:RESTful웹서비스기본사항
기술요구사항
RESTAPI소개
__REST의역사
__REST의기본사항
리소스와URI다루기
__URI구문
__URL이란
__URN이란
HTTP메소드와상태코드살펴보기
__POST
__GET
__PUT
__DELETE
__PATCH
__HTTP상태코드
HATEOAS이란
RESTAPI설계베스트프랙티스
__엔드포인트경로에서리소스의이름을지정할
__동사형이아닌명사형단어를사용
__엔드포인트경로에서컬렉션리소스의이름을지정할때복수형을사용
__하이퍼미디어사용(HATEOAS)
__API버전관리
__중첩된리소스
__API보안
__문서유지관리
__권장되는상태코드준수
__캐싱보장
__단위시간당요청량제한(Ratelimit)유지관리
전자상거래앱소개
요약
질문
답변
추가읽을거리

▣02장:스프링의개념과RESTAPI
기술요구사항
스프링패턴과패러다임이해하기
__IoC란
__DI란
__AOP란
IoC컨테이너이해하기
Bean과그범위정의하기
__@ComponentScan애노테이션
__Bean의범위
자바를사용하여bean설정
__@Import애노테이션
__@DependsOn애노테이션
DI코딩방법
__생성자로의존성정의
__설정자메소드로의존성정의
__클래스프로퍼티를사용한의존성정의
애노테이션을사용하여bean의메타데이터설정
__@Autowired사용방법
__타입별일치(Matchbytype)
__한정자별일치(Matchbyqualifier)
__이름으로일치(Matchbyname)
__@Primary의목적은무엇일까?
__@Value는언제사용할까?
AOP용코드작성
스프링부트를사용하는이유
서블릿디스패처의중요성이해
요약
질문
답변
추가읽을거리

▣03장:API명세및구현
기술요구사항
OAS로API설계
OAS의기본구조이해
__OAS의메타데이터절
__OAS의servers와tags절
OAS의컴포넌트(components)절
OAS의경로(path)절
OAS를스프링코드로변환
OAS코드인터페이스구현
전역예외처리기추가
API구현테스트
요약
질문
답변
추가읽을거리

▣04장:API를위한비즈니스로직작성
기술요구사항
서비스설계개요
Repository컴포넌트추가
__@Repository애노테이션
__데이터베이스및JPA설정
__데이터베이스및시드데이터스크립트
__엔터티추가
__리포지토리추가
서비스컴포넌트추가
하이퍼미디어구현
서비스와HATEOAS로컨트롤러향상
API응답에ETag추가
API테스트
요약
질문
답변
추가읽을거리

▣05장:비동기API설계
기술요구사항
리액티브스트림이해하기
__발행자(Publisher)
__구독자(Subscriber)
__구독(Subscription)
__프로세서(Processor)
스프링웹플럭스살펴보기
__리액티브API이해
__리액티브코어
DispatcherHandler이해하기
__컨트롤러
__함수형엔드포인트
전자상거래앱용리액티브API구현
__리액티브API용OpenAPICodegen변경
__build.gradle에리액티브의존성추가
__예외처리
__컨트롤러에대한전역예외처리
__API응답에하이퍼미디어링크추가
__엔터티정의
__리포지토리추가
__서비스추가
__컨트롤러구현추가
__애플리케이션에H2콘솔추가
__애플리케이션설정추가
__리액티브API테스트
요약
질문
답변
추가읽을거리

[02부]보안,UI,테스트,배포

▣06장:권한부여와인증을통해REST엔드포인트보호하기
기술요구사항
스프링시큐리티및JWT를사용한인증구현
__Gradle에필요한의존성추가하기
__OAuth2.0리소스서버를사용한인증방법
__JWT의구조
JWT로RESTAPI에보안적용하기
__새로운API추가하기
__데이터베이스테이블에리프레시토큰저장하기
__JWT관리자구현하기
새로운API구현
__findUserByUsername()메소드구현하기
__REST컨트롤러구현
__웹기반보안설정
CORS와CSRF의구성
권한부여(authorization)에대한이해
__역할과권한
보안관련테스트하기
요약
질문
답변
추가읽을거리

▣07장:사용자인터페이스설계하기
기술요구사항
React기초
__리액트앱만들기
__기본구조와파일에대해알아보자
__package.json파일에대한이해
__React앱의부트스트랩
리액트컴포넌트및기타기능에대해알아보자
__JSX에대해알아보자
__리액트훅에대해이해해보자
__테일윈드(Tailwind)를사용해컴포넌트스타일링하기
프로덕션배포에불필요한스타일을제거하도록설정
__리액트에테일윈드포함시키기
전자상거래앱컴포넌트디자인하기
Fetch를이용해API호출하기
__제품정보를가져오는API클라이언트작성하기
__제품목록페이지코딩하기
인증기능구현하기
__커스텀useToken후크만들기
__Login컴포넌트작성
__커스텀cartcontext의구현
__Cart컴포넌트작성하기
__Order컴포넌트작성하기
__루트(App)컴포넌트작성
__애플리케이션실행하기
요약
질문
답변
추가읽을거리

▣08장:API테스트
기술요구사항
API와코드를수동으로테스트하기
테스트자동화
__단위테스트
__AssertJ어서션을사용해테스트하기
__코드커버리지
__통합테스트하기
요약
질문
답변
추가읽을거리

▣09장:웹서비스배포하기
기술요구사항
컨테이너화란무엇일까?
도커(Docker)이미지빌드하기
__도커란무엇인가?
__이미지를빌드하는그래들태스크실행
쿠버네티스에애플리케이션배포하기
요약
질문
답변
추가읽을거리

[03부]gRPC,로깅,모니터링

▣10장:gRPC시작하기
기술요구사항
gRPC동작방식
__REST대gRPC
__웹브라우저와모바일앱에서gRPC서버를호출할수있을까?
__gRPC아키텍처란
__gRPC가ProtocolBuffer를사용하는방법
서비스정의의이해
RPC수명주기살펴보기
__수명주기에영향을주는이벤트
__gRPC서버및gRPC스텁이해
에러처리와에러상태코드
요약
질문
답변
추가읽을거리

▣11장:gRPCAPI개발및테스트
기술요구사항
API작성
__프로젝트설정
__결제게이트웨이기능작성
gRPC서버개발
__gRPC서버구현
__gRPC서버클래스구현
__gRPC서버테스트
에러처리구현
gRPC클라이언트개발
__gRPC클라이언트구현
__gRPC서비스테스트
마이크로서비스란?
__전통적인모놀리식디자인
__서비스기반모놀리식디자인
__마이크로서비스디자인
요약
질문
답변
추가읽을거리

▣12장:서비스에로깅및트레이싱추가
기술요구사항
ELK스택을활용한로깅및트레이싱
ELK스택의이해
ELK스택설치
gRPC코드에서로깅및트레이싱구현
__gRPC서버코드변경
__gRPC클라이언트코드변경
__로깅및트레이싱변경사항테스트
Zipkin과Micrometer로분산트레이싱하기
요약
질문
답변
추가읽을거리

[04부]GraphQL

▣13장:GraphQL시작하기
기술요구사항
GraphQL알아보기
__GraphQL의간략한역사
__GraphQL과REST비교
GraphQL기본학습
__쿼리타입살펴보기
__뮤테이션타입살펴보기
__서브스크립션타입살펴보기
GraphQL스키마설계
__스칼라타입의이해
__프래그먼트이해
__인터페이스이해
__유니온타입이해
__인풋타입이해
__GraphQL도구를사용한스키마설계
GraphQL쿼리와뮤테이션테스트
__N+1문제해결
__N+1문제이해란무엇인가?
N+1문제의솔루션
요약
질문
답변
추가읽을거리

▣14장:GraphQLAPI개발및테스트
기술요구사항
GraphQL용워크플로우와도구
GraphQL서버구현
__gRPC서버프로젝트생성
__GraphQLDGS의존성추가
__GraphQL스키마추가
__커스텀스칼라타입추가
__API문서화
GraphQL쿼리구현
GraphQL쿼리용페처작성
__Product용데이터페처작성
__Product컬렉션용데이터페처작성
__데이터페처메소드를사용한필드해석기작성
__N+1문제를해결하기위한데이터로더작성
GraphQL뮤테이션구현
GraphQL서브스크립션구현및테스트
__GraphQL용WebSocket서브-프로토콜이해
__Insomnia웹소켓을이용한GraphQL서브스크립션테스트
GraphQLAPI인스트루먼테이션
__커스텀헤더추가
__Micrometer와통합
테스트자동화
__GraphQL쿼리테스트
__GraphQL뮤테이션테스트
__자동화된테스트코드를이용한GraphQL서브스크립션테스트
요약
질문
답변
추가읽을거리