Top

RabbitMQ 따라잡기 [AMQP 기반의 오픈소스 메시지 브로커]

  • 원서명RabbitMQ Essentials (ISBN 9781783983209)
  • 지은이데이비드 도소트(David Dossot)
  • 옮긴이장준호
  • ISBN : 9788960776937
  • 24,000원
  • 2015년 03월 31일 펴냄
  • 페이퍼백 | 244쪽 | 188*235mm
  • 시리즈 : acorn+PACKT, 오픈소스 프로그래밍

책 소개

요약

RabbitMQ는 오픈소스 메시지 브로커로, 서로 다른 시스템 간에 메시지를 효율적으로 교환할 수 있는 기능을 제공한다. RabbitMQ가 제공하는 풍부한 기능 덕분에 누구나 쉽게 사용 가능하며, 고가용성 및 확장성을 지닌 시스템을 손쉽게 구축할 수 있다. 이 책은 가상의 기업을 소개하고 실생활에서 다뤄지는 문제를 해결하기 위해 도입되어야 할 메시징 시스템을 제시한다. 아울러 실제 사용 가능한 소스 코드와 이를 보완해나가는 각 장의 구성은 메시징 시스템의 근본 개념과 RabbitMQ의 사용법을 충분히 익히도록 돕는다. 실제 운영 환경에서의 모니터링, 클러스터링 등을 학습함으로써 초심자에게 훌륭한 지침서가 될 수 있으리라 믿는다.

추천의 글

RabbitMQ의 가장 흥미로운 점은 사람들이 늘 새로운 기능을 모색하고 더 나은 방법을 추구한다는 점이다. 전문 개발자라면 누구나 숙지해야 하는 메시징 기술은 이제 데이터베이스와 웹 애플리케이션과 나란히 할 만큼 많은 발전을 이뤘다.

RabbitMQ는 2006년에 만들어졌다. 그 무렵 대개 수많은 IT 시스템을 보유한 기업은 각 시스템을 어떻게 해서든 연결하고자 메시징을 사용하고 있었다. ‘발행-구독(pubsub)’이나 ‘큐(queue)’ 같은 전문 용어는 순전히 메시징을 다루는 괴짜나 높은 연봉을 받는 통합 컨설턴트에게만 해당되었다. 하지만 알다시피 세상은 이전과 다르게 놀랍도록 발전했고, 우리는 그 이유를 조금이나마 깨닫게 되었다.

오늘날의 소프트웨어와 웹 애플리케이션 규모는 발 빠르게 증가하고 있다. 아울러 각 사용자, 애플리케이션, 장치, 장소를 연결하는 방법은 여러 확장 가능한 애플리케이션을 개발해야 하는 필요성을 대두시켰다. 동시에 새로운 애플리케이션은 사용된 언어나 API와 무관하게 기존 시스템과 서비스를 통합해야 한다. 이런 종류의 환경에서 확장성을 제공하는 유일한 방법은 메시징을 사용하는 것이고, 최선의 방법은 RabbitMQ 같은 제품을 이용하는 것이다. 정말 강력하고 신뢰할 만한, 더불어 사용하기 쉬운 메시징 도구가 없었기에 RabbitMQ 프로젝트를 시작했다. 직접 만들기로 결정한 것이다. 여러분도 RabbitMQ가 마음에 들기를 바란다.

RabbitMQ가 실제로 더 나은 애플리케이션을 구축할 수 있도록 여러 도구를 설계하고 있는 점도 흥미롭다. 도구는 사용하기에 따라 여러분의 시스템과 함께 성장할 수 있다. 도구의 간편성과 강력한 기능 사이의 균형 조절은 쉽지 않지만, 우리가 생각하기에 RabbitMQ는 적절히 균형을 이룬다. 개발자는 대개 복잡하고 터무니없는 문제에 어느 정도의 내성을 가지고 있기 때문이다. 하지만 믿기지 않을 만큼 모든 것이 완벽해 보이는 도구는 주의하자! 분명 이처럼 의심스러운 도구는 장애를 발생시키기 때문이다. 정말 단순한 시스템은 필요할 때 그 능력을 발휘한다. RabbitMQ는 절대로 기능을 거짓으로 소개하거나 숨기려 하지 않는다. 우리는 이것이야말로 훌륭한 도구의 필수 조건이라 믿는다.

