로그인회원가입장바구니고객센터마이페이지회사소개
kangcom
전체
Home >   >   > 

코틀린 마이크로서비스 개발

   
지은이 후안 안토니오 메디나 이글레시아스   |   출판사 에이콘  |   발행일 2019년 01월 29일
 
클릭하시면 큰 도서이미지를 보실 수 있습니다.
판매가 33,000원29,700원 10%
마일리지 5% 1,650원
발행일 2019-01-29
ISBN 1161752552 | 9791161752556
기타정보 번역서 | 504쪽 | 일반
예상출고일 1~2일 이내 (근무일기준)
배송비 무료배송
   
일반
   
이 책의 원서
  Hands-On Microservices with Kotlin
Packt Publishing | Juan Antonio Medina Iglesias
 

★ 요약 ★

어느새 자바 생태계의 주류 언어로 자리매김한 코틀린 언어를 바탕으로 마이크로서비스와 리액티브에 대해 알아본다. 기본 개념, 작동 원리와 장점을 살펴보는 것을 시작으로 스프링 부트 기반으로 마이크로서비스를 쉽게 만들어보고, 스프링 웹플럭스(WebFlux)를 사용해 넌블로킹 리액티브 마이크로서비스를 구축하는 방법을 알아본다. 이를 컨테이너 기반으로 운용하기 위한 개발, 테스트 모니터링과 배포까지 전 영역을 다룬다. 기본 개념 이해를 바탕으로 직접 만들어 보면서 새로운 개념과 기술을 체험할 수 있도록 구성돼 있다.





★ 이 책에서 다루는 내용 ★



█ 마이크로서비스 아키텍처 및 원리 이해

█ 스프링 부트 2.0 과 스프링 프레임워크 5.0을 사용해 코틀린으로 마이크로서비스 구축

█ 스프링 웹플럭스로 넌블로킹(non-blocking) 작업을 수행하는 리액티브 마이크로서비스 생성

█ 스프링 데이터를 사용해 몽고DB(MongoDB)에서 리액티브하게 데이터 가져오기

█ JUnit과 코틀린으로 하는 효과적인 테스트

█ 스프링 클라우드로 클라우드 네이티브 마이크로서비스 생성

█ 마이크로서비스의 도커 이미지 빌드 및 게시

█ 도커 스웜(Docker Swarm)을 활용한 마이크로서비스 확장

█ JMX를 활용한 마이크로서비스 모니터링

█ 오픈시프트 온라인(OpenShift Online)에서 마이크로 서비스 배포







★ 이 책의 대상 독자 ★



마이크로서비스 아키텍처에 대한 기본 지식이 있고 현재 엔터프라이즈급 웹 애플리케이션에서 서비스를 효과적으로 구현하고자 하는 코틀린 개발자라면, 이 책은 당신을 위한 것이다.





★ 이 책의 구성 ★



1장, ‘마이크로서비스 이해’에서는 마이크로서비스와 그 원리를 소개한다. 도메인 주도 설계(Domain-Driven Design), 클라우드 네이티브 마이크로서비스와 리액티브 아키텍처를 알아본다.

2장, ‘스프링 부트 2.0 시작하기’에서는 코틀린에서 처음 마이크로서비스를 개발하는 데 스프링 부트 2.0을 사용해 도움을 준다. 스프링 부트를 심도 깊게 알아볼 것이고 인텔리제이(IntelliJ) IDEA를 사용해 마이크로서비스를 구축하는 방법을 살펴본다.

3장, ‘RESTful 서비스 만들기’에서는 클라우드 네이티브 마이크로서비스를 RESTful API로 확장해 다양한 스프링 구성 요소를 소개한다.

4장, ‘리액티브 마이크로서비스 만들기’에서는 넌블로킹 리액티브 마이크로서비스를 생성한다. 스프링 웹플럭스(WebFlux)와 리액터(Reactor)를 사용해 리액티브 마이크로서비스를 구축하는 방법을 알아본다.

5장, ‘리액티브 스프링 데이터’에서는 리액티브 스프링 데이터를 사용해 몽고DB 같은 NoSQL 데이터베이스를 작업하는 방법에 중점을 둔다. 그런 다음 REST API의 CRUD 작업을 리액티브하게 생성하는 리액티브 마이크로서비스를 향상시키는 방법을 살펴본다.

