Top

RabbitMQ in Depth [메시지 브로커 RabbitMQ 심층 분석]

  • 원서명RabbitMQ in Depth (ISBN 9781617291005)
  • 지은이개빈 로이(Gavin M. Roy)
  • 옮긴이홍영택
  • ISBN : 9791161751863
  • 28,000원
  • 2018년 07월 31일 펴냄
  • 페이퍼백 | 316쪽 | 188*235mm
  • 시리즈 : 오픈소스 프로그래밍

책 소개

요약

RabbitMQ는 오픈소스 메시지 브로커로, 메시지 기반 애플리케이션을 개발하기 위한 다양한 기능을 제공한다. RabbitMQ의 기본 기능은 누구나 쉽게 사용할 수 있지만, 도입하려는 시스템에 적절하게 적용하려면 내부 동작과 프로토콜과 모델의 특징을 이해해야 한다. 이 책은 실제 운영 환경에서의 모니터링과 클러스터 관리뿐 아니라 AMQP 프로토콜과 저수준의 프레임 구조에 대해서도 자세히 알아본다. 개발자와 운영자가 RabbitMQ에 대해 깊이 이해할 수 있게 해주는 좋은 지침서가 될 것이다.

이 책에 쏟아진 찬사

"초보자와 전문가 모두가 엔터프라이즈 애플리케이션에 RabbitMQ를 성공적으로 적용할 수 있도록 돕는 훌륭한 지침서다."
– 이안 댈러스(Ian Dallas)/휴렛팩커드(HP, Hewlett-Packard)

"RabbitMQ에 대한 가장 포괄적인 책. 코드를 비롯한 모든 것이 여기에 있다!"
– 앤드루 메레디스(Andrew Meredith)/퀀텀 메트릭(Quantum Metric)

"RabbitMQ의 시작부터 마이그레이션 문제 해결까지 포함한 치트 시트다."
– 나디아 누리(Nadia Noori)/바르셀로나 라 살레 대학교(La Salle University Barcelona)

"실용적인 충고와 지혜로 가득 차 있는 책이다."
– 밀로스 밀리보게빅스(Miloš Milivojevic ́)/모차르트 벳(Mozzart Bet)

이 책에서 다루는 내용

■ AMQP
■ MQTT, STOMP, HTTP를 이용한 통신
■ 유용한 문제 해결 기법
■ 데이터베이스 연동

이 책의 대상 독자

메시징 지향 시스템에 대한 기본적인 이해를 갖춘 프로그래머에게 적합하다.

이 책의 구성

1장에서는 RabbitMQ의 기본 내용과 RabbitMQ의 다양한 기능을 소개하고, AMQ(Advanced Messaging Queuing) 모델을 다룬다.
2장에서는 AMQP, 프레임 구조와 RabbitMQ에 메시지를 발행하거나 검색할 때 발생하는 저수준 진행 과정을 알아본다.
3장에서는 메시지 속성에 대해 알아본다. 메시지의 유형이나 인코딩과 같은 중요한 메타 데이터를 메시지에 정의하는 헤더와 애플리케이션에서 헤더를 활용하는 방법을 다룬다.
4장에서는 메시지 발행 성능과 안정성의 절충 관계에 대해 알아본다. 각 수준의 전달 보장은 애플리케이션의 성능을 저하시킬 수 있는데, 이 성능에 영향을 주는 옵션에 대해 살펴본다. 또한 메시지 전달 보장과 빠른 메시지 발행 간의 균형을 유지하는 데 참고할 수 있는 내용을 다룬다.
5장에서는 메시지 소비에 대해 알아본다. Basic.Get과 Basic.Consume의 근본적인 차이점을 살펴보면서 Basic.Consume이 일반적으로 더 좋은 이유를 설명한다. 또 프리페치(prefetch), 서비스 품질 설정(QoS, Quality of Service), 메시지 확인, 데드 레터 익스체인지, 임시 큐, 메시지 만료를 다룬다.
6장에서는 RabbitMQ의 기본 익스체인지 유형 네 가지를 소개하고 각 유형이 애플리케이션 아키텍처에서 어떤 이점을 가지는지 자세히 알아본다.
7장에서는 클러스터 관리, 클러스터 환경에서 장애 상황에 대응하는 방법, 성능을 고려하면서 RabbitMQ를 확장하는 방법 등을 다룬다.
8장에서는 페더레이션 익스체인지와 페더레이션 큐를 이용한 클러스터링의 핵심 개념을 살펴본다. 그리고 RabbitMQ 클러스터를 아마존 웹 서비스(AWS)에 설치한 후, 정책을 적용하는 방법을 소개한다.
9장에서는 RabbitMQ에서 대체 프로토콜인 MQTT와 STOMP를 사용하는 방법을 소개하고 statelessd를 이용한 HTTP 메시지 발행에 대해 알아본다.
10장에서는 PostgreSQL 및 InfluxDB 데이터베이스와 연동하는 방법과 유용한 기능을 구현하는 방법을 살펴본다.