이 책에서는 메시징을 사용해 탄탄하고 확장 가능한 애플리케이션을 설계할 수 있는 방법, 그리고 이에 따라 RabbitMQ가 제공하는 기능을 보여준다. 독자 여러분 모두가 메시징의 기초 개념을 갈고 닦을 수 있을 것이다. 자, 이제 책장을 넘겨 RabbitMQ와의 여행을 시작하자!

- 알렉시스 리처드슨(Alexis Richardson) / 래빗 테크놀로지스(Rabbit Technologies)의 전 CEO

이 책에서 다루는 내용

■ 메시징 애플리케이션 구축과 RabbitMQ의 개념
■ 애플리케이션 개발을 향상시키기 위한 RabbitMQ 구현 방법
■ 메시지 발행, 메시지 수신, 메시지 거절
■ 다이렉트, 토픽, 팬아웃, 헤더 익스체인지를 사용한 메시지 라우팅
■ 자바와 루비를 사용한 애플리케이션 수신함과 방송 설비 시스템 구축
■ 파이썬 클라이언트를 사용한 애플리케이션 트래픽 분석
■ 스마트한 메시지 라우팅, 클러스터링, 페더레이션을 사용한 위급 상황 대처
■ 메시지를 추적하는 방법을 습득하기 위한 애플리케이션 상태 모니터링

이 책의 대상 독자

전문적으로 엔터프라이즈 메시징 제품을 개발하고 있거나 이미 오픈소스 메시징 소프트웨어에 친숙한 독자라면 새로운 도전에 목말라 있을 것이다. 여러분은 이 책을 통해 갈증을 해소할 수 있다. 책의 예제를 최대한 활용하기 위해서는 자바, 루비, 파이썬을 어느 정도 숙지해야 한다. 하지만 다른 RabbitMQ 서적에서는 찾아볼 수 없는 풍부한 가이드를 제공하므로 독자 모두가 부담 없이 시작할 수 있다.

이 책의 구성

1장 ‘메시징, 도약의 첫걸음’에서는 메시징 시스템의 개념과 이점을 소개한다. AMQP와 RabbitMQ를 소개하고 RabbitMQ를 설치하고 구성하는 방법을 학습한 후 애플리케이션 개발을 시작할 준비를 갖춘다.

2장 ‘애플리케이션 수신함 만들기’는 RabbitMQ에서 간단한 메시지 수신함을 만드는 방법을 설명한다. 아울러 RabbitMQ에 연결하는 방법과 다이렉트 익스체인지(direct exchange)와 토픽 익스체인지(topic exchange)를 발행하고, 큐에서 메시지를 가져오는 방법을 학습한다.

3장 ‘서버 푸시로 전환’에서는 메시지를 소비하고 최종 사용자에게 메시지를 라우팅하는 효율적인 방법을 설명한다. 팬아웃 익스체인지(fanout exchange)를 소개하고, 단 한 건의 메시지만 발행해서 수많은 큐에 메시지를 전송할 수 있는 방법을 학습한다.

4장 ‘애플리케이션 로그 처리’는 이전 장에서 배운 개념을 토대로 애플리케이션 사용 데이터를 수집하는 방법을 설명한다. 아울러 서비스 품질에 대해 알아보고 성능을 향상시킬 수 있는 방법과 RabbitMQ 애플리케이션 부하 테스트를 수행하는 방법을 학습한다.

5장 ‘메시지 전달 처리’에서는 RabbitMQ의 확장 기능을 사용하여 전달되지 않은 메시지를 만료하고 이를 처리하는 방법을 살펴본다. 아울러 성공적으로 메시지를 전달하는 데 사용하는 일반적인 방법을 학습한다.

6장 ‘스마트 메시지 라우팅’은 헤더 익스체인지(header exchange)가 메시지 속성을 기반으로 라우팅을 수행하는 방법을 살펴본다. 아울러 요청-응답 상호 작용 방식이 어떻게 RabbitMQ와 잘 이뤄질 수 있는지 학습한다.

7장 ‘운영 환경에 RabbitMQ 설정’에서는 RabbitMQ 브로커가 장애 상황에 대비한 다양한 전략을 소개하고, 클러스터링(clustering)과 페더레이션(federation)을 학습한다. 아울러 운영 환경을 순조롭게 다룰 수 있도록 RabbitMQ 모니터링 방법을 설명한다.

8장 ‘애플리케이션 테스팅과 추적’에서는 분산 시스템 내에서의 도전 과제와 어떤 완화(mitigation) 전략이 도움이 되는지 설명한다.

