Akka 쿡북 [다양한 레시피로 아카를 쉽게 배워보기]
- 원서명Akka Cookbook: Recipes for concurrent, fast, and reactive applications (ISBN 9781785288180)
- 지은이헥터 베이가 오르티즈(Héctor Veiga Ortiz), 피유시 미시라(Piyush Mishra)
- 옮긴이이판호
- ISBN : 9791161751702
- 33,000원
- 2018년 05월 31일 펴냄
- 페이퍼백 | 476쪽 | 188*235mm
- 시리즈 : acorn+PACKT, 프로그래밍 언어
책 소개
소스 코드 파일은 여기에서 내려 받으실 수 있습니다.
요약
아카(Akka)를 처음 접하는 사람들을 위한 입문서다. JVM 환경에서 아카 기반으로 동시적이고 분산된, 그리고 확장적이며 반응적인 애플리케이션을 개발하는 방법을 기초부터 차근차근 배울 수 있다. 또한 아카 지속성, 클러스터링, 스트림, HTTP 등 고급 기능에 대한 레시피로 기술적인 목표 달성에 이 책을 활용할 수 있다.
이 책에서 다루는 내용
█ 통제 인식 메일박스를 사용한 액터 통제
█ 아카 테스트킷으로 장애허용 애플리케이션 테스트
█ 퓨처와 에이전트로 병렬 애플리케이션 제작
█ 도커에 아카 애플리케이션을 패키징 및 배포
█ 다른 노드에 프로그래밍 방식으로 원격 액터 배포
█ 아카 액터에 스트림 포함시키기
█ 라곰 설치 및 라곰 프로젝트 제작
이 책의 대상 독자
이 책에서는 다양한 방법으로 아카 툴킷을 살펴본다. 액터에 메시지를 보내는 쉬운 내용부터 마스터 슬레이브 작업 풀링 패턴 같은 고급 주제를 아우르는 유용한 예제를 통해 아카를 이용해 각 패턴을 완성해 나가는 방법을 설명한다. 아카 입문자뿐 아니라 아카에 익숙한 독자도 아카를 좀 더 깊이 이해하게 될 것이다.
이 책의 구성
1장, ‘아카로 뛰어들기’에서는 아카 액터(actor), 액터시스템, 메일박스, 액터 행위 바꾸기의 기본 개념을 다룬다.
2장, ‘감시와 모니터링’에서는 액터 라이프사이클, 액터 계층, 감독, 모니터링을 다룬다.
3장, ‘메시지 라우팅’에서는 서로 다른 형태의 그룹과 풀 라우터, 그리고 아카 디스패처의 동작 방식을 다룬다.
4장, ‘퓨처와 에이전트’에서는 퓨처가 동작하는 방식과 이들을 아카 툴킷과 잘 통합시키는 방법을 다룬다. 또한 아카 에이전트도 다룬다.
5장, ‘액터 스케줄링 및 다른 유틸리티’에서는 아카 스케줄러의 동작 방법을 설명한다. 그리고 아카 애플리케이션을 패키징, 설정, 실행하는 여러 가지 유용한 방법을 다룬다.
6장, ‘아카 지속성’에서는 상태를 가지는 액터의 상태를 아파치 카산드라나 레디스 같은 다양한 기술로 유지하는지 방법을 설명한다. 다양한 복구 전략을 다룬다.
7장, ‘원격화 및 아카 클러스터링’에서는 잘 알려진 원격 주소를 사용하거나 분산화된 피어투피어(peer-to-peer) 기반 클러스터 멤버십 서비스를 연결해 단일의 JVM을 벗어나 아카를 사용하는 방법을 다룬다.
8장, ‘아카 스트림’에서는 아카 스트림 프레임워크를 살펴보고, 이를 아카 및 서드파티 기술과 통합시키는 방법을 다룬다.
9장, ‘아카 HTTP’에서는 아카 HTTP를 클라이이언트와 서버 사이드 모두에서 사용하는 방법을 설명한다. 또한, 사용자 사례에 따른 API 수준 설정 방법을 보여준다.
10장, ‘다양한 아카 패턴 이해’에서는 아카를 사용해 서로 다른 일반적인 프로그래밍 패턴을 사용하는 방법을 다룬다.
11장, ‘라곰으로 마이크로서비스하기’에서는 라이트밴드의 마이크로서비스 프레임워크인 라곰을 소개한다. 라곰의 관례 및 라곰으로 마이크로서비스를 생성, 설정, 연결, 실행하는 데 필요한 정보를 살펴본다.
목차
목차
- 1장. 아카로 뛰어들기
- 소개
- 아카 스칼라 SBT 프로젝트 만들기
- 액터시스템 생성 및 이해
- 액터의 행위와 상태 정의하기
- 액터에 메시지 송신하기
- 액터로부터 결과 요청하기
- 액터 사이에서의 통신
- 액터를 위한 사용자 정의 메일박스 만들기
- 액터가 수신하는 메시지의 우선순위 정하기
- 액터를 위한 제어인식 메일박스 만들기
- 액터의 행위를 부여하기/제거하기
- 액터 중단시키기
- 2장. 감시와 모니터링
- 소개
- 부모 액터의 자식 액터 만들기
- 액터의 라이프사이클 훅 오버라이드하기
- 액터에게 메시지를 송신하고 응답을 모으기
- 액터를 위한 OneForOneStrategy 이해하기
- 액터를 위한 AllForOneStrategy 이해하기
- DeathWatch를 사용해 액터 라이프사이클 모니터링하기
- 3장. 메시지 라우팅
- 소개
- 액터의 SmallestMailboxPool 만들기
- 액터의 BalancingPool 만들기
- 액터의 RoundRobinPool 만들기
- 액터의 BroadcastPool 만들기
- 액터의 ScatterGatherFirstCompletedPool 만들기
- 액터의 TailChoppingPool 만들기
- 액터의 ConsistentHashingPool 만들기
- 액터의 RandomPool 만들기
- 라우터에 특별하게 처리되는 메시지를 송신하기
- 동적으로 크기가 재조정되는 액터의 풀 만들기
- 4장. 퓨처와 에이전트 사용하기
- 소개
- 간단한 작업을 위해 퓨처를 직접 사용하기
- 액터로 퓨처 사용하기
- 액터 내에서 퓨처 사용하기
- 퓨처에 for comprehension 사용하기
- 퓨처에서 콜백 다루기
- 퓨처로 간단한 병렬 앱 만들기
- 퓨처의 시퀀스 줄이기
- 에이전트 읽고 업데이트하기
- 에이전트를 모나드처럼 구성하기
- 5장. 액터 스케줄링과 그 밖의 유틸리티
- 소개
- 특정 간격으로 작업 스케줄링하기
- 특정 간격으로 액터의 작업 스케줄링하기
- 액터에서 스케줄링된 작업 취소하기
- 장애 확산을 막는 서킷 브레이커 만들기
- 액터에 로깅 도입하기
- 액터 유닛테스트 작성하기
- 아카 독립 앱 패키징 및 배포
- 도커 컨테이너 내 아카 앱 패키징 및 배포
- 아카 앱 설정하기
- 6장. 아카 지속성
- 소개
- 지속성을 위한 액터 준비
- 액터의 상태 복구하기
- 스냅샷을 사용한 복구시간 단축
- 지속성 FSM 모델 만들기
- LevelDB로 상태 지속시키기
- 카산드라로 상태 지속시키기
- 레디스로 상태 지속시키기
- 이벤트소싱 이해하기
- 이벤트소싱에서 장애 다루기
- 지속성 쿼리 사용하기
- LevelDB를 위한 지속성 쿼리
- 7장. 원격화 및 아카 클러스터링
- 소개
- 아카 앱 원격화하기
- 다른 머신에서 원격 액터 만들기
- 서로 다른 머신에서 원격 액터 찾기
- 원격 액터를 다른 노드에 프로그램적으로 배포하기
- 원격 액터를 사용해 앱 확장하기
- 원격화 액터를 사용해 채팅 기반 앱 만들기
- 프로젝트에 아카 클러스터링 가능하게 하기
- 클러스터에서 분산된 게시-구독 사용하기
- 클러스터 샤딩
- 아카 클러스터 내 노드 사이에서 데이터 공유하기
- 클러스터에 걸쳐 싱글턴 액터 만들기
- 8장. 아카 스트림
- 소개
- 간단한 아카 스트림 만들기
- 스트림 변환 및 소비
- 스트림 소스, 플로우, 싱크 만들기
- 사용자 정의 스트림 처리
- 아카 스트림에서의 오류 처리
- 스트림 파이프라이닝 및 병렬화
- 스트리밍 I/O로 작업하기
- 아카 액터에 스트림 통합하기
- 그래프로 작업하기
- 아카 스트림으로 RabbitMQ 메시지 처리하기
- 리액티브 카프카를 사용해 아카 스트림과 카프카 통합하기
- 9장. 아카 HTTP
- 소개
- 아카 HTTP로 최소한의 HTTP 서버 만들기
- 클라이언트 측 API로 아카 HTTP 서비스 소비하기
- HTTP 서버를 위한 라우팅 DSL 작성하기
- 아카 HTTP 설정 이해
- 데이터 마샬링, 언마샬링
- 데이터 인코딩, 디코딩
- 디렉티브 이해하기
- 예외 처리
- 아카 HTTP로 파일 업로드
- 아카 HTTP로 JSON 지원 구축
- 아카 HTTP로 XML 지원
- 10장. 다양한 아카 패턴 이해
- 소개
- 순서 있는 액터 종료
- 아카 셧다운 패턴
- 액터에 주기적인 메시지 스케줄링하기
- 액터에 메시지를 보내는 동안 쓰로틀링하기
- 액터 사이의 작업 부하 균형 이루기
- 집계자 패턴
- 카운트다운랫치 패턴
- 유한 상태 머신
- 정지 가능한 액터 패턴
- 봉투로 액터 감싸기
- 11장. 라곰으로 마이크로서비스하기
- 소개
- 라곰 설치 및 프로젝트 만들기
- 서비스 로케이터 이해하기
- 서비스 디스크립터 이해하기
- 라곰 서비스 구현하기
- 지속성있고 클러스터링된 서비스 작성하기
- 운영 환경에서 라곰 실행하기
- 아카와 통합하기