6장, ‘클라우드 네이티브 마이크로서비스 만들기’에서는 클라우드 네이티브 마이크로서비스가 무엇이고, 스프링 클라우드로 쉽게 구축하는 방법을 설명한다.

7장, ‘도커 만들기’에서는 도커를 설치 및 구성해서 컨테이너를 작성, 게시, 실행하는 방법과 메이븐(Maven)을 사용해 마이크로서비스를 빌드할 때 이를 통합하는 방법에 대해 설명한다.

8장, ‘마이크로서비스 확장하기’에서는 도커에서 개인용 클라우드를 만드는 방법과 마이크로서비스를 확장하고 제어하는 방법을 살펴본다.

9장, ‘스프링 마이크로서비스 테스트’에서는 SpringBootTest와 JUnit을 사용해 마이크로서비스를 테스트하는 방법을 설명한다. Kluent를 사용해 더욱 풍부한 표현 방식으로 마이크로서비스를 테스트하는 방법을 배운다.

10장, ‘마이크로서비스 모니터링’에서는 실제 운영 시스템에서 모니터링이 중요한 이유와 스프링 부트 액추에이터(Actuator)와 JMX를 이용해 모니터하고 제어하는 마이크로서비스를 제공하는 방법에 대해 설명한다.

11장, ‘마이크로서비스 배포’에서는 마이크로서비스 도커를 오픈시프트 온라인(OpenShift Online)에 배포하는 방법과 마이크로서비스 코드가 변경될 때 깃허브를 통합해 자동 배포하는 방법을 설명한다.

12장, ‘모범 사례’에서는 마이크로서비스를 만드는 데 사용할 수 있는 업계 모범 사례를 설명한다.





★ 지은이의 말 ★



구글이 안드로이드 생태계에서 코틀린(Kotlin)의 지원을 발표하면서 코틀린은 주류 언어로 인식되기 시작했다. 마이크로서비스(Microservices)는 확장성 있고 관리하기 쉬운 웹 애플리케이션을 설계하는 데 도움이 되며, 코틀린은 현대적 관용구(Idio)를 활용해 개발을 단순화하고 고품질 서비스를 만들 수 있게 한다. 코틀린은 JVM과 100% 상호 운용성이 있어 기존 자바 코드를 가지고 작업하기 쉽다. 스프링(Spring), 잭슨(Jackson), 리액터(Reactor) 같은 인기 있는 자바 프레임워크에는 널 안전성(Null-safty)이나 타입 안전(type-safe) 선언 빌더와 같은 언어 기능을 활용하는 코틀린 모듈이 들어있다.

이 책은 운영 환경에서 테스트 가능한 코드로 서비스를 설계 및 구현해 독자가 기존 자바 구현보다 더 짧고 유지보수가 용이하고 편한 코드를 작성할 수 있게 한다.

넌블로킹(Non-blocking) 기술을 활용하고 서비스를 차기 수준의 업계 표준으로 끌어올리기 위해 리액티브(Reactive) 패러다임을 사용하면 좋은 점을 알게 될 것이다.

책을 읽는 도중에 대용량 처리 마이크로서비스를 만들기 위해 리액티브적으로 NoSQL 데이터베이스를 사용한다.

이 책에서는 다양한 클라우드 환경에서 실행할 수 있는 클라우드 네이티브 마이크로서비스(Cloud Native Microservice)를 만드는 방법과 이를 모니터링하는 방법을 알려준다.

마이크로서비스용 도커(Docker) 컨테이너(Container)를 만들고 이를 확장하는 방법을 알 수 있다. 마지막으로, 오픈시프트 온라인(Openshift Online)에 마이크로서비스를 배포한다.

1장. 마이크로서비스의 이해

__마이크로서비스란 무엇인가

____SoA 이해

____SoA와 마이크로서비스의 차이점

____일체형에서 마이크로서비스로

__마이크로서비스 원칙

____설계 원칙 정의

____비즈니스 역량 중심 모델

____느슨한 결합

____단일 책임

____구현 은닉

____격리

____독립적인 배포 가능

____장애를 고려한 빌드

____확장성

____자동화

__도메인 주도 설계

____도메인 주도 설계란

__리액티브 마이크로서비스

____리액티브 프로그래밍

____리액티브 선언문

____리액티브 프레임워크