부록 ‘메시지 스키마’에서는 다양한 예제에서 다룬 메시지를 JSON 형태로 명시하여 모든 스키마를 기술한다.

저자/역자 소개

저자 서문

RabbitMQ는 AMQP 프로토콜을 구현한 오픈소스 메시징 브로커로, 지난 몇 년간 나날이 인기가 치솟고 있다. 초기에는 일부 혁신적인 기업만 사용했으나 현재는 여러 기업에서 RabbitMQ의 특징과 소프트웨어 공학에서 메시징을 사용하는 긍정적인 측면을 모색 중이다. 실제로 클라우드 컴퓨팅의 출현으로 시스템 규모를 유연하게 조정할 필요성이 대두된 것이다. 따라서 느슨하게 결합된 시스템에서 RabbitMQ 같은 브로커를 통해 메시지를 전달하는 방법은 이러한 필요성을 충족시킬 수 있다.

이 책에서는 클레버 코니 미디어(Clever Corney Media, 이하 CCM)라는 가상의 회사가 실세계 문제를 다루는 여정으로 독자 여러분을 안내할 것이다. 우선 CCM이 서로 다른 시스템에 걸쳐 메시징 시스템을 적용하고 발전시키는 방법을 살펴본다. 여러분은 단방향 비동기 메시지 전달 방식부터 요청-응답 방식까지 RabbitMQ가 할 수 있는 메시지 시스템을 광범위하게 발견하게 될 것이다.

아울러 AMQP 프로토콜의 핵심 원리 및 우수 사례와 함께 RabbitMQ에서 자체적으로 추가한 기능들이 적시적지(適時適地)에 사용되는 것을 다룬다. 또한 본문 전반에 걸쳐 여러 프로그래밍 언어로 작성된 예제는 AMQP의 메시징 처리 방법을 보여준다.

독자 여러분은 이 책을 통해 RabbitMQ와 AMQP의 폭넓은 이해와 더불어 자신만의 프로젝트를 시작할 때 적시적지에 필요한 것들을 얻게 될 것이다. 아울러 실제 프로젝트에서 사용되는 수준의 자세한 예제 코드는 분문에서 눈에 띄게 배열해 놓았다.

저자 소개

데이비드 도소트(David Dossot)

소프트웨어 엔지니어와 아키텍트로 18년 이상을 종사했다. 2009년 이후로 다양한 개발 환경에서 RabbitMQ를 사용해오고 있으며, Mule AMQP 트랜스포트의 주요 기여자(main contributor)다. 주요 관심사는 JVM과 얼랭(Erlang) VM을 위한 분산 및 확장 가능한 서버 사이드 애플리케이션을 구축하는 것이다. IEEE 컴퓨터 학회와 AOPA 회원이며, ESSTIN의 산업 시스템 공학 학위를 보유하고 있다.

매닝(Manning) 출판사의 『Mule in Action』 1판 및 2판의 공동 저자이며, Mule 챔피언이자 DZone의 최우수 블로거다. 여러 오픈소스 프로젝트에 참여하고 있으며 스택 오버플로우(Stack Overflow) 사이트에서 사람들을 돕는 일을 즐긴다. 또한 졸트 어워드(Jolt Awards) 심사위원으로 활동하기도 한다.

옮긴이의 말

인류의 탄생과 더불어 몸짓언어는 비약적인 발전을 거듭했고, 최첨단 기술이 도래한 21세기를 살아가는 우리는 현재 메시징 시대에 살고 있다고 해도 과언이 아니다. 인터넷이 보급되고 활성화되면서 지구 반대편에 있는 친구와도 실시간으로 대화할 수 있는 시대임은 이미 거론할 필요조차 없거니와 더불어 상호 정보교환 또한 질적, 물적으로 급격히 향상되어 왔다.

RabbitMQ는 이처럼 서로 다른 시스템 간에 메시지를 효율적으로 교환할 수 있으며, 메시지 표준 프로토콜인 AMQP를 기반으로 만들어져 풍부한 기능을 제공한다. 채팅 시스템을 비롯해 로그 수집 및 분석, 비동기 처리 시스템, 그리고 분산 시스템 환경에서의 시스템 통합까지 RabbitMQ의 활용 범위는 무궁무진하다. 비단 각 시스템뿐만 아니라 애플리케이션 스레드 혹은 프로세스 간 데이터 통신을 위해서도 메시지 큐는 필수적이다. RabbitMQ가 제공하는 기능을 제대로 알고 있다면 적시적지(適時適地)에 사용할 수 있을 것이다. 이 책을 통해 독자 여러분이 필요한 기능을 섭렵하길 기원한다.

