개발자 랩실/IT 기술
1. ubuntu20 설치 및 rabbitmq 설치
sina.dev
2022. 1. 28. 09:00
728x90
사용 환경
- ubuntu 20
- virtual box 6
도움 받은 사이트
Rabbitmq설치전 준비 Erlang 설치
Step 1: Import Erlang GPG Key
Run the following commands to import Erlang repository GPG key:
wget -O- https://packages.erlang-solutions.com/ubuntu/erlang_solutions.asc | s
Ubuntu 20.04:
echo "deb https://packages.erlang-solutions.com/ubuntu focal contrib" | sudo tee /etc/apt/sources.list.d/rabbitmq.list
erlang 설치
sudo apt update
sudo apt install erlang
rabbitmq 설치전 repository 설정
Import RabbitMQ:
wget -O- https://dl.bintray.com/rabbitmq/Keys/rabbitmq-release-signing-key.asc | sudo apt-key add -
wget -O- https://www.rabbitmq.com/rabbitmq-release-signing-key.asc | sudo ap
rabbitmq-server 설치
sudo apt update
sudo apt install rabbitmq-server
RabbitMQ 의 특징
- 기본적으로 메시지 큐(Message Queue) 서버이기 때문에 메시지가 누락될 위험이 거의 없다.
- 설령 연결이 끊어졌다 하더라도 다시 연결하는 순간 큐에 저장된 메시지를 구독할 수 있으며, 순서 역시 보장
- 외부 의존성이 없다. 내장된 Mnesia 및 ETS, DETS 모두 강력한 성능과 안정성을 자랑. 별도의 외부 의존성 없이 구동, 운용이 가능한 점은 큰 장점
- 동시성(Concurrency) 성능이 매우 뛰어남. 따라서 비슷하게 동시성 성능이 뛰어나다면 굳이 단일 프로세스로 동작하는 Node.js 나 Python 을 고려해야 할 이유가 사라짐
- 수평적 확장(Horizontal Scale Out) 이 쉬움. 여러 RabbitMQ 서버를 클러스터로 묶을 수 있다.
- 초당 수만건의 메시지는 큰 문제 없이 전송이 가능.
- WebSocket/STOMP 등의 웹 기반 소켓 프로토콜 역시 지원.
- RabbitMQ 는 다양한 언어로 개발 라이브러리를 제공.
서비스 구성
RabbitMQ 가 적용된 서버-클라이언트 간 양방향 통신이 위한 구성은 다음과 같습니다.
- 클라이언트와 서버는 API 서버와 동기화(Synchronous)된 요청과 응답을 주고 받습니다.(항목 1)
- 클라이언트는 RabbitMQ 서버와 AMQP 연결을 맺습니다.(항목 2)
- 서버에서 특정 클라이언트에 메시지를 전달하고자 할 때 RabbitMQ 를 통해 메시지를 발행(Publish) 하면 클라이언트는 해당 메시지를 받습니다.(항목 3 -> 2)
- 클라이언트는 받은 메시지를 해석(Parsing)해서 취해야 할 행동을 합니다.
이 예제 코드는 AMQP 서버에 연결하여 서버의 메시지를 기다리는 것을 구현한 간단한 안드로이드 예제입니다.(iOS 도 크게 다르지 않습니다.) 주의할 점은 앱의 생명주기에 맞춰서 클라이언트의 AMQP 연결도 같이 활성/비활성화 처리가 되어야 하며, 중복 연결을 방지하기 위해 Singleton Pattern 으로 설계하는 것이 좋습니다.