____리액티브 마이크로서비스

__클라우드 네이티브 마이크로서비스

____클라우드 컴퓨팅

____컨테이너

____배포 모델

__정리





2장. 스프링 부트 2.0 시작하기

__스프링 부트 애플리케이션 만들기

____구성

____스프링 이니셜라이저 사용

____인텔리제이 IDEA 사용

__스프링 부트 애플리케이션의 구조

____애플리케이션 오브젝트 생성

____스프링 애플리케이션 컨텍스트 정의

____컴포넌트 스캔 이해

____컴포넌트 사용

____의존 관계 자동 설정

__스프링 부트 애플리케이션 패키징 및 실행

____패키징

____WAR가 아닌 JAR로 패키징하기

____스프링 부트 애플리케이션 실행

____실행 가능한 JAR 만들기

__애플리케이션 설정

____설정 값 설정하기

____스프링 표현 언어의 이해

____프로파일 사용

____조건부 빈 만들기

____정리





3장. RESTful 서비스 만들기

__RestController의 이해

____컨트롤러란

____RestController 만들기

____컨트롤러 이해

____경로와 요청 매개 변수

____customers 맵 생성

____경로 변수 얻기

____경로 변수 이해

____요청 매개 변수 정의

____요청 매개 변수 이해

__HTTP 동사와 상태

____표준 HTTP 동사와 상태

____HTTP 동사 처리

____서비스 레이어 구현

____HTTP 상태 처리하기

____JSON으로 작업하기

____고객 클래스에 전화번호 추가

____역직렬화 이해

__오류 처리

____컨트롤러 어드바이스 사용

____비즈니스 예외 생성

____컨트롤러 어드바이스 피하기

__정리





4장. 리액티브 마이크로서비스 만들기

__스프링 웹플럭스의 이해

____스프링 웹플럭스 애플리케이션 만들기

____네티 사용하기

____RestController 추가

____Customer 서비스 만들기

____블로킹은 리액티브가 아니다

__리액티브 서비스 만들기

____구독자와 게시자

____단일 객체 게시하기

____서비스에서 모노 사용하기

____여러 객체 게시하기

____서비스에서 플럭스 사용하기

____리액티브하게 객체 수신

__함수형 웹 프로그래밍 사용하기

____RouterFunction 사용하기

____핸들러 만들기

____리액티브 서비스 사용하기

____다중 경로 처리하기

____쿼리 매개 변수 사용하기

____JSON 본문 처리하기

__리액티브 오류 처리하기

____핸들러에서 오류 캡처하기

____오류 게시

__정리





5장. 리액티브 스프링 데이터

__NoSQL 데이터베이스

____SQL 데이터베이스란

____NoSQL 데이터베이스란

____몽고DB 설치

____Mongo 클라이언트와 연결

____데이터베이스 생성

____명령 사용

__스프링 데이터 사용

____프로젝트 설정

____연결 구성

____몽고DB에 명령어 보내기

__리액티브 리포지토리

____리포지토리 생성하기

____리포지토리 사용하기

____초기화 완료

____ReactiveMongoTemplate 사용

__CRUD 연산을 위한 RESTful API

____서비스 재사용

____GET을 READ로 매핑

____POST를 CREATE로 매핑

____DELETE 매핑

__고객 검색

__정리





6장. 클라우드 네이티브 마이크로서비스 만들기

__스프링 클라우드의 이해

____클라우드 네이티브 프로그램이란 무엇인가

____스프링 클라우드 아키텍처

____스프링 클라우드 넷플릭스

____스프링 클라우드 마이크로서비스 만들기

__컨피그 서버

____컨피그 서버 만들기

____설정 얻기

____데이터 암호화

____애플리케이션 프로파일 사용하기

__서비스 탐색

____서비스 탐색 서버 만들기

____탐색 서버에 연결하기

____스프링 부트 액추에이터 사용하기

__게이트웨이

____게이트웨이 만들기

____라우터 정의

__정리





7장. 도커 생성

__도커로 시작하기

____컨테이너 이해

____도커 설치

____도커 시작하기

____이미지 가져오기

____이미지 관리

__마이크로서비스 도커 생성하기

____예제 마이크로서비스 만들기

____Dockerfile 만들기

____마이크로서비스 도커 만들기

____마이크로서비스 실행하기

____도커 게시

