책 소개
요약
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 형태로 명시하여 모든 스키마를 기술한다.
목차
목차
- 1장. 메시징, 도약의 첫걸음
- 메시징이란?
- __느슨하게 결합된 시스템 구성
- __AMQP란?
- RabbitMQ 브로커
- __RabbitMQ 사용 사례
- RabbitMQ 준비
- __브로커 설치
- __관리 플러그인 설치
- __계정 설정
- 요약
- 2장. 애플리케이션 수신함 만들기
- RabbitMQ에 연결
- __채널과 작업
- __수신함 구축
- ____사용자에게 메시지 보내기
- ____AMQP 메시지 구조
- ____사용자 메시지 가져오기
- __실행화면 살펴보기
- 토픽 메시지 추가
- 요약
- 3장. 서버 푸시로 전환
- 폴링 그 너머로
- __큐 소비
- ____소비자 구독 클래스 만들기
- ____구독 관리
- __웹소켓 엔드포인트로 연결
- ____애플리케이션 실행
- 모든 큐에 메시지 발행
- __팬아웃 익스체인지 결합
- __모든 사용자에게 메시지 발행
- __애플리케이션 구동
- 요약
- 4장. 애플리케이션 로그 처리
- 로그 발행과 소비
- AMQP 부하 테스트
- __부하 테스트 수행
- __메시지 프리페칭
- 오류 메시지 보내기
- 요약
- 5장. 메시지 전달 처리
- 발송 불가 메시지 처리
- __큐 리팩토링
- __메시지 처리
- 메시지 전달 보장
- __백오피스 송신자 구현
- 요약
- 6장. 스마트 메시지 라우팅
- 서비스 지향 메시징
- __큐로 메시지 회신
- __서비스 요청 라우팅
- 인증 서비스 구현
- 인증 서비스 호출
- 요약
- 7장. 운영 환경에 RabbitMQ 설정
- 브로커 단일 장애점 해결
- __미러링 큐 구성
- __클러스터에 연결
- __브로커 페더레이션
- 브로커 모니터링
- 요약
- 8장. 애플리케이션 테스팅과 추적
- RabbitMQ 애플리케이션 테스트
- __RabbitMQ 애플리케이션 단위 테스팅
- __RabbitMQ 애플리케이션 통합 테스팅
- RabbitMQ 추적
- __파이어호스 추적기
- 요약
- 부록. 메시지 스키마
- 사용자 메시지
- 인증 메시지