Top

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장, ‘라곰으로 마이크로서비스하기’에서는 라이트밴드의 마이크로서비스 프레임워크인 라곰을 소개한다. 라곰의 관례 및 라곰으로 마이크로서비스를 생성, 설정, 연결, 실행하는 데 필요한 정보를 살펴본다.

저자/역자 소개

지은이의 말

아카(Akka)는 액터 모델 덕분에 JVM에서 동시성, 확장 가능성, 회복력이 있는 반응형 애플리케이션을 개발할 때 많이 사용되는 툴킷이다. 아카 툴킷은 수년 전부터 사용돼 온 성숙한 기술이다. 시스코, 아마존, 그루폰 같은 많은 기업에서 성공적으로 도입했다.
이 책에서는 아카뿐 아니라 관련 모듈의 동작 방식까지 모두 살펴보고, 가장 일반적인 작업을 쉽게 처리하는 유용한 예제를 제공한다. 또한 아카의 개발을 지원하는 라이트밴드(Lightbend) 사의 최신 마이크로서비스 프레임워크 라곰(Lagom)도 소개한다.

지은이 소개

헥터 베이가 오르티즈(Héctor Veiga Ortiz)

실시간 데이터 통합 전문 소프트웨어 엔지니어다. 최근에는 주로 AWS 같은 다양한 클라우드 기술을 기반으로, 다양한 프로토콜과 형식에서 고용량 실시간 데이터를 다룰 수 있는 확장성, 복원력이 뛰어난 고성능 애플리케이션을 개발하는 데 주력해왔다. 이런 작업은 아카와 같은 메시징 시스템에 초점을 맞춰 해냈다. 또한 라이트밴드의 라곰 같은 프레임워크에서 마이크로서비스 아키텍처를 작업했다. 뿐만 아니라, 래빗MQRabbitMQ나 AMQP와 같은 메시지 브로커에 탄탄한 기초 지식을 갖추고 있다. 마드리드공과대학교에서 통신공학 석사를, 일리노이공과대학교에서 정보기술관리 석사 학위를 취득했다.
현재 히어 테크놀로지스(HERE Technologies)의 글로벌 트래픽 데이터 통합 팀에서 일하며, 각각의 서로 다른 출처로부터 데이터를 소비하는 확장 가능한 애플리케이션을 적극적으로 개발하고 있다. 아카를 활용한 확장성 및 처리 요구 사항을 다룬다. M2M 기술에 특화된 회사 젭톰 테크놀로지스(Xaptum Technologies)에서도 근무했다. 또한, 아카 프로젝트에 수차례 기여했으며, 스택오버플로우의 아카 태그에서 활발하게 활동 중이다. 팩트출판사에서 펴낸 『RabbitMQ Cookbook』(2013)과, 『RabbitMQ Essentials』(2014)의 기술 감수자다.

피유시 미시라(Piyush Mishra)

스칼라, 아카, 스파크를 사용해 장애 허용적이며(fault-tolerant) 확장 가능한 고성능 시스템을 개발하고 디자인하며 복수의 서버에서 이를 유지하는 데 4년 이상의 경력을 가진 전문가다.
블로그 (https://piyushmishra889.wordpress.com)에 스칼라에 관한 글을 쓴다. https://in.linkedin.com/in/piyush1989에서 링크드인을 찾을 수 있다. 또한 슬라이드셰어(Slideshare)의 http://www.slideshare.net/knoldus/reactive-programming-with-scala-and-akka에 반응형 프로그래밍 및 애플리케이션과 이것의 필요성을 다룬 내용이 있다. 스칼라, 아카, 반응형 애플리케이션, 그리고 이에 대한 네 가지 원칙도 이야기한다.

옮긴이의 말

스칼라 기반의 웹 애플리케이션을 개발하면서 핵심 로직을 동시적으로 병렬화해야 했다. 프로그램 구조가 더 이상 복잡해지지 않게 제한하면서 코드를 직관적으로 구현할 수 있는 도구가 필요했다. 스칼라와 아카의 조합은 이에 부합하는 환상적인 개발 환경이다. 아카의 성능을 긍정적으로 평가하는 많은 의견을 많이 접한 터라 망설임 없이 선택했다.
하지만 스칼라도 익숙하지 않았기 때문에 아카에 입문하기 적당한 책을 찾고 있었다. 아카를 다루는 한글 서적은 거의 없었는데, 사실 지금도 그렇다. 마침 에이콘출판사에서 『Akka Cookbook』의 번역을 제안한 덕분에, 아카에 더 쉽게 입문하는 데 도움이 되는 책이 나올 수 있었다.
아카를 활용하면 액터 모델을 기반으로 하는 동시적이고 확장 가능한 반응형 애플리케이션을 개발할 수 있다. 액터 모델은 메시지 기반으로, 부모 액터가 자식 액터에게 작업을 분산시키고, 결과를 동시적으로 받아 클라이언트에게 넘겨주는 일련의 체계로 간단히 설명할 수 있다. 이런 용어들은 구체적으로 무엇을 뜻할까? 또한 아카는 어떻게 액터 모델을 구현할까? 여러분은 이 책을 읽고 아카를 쉽게 학습할 수 있을 것이다.
이 책은 아카를 처음 접하는 사람들을 위해 SBT 설치부터 가급적 쉽게 동시적 프로그래밍 모델을 접할 수 있게 풀어낸다. 가벼운 마음으로 따라 하며 아카에 익숙해지기를 추천한다. 자바에서 아카를 사용한다면 예제에서 배운 내용을 바탕으로 도입 과정을 더 매끄럽게 진행할 수 있을 것이다. 또한 아카 지속성, 스트림, 클러스터링, HTTP 등 아카의 고급 기능을 활용할 때도 이 책의 도움을 받을 수 있다.

옮긴이 소개

이판호

대학에서 통계학을 전공한 후 금융 관련 일을 하다가 뒤늦게 프로그래밍 세계에 입문했다. 데이터 분석을 기반으로 하는 금융 투자와 프로그램 개발에 관심이 많다. 현재는 ETF 포트폴리오 분석을 위한 웹 서비스를 개발하며 기술 서적을 번역하고 있다. 에이콘출판사에서 펴낸 『R 병렬 프로그래밍』(2017), 『파이썬으로 배우는 데이터 과학 2/e』(2017) 등을 번역했다.

목차

목차
  • 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장. 라곰으로 마이크로서비스하기
    • 소개
    • 라곰 설치 및 프로젝트 만들기
    • 서비스 로케이터 이해하기
    • 서비스 디스크립터 이해하기
    • 라곰 서비스 구현하기
    • 지속성있고 클러스터링된 서비스 작성하기
    • 운영 환경에서 라곰 실행하기
    • 아카와 통합하기

도서 오류 신고

도서 오류 신고

에이콘출판사에 관심을 가져 주셔서 고맙습니다. 도서의 오탈자 정보를 알려주시면 다음 개정판 인쇄 시 반영하겠습니다.

오탈자 정보는 다음과 같이 입력해 주시면 됩니다.

(예시) p.100 아래에서 3행 : '몇일'동안 -> 며칠동안