길벗·이지톡

도서 IT 전문서 프로그래밍/오픈소스
r
비동기 처리는 Akka에 맡기고 로직 구현에만 집중하자! Akka 코딩 공작소
정 가
38,000원
I S B N
9791160502305
출 간
2017-07-28
분 량
552쪽
지 은 이
레이먼드 뢰스텐버그, 롭 베커, 롭 윌리엄스
난 이 도
중급
부 록
예제 소스

액터 모델, 동시성 처리, 테스트와 성능 튜닝, 클러스터링, 스트리밍 애플리케이션 구축까지!

아카(Akka)는 액터 모델을 기반으로 분산 및 동시성 애플리케이션을 작성하는 데 필요한 여러 도구를 제공해주는 툴킷이자 런타임이다. 아카를 사용하면 반응형 프로그래밍을 구현하기 쉬울 뿐 아니라 비동기 처리에 드는 품을 줄일 수 있어 로직 구현에 더욱 집중할 수 있다.

이 책은 최신 아카 버전인 2.5에서 동작을 확인했으며, 예제 코드는 스칼라로 작성되어 있다. 액터 모델 개념부터 액터 시스템 구축, 퓨처와 액터의 조합, 메시징 채널, 시스템 통합, 클러스터링 등 아카가 제공하는 기본 기능을 코드와 함께 살펴본다. 아카를 사용하면 삶이 얼마나 편해지는지 알게 될 것이다.

목차

1장 아카 소개
1.1 아카란 무엇인가?
1.2 액터: 간략한 정리
1.3 확장성에 대한 두 가지 접근 방법: 예제 준비하기
1.4 전통적인 규모 확장
____1.4.1 전통적인 규모 확장과 내구성: 모든 것을 데이터베이스에 저장
____1.4.2 전통적인 규모 확장과 상호 작용: 폴링
____1.4.3 전통적인 규모 확장과 상호 작용: 웹 서비스
1.5 아카를 사용한 규모 확장
____1.5.1 아카를 사용한 규모 확장과 내구성: 메시지 송수신
____1.5.2 아카를 사용한 규모 확장과 상호 작용: 푸시 메시지
____1.5.3 아카를 사용한 규모 확장과 실패: 비동기 디커플링
____1.5.4 아카의 접근 방법: 메시지 송신과 수신
1.6 액터: 한 가지 프로그래밍 모델로 수직/수평 확장을 동시에 할 수 있음
____1.6.1 비동기 모델
____1.6.2 액터 연산
1.7 아카 액터
____1.7.1 액터 시스템
____1.7.2 ActorRef, 우편함, 액터
____1.7.3 디스패처
____1.7.4 액터와 네트워크
1.8 요약

2장 일어나 달려보자
2.1 복제, 빌드, 인터페이스 테스트
____2.1.1 sbt로 빌드하기
____2.1.2 GoTicks.com REST 서버 빨리 돌려보기
2.2 앱에 있는 액터 살펴보기
____2.2.1 앱의 구조
____2.2.2 구매를 처리하는 액터: TicketSeller
____2.2.3 BoxOffice 액터
____2.2.4 RestApi
2.3 클라우드 속으로
____2.3.1 헤로쿠에 앱 만들기
____2.3.2 헤로쿠에 배포 및 실행하기
2.4 요약

3장 액터를 사용한 테스트 주도 개발
3.1 액터 테스트하기
3.2 단방향 메시지
____3.2.1 SilentActor 예제
____3.2.2 SendingActor 예제
____3.2.3 SideEffectingActor 예제
3.3 양방향 메시지
3.4 요약

4장 내고장성
4.1 내고장성이란(그리고 내고장성이 아닌 것은)?
____4.1.1 일반 객체와 예외
____4.1.2 중단되게 내버려 두기
4.2 액터 생명주기
____4.2.1 시작 이벤트
____4.2.2 종료 이벤트
____4.2.3 재시작 이벤트
____4.2.4 생명주기 처리를 한데 모으기
____4.2.5 생명주기 감시하기
4.3 감독
____4.3.1 슈퍼바이저 계층
____4.3.2 미리 정의된 전략
____4.3.3 사용자 정의 전략
4.4 요약

5장 퓨처
5.1 퓨처의 용례
5.2 미래에는 블로킹이 없다
____5.2.1 미래를 위한 약속 Promise
5.3 미래적인 오류
5.4 퓨처 조합하기
5.5 퓨처와 액터 조합하기
5.6 요약