____도커 허브 계정 만들기

____도커 게시

____도커와 메이븐 통합하기

__정리





8장. 마이크로서비스 확장

__확장 가능한 아키텍처

____확장의 방향성

____확장 설계

____독립적 확장

____축소

__클라우드 만들기

____스웜 만들기

____서비스 추가

____서비스의 로그 확인하기

____서비스 삭제

__마이크로서비스를 서비스로 퍼블리시

____레지스트리 만들기

____마이크로서비스 만들기

____도커 만들기

____서비스 만들기

__서비스 제어하기

____인스턴스 확장

____서버스 로그 가져오기

____서비스 제어하기

__정리





9장. 스프링 마이크로서비스 테스트

__SpringBootTest 이해

____간단한 마이크로 서비스 만들기

____SpringBootTest 이해

____빈 테스트

____MockMvc 사용하기

__모의 빈 사용하기

____왜 mock을 사용하는가

____목(mock) 설치

____모의(mocked) 값 반환하기

____목(mock) 호출 검증하기

__유창한 테스트

____Kluent 추가하기

____서술적으로 서비스 테스트하기

____서술적으로 컨트롤러 테스트하기

__정리





10장. 마이크로서비스 모니터링

__모니터링의 이해

____모니터링은 무엇인가

____경고

____복구

____장애 발생 마이크로서비스 만들기

__스프링 부트 액추에이터

____스프링 부트 액추에이터 활성화

____액츄에이터의 종단점 이해

__JMX

____JMX 이해

____JMX 사용하기

__정리





11장. 마이크로서비스 배포

__설정

____깃허브 계정 생성

____깃 설치

____오픈시프트 계정 만들기

____오픈시프트 클라이언트 다운로드

__애플리케이션 빌드

____예제 마이크로서비스 만들기

____테스트 추가

____깃허브에 업로드하기

__오픈시프트에 게시

____애플리케이션 만들기

____애플리케이션 관리

____애플리케이션 업데이트

__정리





12장. 모범 사례

__코틀린 관용구 사용

____타입 추론

____표현식

____기본 매개 변수

____람다

__스프링 컨텍스트 관리

____생성자 주입

____명시적 컨텍스트 설정

__애플리케이션의 계층화

____클래스 이해

____분할

__효과적인 테스트

____테스트 유형 이해

____단위 테스트

____통합 테스트

____E2E 테스트

____그 외 테스트

____테스팅 피라미드

____테스트 주도 개발

____행위/행동 주도 개발

__CI/CD 처리

____지속적인 통합

____지속적 배포

____파이프라인

____대시보드

__정리

후안 안토니오 메디나 이글레시아스(Juan Antonio Medina Iglesias)

20년 전에 인디 게임 개발자로 시작해 그 이후 해외 4개국에서 임베디드 소프트웨어부터 엔터프라이즈 애플리케이션에 이르기까지 다양한 분야에서 일했다. 소프트웨어 장인 정신에 평생을 바쳤다. 2006년부터 금융 산업에서 가장 큰 변화 중 하나를 수행한 재능 있는 전문가 그룹과 함께 산탄데르 테크놀로지(Santander Technology)에서 일하고 있다. 현재는 산탄데르 테크놀로지 UK의 디지털 혁신 팀에서 수석 엔지니어로 일하고 있다.





★ 옮긴이의 말 ★



어느덧 마이크로서비스는 새로운 서비스를 만들 때 실질적인 표준(de facto)이 되어 가고 있다. 이는 비단 스타트업이나 서비스 기업뿐만 아니라 전통적인 기업에서도 기존의 일체형 애플리케이션을 마이크로서비스화하기 위해 시도하고 있다는 이야기가 심심치 않게 들려오고 있다.

코틀린의 등장 이후 안드로이드 생태계의 영향이기는 하지만 어느새 자바 생태계의 주류 언어로 자리매김하게 되었고 서버측 개발 언어로도 많은 부분이 코틀린을 채택하고 있다.

마이크로서비스의 1세대가 VM 기반의 폴리그랏으로 대변되는 자치성에 기반한 서비스의 분리에 있었다면, 2세대는 컨테이너 기반의 리액티브 패러다임이라 말할 수 있을 것 같다.

이 책은 코틀린 언어를 이용해 차세대 마이크로서비스를 구축하기 위한 다양한 내용을 담고 있다.