저자/역자 소개

지은이의 말

2012년 5월 매닝출판사(Manning Publications)가 『RabbitMQ in Action』을 출간했을 때, RabbitMQ에 대한 관심이 급증했다. RabbitMQ는 최근 가장 인기 있는 메시지 브로커 중 하나며 다양한 애플리케이션에 사용할 수 있다. RabbitMQ는 분산 애플리케이션 간의 통신이나 서비스 지향 아키텍처에서 마이크로서비스를 구축하고 CQRS에서 논리적 단위로 분리하거나 Event Sourcing 컴포넌트로 사용한다.
이 책은 RabbitMQ를 더 깊이 살펴보면서 AMQP(Advanced Message Queuing Protocol)의 상세 구조와 다양한 익스체인지에 대해 점진적으로 알아보고 여러 측면에서 성능을 테스트한다. 이 책의 목표는 독자들이 RabbitMQ를 실제 애플리케이션에 효과적으로 적용할 수 있을 만큼 깊이 이해하도록 돕는 것이다.

지은이 소개

개빈 로이(Gavin M. Roy)

90년대 중반부터 인터넷과 엔터프라이즈 기술을 연구해온 적극적인 오픈소스 전도사다.

옮긴이의 말

현대의 성공적인 서비스는 사용자에게 아름답고 단순한 UI를 제공하지만, 애플리케이션의 백엔드는 전쟁터를 떠올릴 정도로 복잡하고 쌓여가는 데이터는 방대해지고 있다. 이런 서비스 개발에는 많은 개발자가 참여하고 있으며, 시스템들은 서로 복잡하게 얽혀 있다. 이제 웹 서버와 DB로만 구성한 하나의 모놀리식 시스템만으로 이 서비스를 계속 개발하고 운영하는 것은 상상하기조차 어렵다.
RabbitMQ는 오픈소스 메시지 브로커로, 메시지 지향 아키텍처를 구축하기 위한 다양한 기능을 제공하며 복잡한 백엔드에서 자신의 역할을 톡톡히 해내고 있다. 자신의 시스템에 큐가 필요해 메시지 브로커를 도입하려는 경우라면 각 솔루션의 특징을 이해해야 한다.
이 책은 간단한 네트워크 서비스에서 복잡한 분산 아키텍처 설계까지 실제 시스템을 기반으로 한 예제와 함께 자세하게 설명한다. 따라서 개발자와 운영자가 RabbitMQ에 대해 깊이 이해할 수 있게 해주는 좋은 지침서가 될 것이다.

옮긴이 소개

홍영택

직장인이 아닌 해커가 되고 싶은 개발자다. 네이버와 카카오 등에서 웹오피스, 소셜 네트워크 서비스, 채팅 서비스 등을 개발했다. 현재는 네이버에서 데이터 타입 기반 동기화 플랫폼과 오픈소스 썸머노트를 개발하고 있다.

목차