6장 첫 번째 분산 아카 애플리케이션
6.1 수평 규모 확장하기
____6.1.1 일반적인 네트워크 용어
____6.1.2 분산 프로그래밍 모델을 사용하는 이유
6.2 원격 액터를 사용해 수평 규모 확장하기____6.2.1 GoTicks.com 앱을 분산 앱으로 만들기
____6.2.2 원격 REPL 동작
____6.2.3 원격 검색
____6.2.4 원격 배포
____6.2.5 다중 JVM 테스트
6.3 요약

7장 설정, 로깅, 배포
7.1 설정
____7.1.1 아카 설정 사용하기
____7.1.2 기본 값 사용하기
____7.1.3 아카 설정
____7.1.4 다중 시스템
7.2 로깅
____7.2.1 아카 애플리케이션에서 로깅하기
____7.2.2 로깅 사용하기
____7.2.3 아카의 로깅 제어하기
7.3 액터 기반 애플리케이션 배포하기
7.4 요약

8장 액터를 사용한 구조적 패턴
8.1 파이프와 필터
____8.1.1 엔터프라이즈 통합 패턴: 파이프와 필터
____8.1.2 아카에서의 파이프와 필터
8.2 엔터프라이즈 통합 패턴: 분배-취합 ____8.2.1 적용
____8.2.2 아카를 사용한 병렬 작업
____8.2.3 수신자 목록 패턴을 사용해 분배 컴포넌트 구현하기
____8.2.4 병합기 패턴을 사용해 취합 컴포넌트 구현하기
____8.2.5 분배-취합 패턴으로 컴포넌트를 한데 모으기
8.3 엔터프라이즈 통합 패턴: 라우팅 슬립
8.4 요약

9장 메시지 라우팅하기
9.1 엔터프라이즈 통합 라우터 패턴
9.2 아카 라우터를 사용해 부하 균등화하기
____9.2.1 아카 풀 라우터
____9.2.2 아카 그룹 라우터
____9.2.3 ConsistentHashing 라우터
9.3 액터를 사용해 라우터 패턴 구현하기
____9.3.1 내용 기반 라우팅
____9.3.2 상태 기반 라우팅
____9.3.3 라우터 구현
9.4 요약

10장 메시지 채널
10.1 여러 가지 채널 유형
____10.1.1 점대점 채널
____10.1.2 발행-구독 채널
10.2 특수 채널
____10.2.1 데드레터 채널
____10.2.2 배달 보장 채널
10.3 요약

11장 유한 상태 기계와 에이전트
11.1 유한 상태 기계 사용하기
____11.1.1 유한 상태 기계 소개
____11.1.2 FSM 모델 만들기
11.2 FSM 모델 구현하기
____11.2.1 천이 구현하기
____11.2.2 진입 동작 구현하기
____11.2.3 FSM의 타이머
____11.2.4 FSM 종료하기
11.3 에이전트를 활용해 공유 상태 구현하기
____11.3.1 에이전트를 통해 공유되는 간단한 상태
____11.3.2 상태 갱신 기다리기
11.4 요약

12장 시스템 통합
12.1 메시지 종말점
____12.1.1 정규화기
____12.1.2 공통 데이터 모델
12.2 아파치 카멜을 사용해 종말점 구현하기
____12.2.1 외부 시스템에서 메시지를 받는 소비자 종말점 구현하기
____12.2.2 외부 시스템에 메시지를 보내는 생산자 종말점 구현하기
12.3 HTTP 인터페이스 구현하기
____12.3.1 HTTP 예제
____12.3.2 akka-http로 REST 종말점 구현하기
12.4 요약

13장 스트리밍
13.1 기본 스트림 처리
____13.1.1 소스와 싱크를 사용해 파일 복사하기
____13.1.2 실행 가능한 그래프를 실체화하기
____13.1.3 흐름으로 이벤트 처리하기
____13.1.4 스트림 내 오류 처리하기
____13.1.5 BidiFlow로 프로토콜 만들기
13.2 HTTP 스트리밍하기
____13.2.1 HTTP를 통한 스트림 받기
____13.2.2 HTTP를 통한 스트림으로 응답하기
____13.2.3 콘텐트 타입과 협상을 위한 전용 마샬러와 역마샬러
13.3 그래프 DSL에서 팬 인/팬 아웃하기
____13.3.1 흐름에 브로드캐스팅하기
____13.3.2 흐름 병합하기
13.4 생산자와 소비자 사이 중재하기
____13.4.1 버퍼 사용하기
13.5 흐르는 속도-그래프의 일부분 분리하기
____13.5.1 느린 소비자를 위해 이벤트 모아서 처리하기
____13.5.2 빠른 소비자 기능을 확장하기
13.6 요약