나는 메시징 시스템이라는 용어를 처음 접했을 당시, 기본 개념조차 없었음에도 아이러니하게 친숙함을 느꼈다. 그럴 수밖에 없었던 것이 사실 메시지 큐는 갑자기 출현한 최신 기술이 아니기 때문이다. RabbitMQ는 메시지 큐를 활용하는 브로커로, 서로 간에 메시지를 교환할 수 있는 여러 방법을 가지고 있다. 메시지를 교환한다는 말은, 서로 간에 의사소통을 한다는 의미이기도 하다. 누군가와 의사소통하는 것은 쉽지만은 않은 일이며 서로의 생각을 곧이곧대로 전하기 위해서는 여러 의사소통 방법이 필요하다. 유창하게 말을 잘한다고 해서 의사소통 능력이 뛰어나다고 할 수 없듯이 남의 말을 귀담아 듣는 경청도 중요하며, 상대방의 문화에 대한 이해도 필요하다. 이처럼 메시징 시스템을 이해하기 위해서는 단순히 기능 중심이 아닌 이면에 숨겨진 근본 개념 또한 중요하리라 생각한다. 독자 여러분 역시 이 책을 통해 메시징의 근본 개념을 습득하길 바란다. 자, 이제 책을 펼쳐 저자가 안내하는 RabbitMQ의 세계로 껑충 뛰어들어가 보자!

옮긴이 소개

장준호

배우고 학습하기를 즐겨하는 꼬꼬마 개발자다. 장인 개발자로 한 걸음 더 도약하기 위해 늘 노력하고 있다. 현재는 삼성전자에서 서버 개발 업무를 하고 있다.

목차

목차
  • 1장. 메시징, 도약의 첫걸음
  • 메시징이란?
  • __느슨하게 결합된 시스템 구성
  • __AMQP란?
  • RabbitMQ 브로커
  • __RabbitMQ 사용 사례
  • RabbitMQ 준비
  • __브로커 설치
  • __관리 플러그인 설치
  • __계정 설정
  • 요약

  • 2장. 애플리케이션 수신함 만들기
  • RabbitMQ에 연결
  • __채널과 작업
  • __수신함 구축
  • ____사용자에게 메시지 보내기
  • ____AMQP 메시지 구조
  • ____사용자 메시지 가져오기
  • __실행화면 살펴보기
  • 토픽 메시지 추가
  • 요약

  • 3장. 서버 푸시로 전환
  • 폴링 그 너머로
  • __큐 소비
  • ____소비자 구독 클래스 만들기
  • ____구독 관리
  • __웹소켓 엔드포인트로 연결
  • ____애플리케이션 실행
  • 모든 큐에 메시지 발행
  • __팬아웃 익스체인지 결합
  • __모든 사용자에게 메시지 발행
  • __애플리케이션 구동
  • 요약

  • 4장. 애플리케이션 로그 처리
  • 로그 발행과 소비
  • AMQP 부하 테스트
  • __부하 테스트 수행
  • __메시지 프리페칭
  • 오류 메시지 보내기
  • 요약

  • 5장. 메시지 전달 처리
  • 발송 불가 메시지 처리
  • __큐 리팩토링
  • __메시지 처리
  • 메시지 전달 보장
  • __백오피스 송신자 구현
  • 요약

  • 6장. 스마트 메시지 라우팅
  • 서비스 지향 메시징
  • __큐로 메시지 회신
  • __서비스 요청 라우팅
  • 인증 서비스 구현
  • 인증 서비스 호출
  • 요약

  • 7장. 운영 환경에 RabbitMQ 설정
  • 브로커 단일 장애점 해결
  • __미러링 큐 구성
  • __클러스터에 연결
  • __브로커 페더레이션
  • 브로커 모니터링
  • 요약

  • 8장. 애플리케이션 테스팅과 추적
  • RabbitMQ 애플리케이션 테스트
  • __RabbitMQ 애플리케이션 단위 테스팅
  • __RabbitMQ 애플리케이션 통합 테스팅
  • RabbitMQ 추적
  • __파이어호스 추적기
  • 요약

  • 부록. 메시지 스키마
  • 사용자 메시지
  • 인증 메시지

도서 오류 신고

도서 오류 신고

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

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

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