본문 바로가기
Message Broker/Message Queue

Message Queue

by oncerun 2021. 4. 16.
반응형

 

 

MQ(Message Queue)는 다음과 같은 의미가 있다.

 

첫 번째는 IPC의 도구로써 사용된다. 여기서 IPC(Inter Proccess Communication)는 협력 프로세스들 사이에 서서로 데이터를 주고받는 행위 또는 그에 대한 방법이나 경로를 말한다.

 

프로세스에는 다른 프로세스에게 영향을 주거나 받지않는 독립적인 프로세스가 존재하고,  영향을 주고받는 협력적인 프로세스로 나눌 수 있다.

 

왜 IPC를 사용할까?

 

- 정보 공유 : 프로세스간의 데이터를 사용해 협력을 해야 하는 상황에서 자원 공유가 가능하다.

- 성능향상 : 하나의 작업을 세부적으로 분리해서 각 프로세스들이 분리된 작업을 처리하게 되면 작업의 속도가 향상된다.

- 모듈화 : 여러 프로세스나 여러 스레드 단위로 나누어서 모듈화 개발이 가능하다.

 

 

IPC는 기본적으로 2가지 모델을 사용한다.

 

Message passing(메시지교환), Shared memory(데이터 공유)

 

Message Passing 

 운영체제는 각 프로세스들이 다른 프로세스의 메모리 영역을 침범하지 않게 하는 memory protection을 규정하고 있다. 그렇기 때문에 협력을 위해 상대방의 프로세스의 메모리에 접근할 수 없기에 커널을 이용해 대리 전달을 하도록 하는 방식입니다.  그렇기 때문에 안전하고 동기화 문제가 존재하지 않습니다. 하지만 성능은 떨어질 수밖에 없습니다.

 

두 가지의 방식인 direct와 indirect가 존재하는데 direct방식은 커널이 메시지를 직접 전달해주는 것을 의미하고,

indirect 방식은 메시지 박스에 데이터를 넣어 놓고 커널에게 알리고 사용하는 프로세스가 해당 메시지 박스에 접근해 데이터를 가져가는방식입니다.

 

Shared Memory

 두 프로세스 간, 공유된 메모리를 생성 후 사용합니다. 성능적으로는 좋지만, 동기화 문제가 발생하기 때문에 Application에서 직접 동기화를 수행해주어야 합니다.

 

이 시스템 계층의 IPS를 정의하지만 사실 네트워크를 통해 서로 다른 프로세스가 협력을 하기 위해 메시 지큐를 사용한다면 이것 또한 IPS라고 할 수 있습니다.

 

 

두 번째는 분산 메시지 시스템, 모니터링, 로그, 이벤트 메시지 등을 다룰 때 사용되기도 합니다.

큐는 여러 컴포넌트들이 데이터에 대한 작업을 할 때 버퍼 역할을 수행합니다.

 

큐를 사용할 때 장점들은 다음과 같습니다.

 

 - 기능별로 모듈을 분리하여 구성할 수 있습니다. 이 말은 유연하게 확장할 수 있다는 것을 의미합니다.

 - 데이터를 메모리가 아닌 디스크에 저장함으로써 데이터의 유실을 방지할 수 있습니다.

 - 네트워크의 지연시간을 희생하여 서비스 규모에 독립적으로 이용할 수 있는 고가용성을 보장할 수 있습니다.

 - 연결된 모듈의 장애 시 전체 시스템에 영향을 끼지 않으며, 해당 모듈이 복구되면 작업을 이어서 수행할 수 있습니다.

 

하지만 이러한 큐를 구성하기 위해서는 추가적인 자원이 투자되어야 하고, 큐를 거친다는 점에서 어쩔 수 없는 오버헤드가 발생합니다.

 

 

그럼 메시지 큐의 사용을 언제 고려하는 것이 좋은가?

 

1. 다수의 애플리케이션이 어떤 데이터 저장소를 공유할 필요성이 있을 때 -> 데이터의 무결성 보장 및 공유

2. 데이터가 생성되는 양에 비해 소모량의 차이가 극심할 때 -> 분산을 위해 작업 속도 향상

3. 자원 대비 처리할 데이터양이 많을 때 -> 분산을 통해 자원에 비해 처리속도가 향상될 수 있다

4. 같은 IDC 안에서 HTTP protocol의 오버헤드가 큐를 사용할 때보다 Network latency가 더 클 때

 

 

이러한 서비스를 제공하는 것은 다음과 같은 종류가 있다.

Apache Kafka, RabbitMQ , ZeroMQ, Amazon SQS, Luxun

 

 

잘못된 정보는 지적 부탁드립니다.

 

 

 

반응형

댓글