14장 클러스터링
14.1 클러스터링을 사용하는 이유
14.2 클러스터 멤버십
____14.2.1 클러스터에 합류하기
____14.2.2 클러스터에서 이탈하기
14.3 클러스터를 사용한 작업 처리
____14.3.1 클러스터 시작하기
____14.3.2 라우터를 사용해 작업 배분하기
____14.3.3 회복성 있는 작업
____14.3.4 클러스터 테스트하기
14.4 요약

15장 액터 영속성
15.1 이벤트 소싱으로 상태 복구하기
____15.1.1 레코드 자체를 갱신하기
____15.1.2 갱신 없이 상태 영속화하기
____15.1.3 액터를 위한 이벤트 소싱
15.2 영속적인 액터
____15.2.1 영속적인 액터
____15.2.2 테스트
____15.2.3 스냅샷
____15.2.4 영속성 질의
____15.2.5 직렬화
15.3 클러스터화한 영속성
____15.3.1 클러스터 싱글톤
____15.3.2 클러스터 샤딩
15.4 배달 보장 : AtLeastOnceDelivery
15.5 요약

16장 성능 향상 팁
16.1 성능 분석
____16.1.1 시스템 성능
____16.1.2 성능 매개변수
16.2 액터의 성능 측정
____16.2.1 우편함 데이터 수집하기
____16.2.2 처리 데이터 수집하기
16.3 병목 지점 해결로 성능 높이기
16.4 디스패처 설정하기
____16.4.1 스레드 풀의 문제점 인지하기
____16.4.2 디스패처 인스턴스 여러 개 사용하기
____16.4.3 스레드 풀 크기를 정적으로 바꾸기
____16.4.4 스레드 풀 크기를 동적으로 바꾸기
16.5 스레드 해제 방식 변경하기
____16.5.1 스레드 해제 설정의 한계
16.6 요약

17장 미래를 미리 살펴보기
17.1 akka-typed 모듈
____17.1.1 아카 2.5.x의 akka-typed 모듈에 맞춘 변화
17.2 아카 분산 데이터
17.3 요약
더보기접기

저자

ㆍ지은이 레이먼드 뢰스텐버그, 롭 베커, 롭 윌리엄스

저자소개

레이먼드 뢰스텐버그(Raymond Roestenburg)

노련한 소프트웨어 장인이며 폴리글랏 프로그래머이고 소프트웨어 아키텍트다. 스칼라 커뮤니티에 적극적으로 참여하고 있으며 아카 커미터(committer)이기도 하다. akka-camel 모듈에도 기여했다.

 

롭 베커(Rob Bakker)

경험 많은 소프트웨어 개발자로 동시성 백엔드 시스템과 시스템 통합에 관심이 많다. 아카 버전 0.7부터 스칼라와 아카를 사용해왔다.

 

롭 윌리엄스(Rob Williams)

기계 학습에 초점을 맞춘, 자바 솔루션을 중심으로 하는 온토메트릭스(ontometrics)사의 설립자다. 십여 년 전부터 액터 기반 프로그래밍을 사용해왔고 프로젝트에 적용했다.

 

ㆍ그림 오현석

저자소개

KAIST에서 전산학 학사와 석사 학위(프로그래밍 언어 연구실)를 취득했다. 삼성메디슨, 비트앤펄스 등에서 UI 개발자와 개발 팀장을 지냈고, 현재 호주 JNF Soft에서 C++/풀스택 개발자 및 컨설턴트로 일하고 있다. 매일 두 시간씩 번역과 저술을 통해 조금이나마 동료 프로그래머들에게 도움을 주고자 노력하고 있다. 웹이나 모바일 등 분야에서 값 중심 프로그래밍을 통해 오류 발생 가능성이 작으면서 유지 보수가 편한 프로그램을 작성하는 방법과 이를 지원하는 여러 도구를 만드는 일에 관심이 많다. 최근에는 CEF를 기반으로 웹 프런트엔드와 C++ 백엔드를 결합한 흥미로운 프로젝트를 진행하고 있으며, 함수형 리액티브 프로그래밍을 자바스크립트와 C++에 적용해서 좀 더 편하면서 오류도 적은 코드를 생산해내는 방법을 찾으려고 고민 중이다.

저서

《코어 파이썬 애플리케이션 프로그래밍 3판》(에이콘, 2014)부터 시작해서 《시스템 성능 분석과 최적화》(위키북스, 2015), 《고성능 파이썬》(한빛미디어, 2016), 《함수형 파이썬 프로그래밍》, 《Programming in Scala 3/e》(이상 에이콘, 2017) 등을 비롯한 십여 권 이상의 책을 번역했다.


연관 프로그램

아래 프로그램은 길벗출판사가 제공하는 것이 아닙니다.
무료로 사용할 수 있는 정보를 안내해 드리니, 지원이 필요하면 해당 프로그렘 제작사로 문의해 주세요.