스프링 부트로 개발하는 MSA 컴포넌트 (마이크로서비스를 올바르게 도입하기 위한 스프링 부트 사용법!)

스프링 부트로 개발하는 MSA 컴포넌트 (마이크로서비스를 올바르게 도입하기 위한 스프링 부트 사용법!)

$44.73
Description
마이크로서비스 아키텍처 환경에서
컴포넌트를 개발할 때 무엇이 필요한지 알아보고,
이때 필요한 스프링 부트 사용법을 익힌다!
마이크로서비스 아키텍처는 대규모 서비스의 ‘정답’처럼 여겨지기도 하지만, 실제로 구현하기도 어렵고 여러 시스템이 유기적으로 얽혀 있어 운영이 쉽지 않은 복잡한 아키텍처다. 그러므로 개발 단계나 운영 단계에서 아키텍처에 대한 이해가 매우 중요하다. 이를 돕기 위해 오랫동안 MSA 컴포넌트를 개발하며 커리어를 쌓아온 베테랑 개발자가 MSA 환경에서 컴포넌트를 짤 때 알아야 할 것들을 실무 관점으로 풀어냈다.
저자

김병부

광운대학교무선네트워크연구실에서석사학위를받았다.지금은NHNDooray에서백엔드시스템을개발하고있으며,동시에NHNAcademy에서미래의개발자에게기술을전파하는즐거움도느끼고있다.저서로는『자바를다루는기술』,『LinuxServerBible』,『ASP.NET30일완성』등이있다.

목차

1장마이크로서비스아키텍처
1.1모놀리식아키텍처소개
__1.1.1모놀리식아키텍처장점
__1.1.2모놀리식아키텍처단점
1.2마이크로서비스아키텍처소개
__1.2.1마이크로서비스아키텍처장점
__1.2.2마이크로서비스아키텍처단점
1.3마이크로서비스아키텍처설계
__1.3.1서비스세분화원칙
__1.3.2도메인주도설계(DDD)의바운디드컨텍스트
__1.3.3단일책임원칙
__1.3.4가벼운통신프로토콜
__1.3.5외부공개인터페이스
__1.3.6마이크로서비스마다독립된데이터저장소
__1.3.7정리
1.4스프링투어의아키텍처변화
__1.4.1스프링투어의시작
__1.4.2서비스안정성확보
__1.4.3확장의시작
__1.4.4데이터저장소의확장
__1.4.5마이크로서비스아키텍처의시작
1.512요소애플리케이션
__1.5.1코드베이스:버전관리되는하나의코드베이스와다양한배포
__1.5.2의존성:명시적으로선언할수있고분리할수있는의존성
__1.5.3설정:환경변수를이용한설정
__1.5.4지원서비스:지원서비스는연결된리소스로처리
__1.5.5빌드,릴리스,실행:소스빌드와실행은완전히분리되어야한다
__1.5.6프로세스:애플리케이션은하나이상의무상태프로세스로실행되어야한다
__1.5.7포트바인딩:포트바인딩을통한서비스공개
__1.5.8동시성:프로세스들을통한수평확장
__1.5.9폐기가능:프로세스는빠르게시작해야하고안정적으로종료해야한다
__1.5.10Dev환경과Production환경일치
__1.5.11로그:로그는이벤트스트림으로다룬다
__1.5.12admin프로세스:시스템유지보수를위한일회성프로세스
1.6정리64