목차

  • 1부 RabbitMQ와 애플리케이션 아키텍처
  • 1장.RabbitMQ 살펴보기
    • 1.1 RabbitMQ의 기능과 장점
    • 1.2 RabbitMQ를 사용하는 곳들
    • 1.3 느슨하게 결합된 아키텍처의 장점
    • 1.4 요약

  • 2장. AMQP와 RabbitMQ 코드 작성하기
    • 2.1 RPC 전송으로서의 AMQP
    • 2.2 AMQP의 RPC 프레임 구조
    • 2.3 프로토콜 사용하기
    • 2.4 파이썬으로 메시지 발행자 작성하기
    • 2.5 RabbitMQ에서 메시지 받기
    • 2.6 요약

  • 3장. 메시지 속성 심층 탐사
    • 3.1 메시지 속성 적절히 사용하기
    • 3.2 content-type으로 명시적 메시지 계약 작성하기
    • 3.3 gzip, content-encoding으로 메시지 크기 줄이기
    • 3.4 message-id와 correlation-id를 이용한 메시지 참조..
    • 3.5 timestamp 속성
    • 3.6 자동으로 메시지 만료하기
    • 3.7 배달 모드를 이용해 안전성과 속도 조절하기
    • 3.8 app-id 및 user-id를 사용해 메시지의 출처 확인하기
    • 3.9 type 속성을 이용해 메시지 특정하기
    • 3.10 동적인 작업 흐름을 위한 reply-to 속성 사용하기
    • 3.11 headers를 사용해 사용자 속성 지정하기
    • 3.12 priority 속성
    • 3.13 사용할 수 없는 속성: cluster-id/reserved
    • 3.14 요약

  • 4장. 메시지 발행에서 성능 절충
    • 4.1 발행 속도와 배달 보장의 균형 잡기
    • 4.2 RabbitMQ 푸시백
    • 4.3 요약

  • 5장. 메시지를 받지 않고 소비하기
    • 5.1 Basic.Get vs. Basic.Consume.
    • 5.2 소비자 성능 조정
    • 5.3 메시지 거부하기
    • 5.4 큐 제어하기
    • 5.5 요약

  • 6장. 익스체인지 라우팅을 통한 메시지 패턴
    • 6.1 다이렉트 익스체인지를 사용한 간단한 메시지 라우팅
    • 6.2 팬아웃 익스체인지를 사용한 메시지 브로드캐스팅
    • 6.3 토픽 익스체인지로 메시지를 선택적으로 라우팅하기
    • 6.4 헤더 익스체인지를 통한 선택적 라우팅
    • 6.5 익스체인지 성능 벤치마크하기
    • 6.6 익스체인지 간에 라우팅하기

  • 2부. 데이터센터 또는 클라우드에서 RabbitMQ 운영하기
  • 7장. 클러스터를 이용한 RabbitMQ 확장
    • 7.1 클러스터
    • 7.2 클러스터 설정
    • 7.3 요약

  • 8장. 클러스터 간 메시지 발행
    • 8.1 페더레이션 익스체인지와 페더레이션 큐
    • 8.2 RabbitMQ 가상 머신 만들기
    • 8.3 업스트림에 접속하기
    • 8.4 요약

  • 9장. 대체 프로토콜 사용
    • 9.1 MQTT와 RabbitMQ
    • 9.2 STOMP와 RabbitMQ
    • 9.3 HTTP로 상태 없이 메시지 발행하기
    • 9.4 요약

  • 10장. 데이터베이스와 연결하기
    • 10.1 PostgreSQL pg_amqp 확장 모듈
    • 10.2 PostgreSQL 알림 수신하기
    • 10.3 메시지를 InfluxDB에 저장하기..
    • 10.4 요약

도서 오류 신고

도서 오류 신고

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

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

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

정오표

정오표

[p.144 : 표 6행]
x-max-length : 큐에서 지정하는 메시지 만료 시간(밀리초 단위)
->
x-max-length : 큐의 최대 메시지 수

[p.144 : 표 7행]
x-message-ttl : 큐의 최대 메시지 수
->
x-message-ttl : 큐에서 지정하는 메시지 만료 시간(밀리초 단위)