마이크로서비스와 리액티브의 개념적인 원리와 장점으로 시작해서 스프링 부트 기반으로 마이크로서비스를 쉽게 만들어보고, 스프링 웹플럭스(WebFlux)를 사용해 넌블로킹 리액티브 마이크로서비스를 구축하는 방법에 대해 살펴본다.

그리고 이를 컨테이너 기반으로 운용하기 위한 개발, 테스트 모니터링과 배포에 이르는 영역을 다룬다. 무엇보다도 이 책의 장점은 제목에서도 알 수 있듯이 기본적인 개념에 대한 이해를 바탕으로 직접 만들어 보면서 새로운 개념과 기술을 체험할 수 있도록 구성돼 있어서 차세대급 마이크로서비스 구축에 소요되는 기술 기반을 조망해보는 데 좋은 안내서가 될 것으로 기대한다.

원서가 출간된 시점에 스프링 부트 버전은 2.0.0 M7이었으나 번역서가 출간되는 시점에는 2.1버전이 출시됐다. 그리고 인텔리제이 IDEA CE 버전도 2017.2이었으나 번역서 출간 시점에는 2018.3으로 업그레이드됐다. 번역서에는 이런 변경 사항을 반영해 예제와 책 내용을 무리없이 따라 할 수 있도록 일부 내용을 수정했으니 안심해도 좋다.

마지막으로 마이크로서비스의 배포와 운용을 위해 컨테이너를 고려 중이라면 쿠버네티스(kubernetes)를 함께 검토해볼 것을 권한다. 서비스 메시(Service Mesh)를 구성하기 위한 쿠버네티스와 이스티오(istio)의 조합은 컨테이너 기반 마이크로서비스 운용에 최상의 조합이 될 것이다.





★ 옮긴이 소개 ★



강인호

개발자로 IT 경력을 시작해서 EnSOA와 티맥스소프트를 거치면서 CBD & SOA 방법론 컨설팅을 수행했다. 오라클에서는 클라우드 네이티브, 컨테이너 네이티브 애플리케이션 개발과 운영을 도우며, 개발자 생태계를 지원하고 소통하는 역할을 하고 있으며, 최근에는 머신 러닝에도 많은 관심을 가지고 있다.



황주필

IT 기업에서 개발자로 시작해 오랫동안 BEA 시스템즈, 오라클 등에서 소프트웨어 아키텍처, 엔지니어로 일했다. 수많은 기업에서 기업용 소프트웨어 지원과 비즈니스 적용을 도왔으며, 컨테이너에 관심이 많아서 LXC, 도커로 시작해 쿠버네티스 생태계에 참여하고 있다. 현재는 컨테이너 기반의 클라우드 네이티브 애플리케이션의 개발과 운영을 도와 드리고 있습니다. 현재는 피보탈(Pivotal)에서 플랫폼 아키텍처로 근무하며, 고객이 클라우드를 통해 디지털 트랜스포메이션을 성공적으로 할 수 있도록 돕고 있다.

등록된 서평이 없습니다.
엑셀장인의 엑셀 매크로 & VBA 마스터링 북...
장기영
선택된 상품을 찜하실 수 있습니다. 선택된 상품을 바로구매 하실 수 있습니다.
파이썬으로 배우는 알고리즘 트레이딩...
조대표
선택된 상품을 찜하실 수 있습니다. 선택된 상품을 바로구매 하실 수 있습니다.
 
전체평균(0)
회원평점   회원서평수 0
에이콘 출판사의 신간
게임 테스팅 3/e
찰스 슐츠 , 로버트 덴튼 브라이언트 [옮긴이]진석준 저
31,500원
(10%↓+1%)
 
콘텐츠 어드밴티지 2/e
콜린 존스 [옮긴이] 심주연 저
22,500원
(10%↓+1%)
 
파이썬을 활용한 비지도 학습
벤자민 존스턴 , 애런 존스, 크리스토퍼 크루거 [옮긴이]조경빈 저
31,500원
(10%↓+1%)
 
순수 함수형 데이터 구조
크리스 오카사키 [옮긴이] 오현석 저
31,500원
(10%↓+5%)
 
빅데이터 시각화
제임스 밀러 [옮긴이]최준규, 강형건 저
25,200원
(10%↓+5%)
 
이메일주소수집거부