스프링 6와 스프링 부트 3로 배우는 모던 API 개발
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및클라우드기반웹애플리케이션을개념화,모델링,설계및개발하는것에전문가수준의역량을가지고있다.또한,마이크로서비스기반솔루션개발과다양한유형의워크플로및오케스트레이션엔진구현도경험했으며지속적으로학습하며책과교육을통해지식을공유하고있다.

역자:김광영
보험회사에서보험계리인실업무로커리어를시작한후,IT회사로이직해소프트웨어개발자,IT아키텍트,컨설턴트등다양한역할을수행하며디지털기술의기반을다졌다.제조회사에서는디지털사이니지관련해외신사업을이끌며글로벌시장경험을쌓았다.이러한경험을바탕으로현재는클라우드컴퓨팅회사에서솔루션스아키텍트(SolutionsArchitect)로활동하며,고객의디지털전환과클라우드도입및활용을지원하고있다.매일손톱만큼의노력이인생을변화시킨다는믿음으로(1.01)³=37.78이라는문구를좋아한다.

역자:문종민
15년간시스템통합분야에서소프트웨어아키텍트로경력을쌓았으며,그중10여년은금융시스템구축과코어뱅킹프레임워크개발아키텍트로활동했다.현재는클라우드컴퓨팅회사에서근무하면서금융고객들이클라우드를통해혁신하도록돕고있다.끊임없이변화하는IT환경속에서새로운도전을즐기면서기술의본질을파악하기위해애쓰고있다.

역자:박천구
몇번의스타트업도전에고배를마셨고유료디지털미디어스트리밍서비스와클라우드기반IoT플랫폼을개발했다.현재는클라우드컴퓨팅회사에서일하고있고,신기술에관심이많으며'기술이세상을바꾼다'는모토를갖고살고있다.《EJB&WebLogic》을직접썼고《Prototype&Scriptaculous인액션》《프로웹2.0매쉬업》《프로스프링2.5》《클라우드컴퓨팅과SOA컨버전스:전사적도입을통한기업의생존전략》을번역했다.

목차

[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서브스크립션테스트
요약
질문
답변
추가읽을거리

출판사 서평

실습을통해프로덕션수준의API를설계,테스트,보안,배포및유지보수하는방법을배워애플리케이션의기능을향상시켜보자!

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

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

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

★이책에서다루는내용★

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