2장프레임워크와스프링부트
2.1스프링투어가스프링부트를선택한이유
2.2스프링프레임워크
__2.2.1POJO기반의경량컨테이너
__2.2.2복잡한비즈니스영역의문제를쉽게개발하고운영하기위한철학
__2.2.3모듈식프레임워크
__2.2.4높은확장성과범용성,생태계시스템
__2.2.5엔터프라이즈애플리케이션에적합한오픈소스경량급프레임워크
2.3스프링부트소개
__2.3.1단독실행가능한스프링애플리케이션
__2.3.2간편한설정을위한‘스타터’의존성제공
__2.3.3스프링기능을자동설정하는‘자동구성’제공
__2.3.4모니터링지표,헬스체크를위한‘액추에이터’
__2.3.5XML설정을위한일이필요없음
__2.3.6애플리케이션에내장된WAS
2.4스프링부트애플리케이션시작하기
__2.4.1Maven을사용하여프로젝트를구성하는방법
__2.4.2스프링이니셜라이저를사용하여프로젝트를구성하는방법
__2.4.3IntelliJ의이니셜라이저를사용하여프로젝트를구성하는방법
__2.4.4스프링스타터에포함된pom.xml분석
__2.4.5@SpringBootApplication애너테이션과메인클래스
__2.4.6스프링애플리케이션예제
2.5정리

3장스프링애플리케이션기본
3.1스프링빈사용
__3.1.1@Bean애너테이션
3.2자바설정
__3.2.1@Configuration
__3.2.2@ComponentScan
__3.2.3@Import
3.3스테레오타입스프링빈사용
3.4의존성주입
__3.4.1의존성
__3.4.2애너테이션기반설정의의존성주입
__3.4.3자바설정의의존성주입
3.5ApplicationContext
3.6스프링빈스코프
3.7스프링빈생명주기관리
3.8스프링빈고급정의
__3.8.1@Primary애너테이션
__3.8.2@Lazy애너테이션
3.9스프링투어가오해한스프링빈

4장스프링웹MVC개요
4.1HTTP프로토콜
__4.1.1HTTP상태코드
__4.1.2HTTP특징
4.2스프링웹MVC프레임워크
__4.2.1MVC패턴
__4.2.2DispatcherServlet
__4.2.3서블릿스택과스레드모델
__4.2.4스프링부트설정
4.3REST-API설계
__4.3.1HTTP메서드별REST-API예제
__4.3.2REST-API특성과설계
4.4간단한REST-API예제
__4.4.1@ResponseBody와HttpMessageConverter

5장스프링MVC를이용한REST-API개발
5.1REST-API:GET,DELETE메서드매핑
__5.1.1호텔정보조회API명세서
__5.1.2Controller클래스구현
__5.1.3@GetMapping애너테이션
__5.1.4@PathVariable애너테이션
__5.1.5@RequestParam애너테이션
__5.1.6@DeleteMapping애너테이션
5.2REST-API응답메시지처리
__5.2.1@JsonProperty와@JsonSerialize애너테이션:JSON마셜링예제
__5.2.2JsonSerializer와JsonDeserializer예제
__5.2.3@JsonFormat애너테이션
__5.2.4열거형클래스변환
5.3REST-APIPOST,PUT매핑
5.4ResponseEntity응답과Pageable,Sort클래스
__5.4.1ResponseEntity클래스
__5.4.2페이지네이션과정렬파라미터를위한Pageable클래스
__5.4.3Pageable자동설정
5.5REST-API검증과예외처리
__5.5.1JSR-303을사용한데이터검증
__5.5.2@Valid애너테이션과예제
__5.5.3Validator인터페이스를사용한검증
__5.5.4@ControllerAdvice와@ExceptionHandler예외처리
5.6미디어콘텐츠내려받기

6장웹애플리케이션서버구축하기
6.1웹애플리케이션기본설정
__6.1.1웹애플리케이션의설정메커니즘
__6.1.2WebMvcConfigurer를사용한설정
__6.1.3DispatcherServlet설정
6.2HttpMessageConverter와REST-API설정
__6.2.1HttpMessageConverter설정
__6.2.2ObjectMapper와스프링빈을이용한애플리케이션설정
6.3Interceptor와ServletFilter설정
__6.3.1HandlerInterceptor인터페이스
__6.3.2Filter인터페이스
6.4Application.properties설정
__6.4.1@Value애너테이션
__6.4.2@ConfigurationProperties와@ConfigurationPropertiesScan
6.5Profile설정
__6.5.1Profile변수값설정
__6.5.2프로파일별application.properties설정
__6.5.3@Profile애너테이션과스프링빈설정
__6.5.4@Profile애너테이션과인터페이스를사용한확장
__6.5.5Environment인터페이스
6.6REST-API와국제화메시지처리
__6.6.1message.properties파일설정
__6.6.2MessageSource인터페이스
__6.6.3스프링부트프레임워크의자동설정구성
__6.6.4LocaleResolver와LocaleChangeInterceptor설정예제
6.7로그설정
__6.7.1Logger선언과사용
__6.7.2logback-spring.xml
__6.7.3중앙수집로그
6.8애플리케이션패키징과실행
__6.8.1메이븐패키징
__6.8.2도커이미지생성

