길벗·이지톡

도서 IT전문서/IT입문서 프로그래밍/오픈소스
비동기 처리는 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 요약
더보기접기

저자

ㆍ지은이 레이먼드뢰스텐버그

지은이 소개
건축을 기반으로 하는 디자인학 박사로, 2002년부터 건축인테리어 그래픽포털 사이트 및 회사를 운영하였다. 또한 2007년부터 2014년까지 서울과학기술대학교, 서울예술대학교, 신구대학교, 백석대학교, 국제대학교 등의 학교에서 겸임교수 및 강사로 실무가 반영된 최신의 현장 그래픽 기술을 강의하였다. 2015년 건축설계, 인테리어 설계 국가직무표준(NCS: National Conpetency Standards)의 개발 용역에 참여하였으며, 이후 건축설계 인테리어설계 학습모듈 중 건축, 인테리어 그래픽 부분을 집필하였다. 현재는 한국교육의 비전과 발전전략을 수립하는 국무총리 산하 정부출연연구기관인 한국교육개발원에서 연구사업을 운영 중에 있다.

ㆍ지은이 롭배커

지은이 소개
건축을 기반으로 하는 디자인학 박사로, 2002년부터 건축인테리어 그래픽포털 사이트 및 회사를 운영하였다. 또한 2007년부터 2014년까지 서울과학기술대학교, 서울예술대학교, 신구대학교, 백석대학교, 국제대학교 등의 학교에서 겸임교수 및 강사로 실무가 반영된 최신의 현장 그래픽 기술을 강의하였다. 2015년 건축설계, 인테리어 설계 국가직무표준(NCS: National Conpetency Standards)의 개발 용역에 참여하였으며, 이후 건축설계 인테리어설계 학습모듈 중 건축, 인테리어 그래픽 부분을 집필하였다. 현재는 한국교육의 비전과 발전전략을 수립하는 국무총리 산하 정부출연연구기관인 한국교육개발원에서 연구사업을 운영 중에 있다.

ㆍ지은이 롭윌리엄스

지은이 소개
건축을 기반으로 하는 디자인학 박사로, 2002년부터 건축인테리어 그래픽포털 사이트 및 회사를 운영하였다. 또한 2007년부터 2014년까지 서울과학기술대학교, 서울예술대학교, 신구대학교, 백석대학교, 국제대학교 등의 학교에서 겸임교수 및 강사로 실무가 반영된 최신의 현장 그래픽 기술을 강의하였다. 2015년 건축설계, 인테리어 설계 국가직무표준(NCS: National Conpetency Standards)의 개발 용역에 참여하였으며, 이후 건축설계 인테리어설계 학습모듈 중 건축, 인테리어 그래픽 부분을 집필하였다. 현재는 한국교육의 비전과 발전전략을 수립하는 국무총리 산하 정부출연연구기관인 한국교육개발원에서 연구사업을 운영 중에 있다.

ㆍ옮긴이 오현석

옮긴이 소개
모빌리티42(Mobility42) 이사로 일하면서 매일매일 고객의 요청에 따라 코드를 만들어내고 있는 현업 개발자다. 『코어 파이썬 애플리케이션 프로그래밍Core Python Applications Programming Third Edition』(에이콘출판, 2014)을 시작으로 『Kotlin in Action』(에이콘출판, 2017), 『한 권으로 읽는 컴퓨터 구조와 프로그래밍』(책만, 2021), 『파이썬으로 살펴보는 아키텍처 패턴』(한빛미디어, 2021), 『Programming in Scala 4/e』(에이콘출판, 2021) 등 30여 권의 책을 번역했다.

연관 프로그램

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