7장스프링AOP와테스트,자동설정원리
7.1스프링AOP
__7.1.1AOP용어정리
__7.1.2어드바이스종류와설명
__7.1.3스프링AOP와프록시객체
__7.1.4포인트컷과표현식
__7.1.5JoinPoint와ProceedingJoinPoint
__7.1.6관점클래스예제
__7.1.7애너테이션을사용한AOP
7.2스프링부트테스트
__7.2.1스프링부트테스트설정
__7.2.2Junit사용예제
__7.2.3@SpringBootTest를사용한스프링부트테스트
__7.2.4@TestConfiguration을사용한테스트환경설정
__7.2.5@MockBean을사용한테스트환경설정
__7.2.6테스트슬라이스애너테이션
__7.2.7스프링부트웹MVC테스트예제
__7.2.8JPA테스트
7.3스프링부트자동설정

8장데이터영속성
8.1JPA
__8.1.1JPA소개
__8.1.2ORM과SQLMapper비교
__8.1.3JPA장단점
8.2MySQL실행환경설정458
__8.2.1도커를사용한MySQL실행환경설정
__8.2.2테이블설계
8.3SpringDataJPA기능과설정
__8.3.1SpringDataJPA기능
__8.3.2SpringDataJPA자동설정과필수스프링빈
__8.3.3SpringDataJPA설정
__8.3.4HikariDataSource설정
8.4엔터티클래스설계
__8.4.1엔터티클래스와@Entity애너테이션
__8.4.2엔터티클래스기본키설정
__8.4.3열거형과@Enumerated
__8.4.4Date클래스와@Temporal
__8.4.5엔터티클래스속성변환과AttributeConverter
__8.4.6엔터티클래스상속과@MappedSuperClass
8.5리포지터리개발과JpaRepository
8.6SpringDataJPA의쿼리메서드기능
__8.6.1메서드이름으로쿼리생성
__8.6.2예제와테스트케이스
__8.6.3@Query애너테이션을사용한쿼리사용
8.7트랜잭션과@Transactional
__8.7.1@Transactional애너테이션
__8.7.2@Transactional의propagation속성
__8.7.3@Transactional애너테이션의isol

출판사 서평

마이크로서비스도입에필요한
스프링부트핵심가이드!

마이크로서비스도입에필요한스프링부트사용법을확실하게배우자!
개발과운영이까다로운마이크로서비스를올바르게이해하고,마이크로서비스애플리케이션을개발할때필요한스프링부트에집중해서설명한다.스프링부트의자동설정기능부터JPA,REST-API,영속성프레임워크와레디스,그리고스프링프레임워크에서제공하는스케줄링기능과스프링이벤트를사용하는방법까지순서대로들여다보면서스프링애플리케이션을보다완성도있게개발할수있다.

400개의길고짧은예제를통해실전감각을올리자!
이책에서는실무에서서비스를개발하면서부딪힐수있는여러상황들을예제로설명한다.400개의길고짧은예제를통해‘스프링투어’라는가상의여행예약서비스를조금씩발전시키면서여러서비스가결합된서비스로의전환과정을보여준다.이과정안에서스프링부트로마이크로서비스컴포넌트를개발하는방법을보다쉽게이해할수있을것이다.