RebbitMQ

Do_It·2023년 10월 31일

"RebbitMQ"는 오픈 소스 메세지 브로커 소프트웨어
RabbitMQ는 다양한 프로그래밍 언어로 작성된 애플리케이션 간에 데이터나 메세지를 효율적으로 전송하고 통신할 수 있도록 설계 되었음

RabbitMQ를 사용하면 분산 시스템 마이크로서비스 아키텍처에서 메세지 큐를 통해 이벤트 드리븐 아키텍처를 구축할 수 있음

Q. 분산 시스템이란?

분산 시스템은 여러대의 컴퓨터 또는 서버가 네트워크를 통해 연결되어 작동하고, 이 컴퓨터들이 함께 작업하거나 리소스를 공유하는 시스템을 의미

  • 분산환경: 시스템은 물리적으로 분산된 여러 위치에 있는 컴퓨터나 서버로 구성
  • 통신 : 컴퓨터들은 네트워크를 통해 통신하며, 이를 통해 데이터와 리소스를 공유
  • 신뢰성 : 분산 시스템은 장애 내구성과 오류 복구를 고려한 신뢰성을 제공해야 함

Q. 마이크로서비스 아키텍쳐란?

마이크로서비스 아키텍처는 소프트웨어 시스템을 작은 독립적인 서비스로 나누는 아키텍쳐 패턴입니다. 각 서비스는 특정 기능 또는 비즈니스 도메인을 처리하며, 서비스 간에는 네트워크를 통해 통신합니다.

  • 독립성 : 각 마이크로서비스는 독립적으로 개발,배포,확장,관리됨
  • 네트워크 통신 : 서비스 간 통신은 주로 API호출 또는 메세지 큐를 사용하여 이러우짐
  • 유연성 : 새로운 기능 추가나 변경 시 해당 서비스만 수정하면 됨
  • 데이터베이스 분리 : 각 서비스는 독립된 데이터베이스를 가질 수 있으며, 데이터 관리가 중요한 부분임

예시 ) 온라인 소매 업체의 주문 서비스 , 고객 관리 서비스 , 결제 서비스, 배송 서비스 , 인증 서비스 등이 마이크로서비스 아키텍쳐를 적용한 예시임

Q. 메세지 큐란?

메세지 큐는 소프트웨어 응용 프로그램 간에 비동기적으로 데이터 또는 메세지를 교환하도록 설계된 중간 소프트웨어 레이어 또는 서비스. 메세지 큐 시스템은 데이터를 생성한 애플리케이션에서 데이터를 처리할 애플리케이션으로 안전하게 전달하고 이를 효율적으로 관리.

  • 비동기 통신 : 메세지 큐를 사용하면 애플리케이션 간 데이터 전달이 비동적으로 이루어짐. 메세지를 생성하면 해당 메세지는 대상 애플리케이션이 준비되어 있을 때까지 대기하거나 메세지 큐에서 처리 대기열에 저장됨.
  • 확장성 : 메세지 큐 시스템은 대용량 데이터 처리를 지원하며, 필요에 따라 수평 확장이 가능. 새로운 프로듀서 또는 컨슈머를 추가하여 시스템을 확장할 수 있음
  • 안정성 : 메세지 큐는 메세지의 손실을 방지하기 위한 내구성을 제공. 메세지는 안전하게 보관되며, 프로듀서가 메세지를 전송한 후에도 메세지는 유지
  • 중계 역할 : 메세제 큐는 다양한 애플리케이션 간의 통신을 중계하는 역할을 함. 이를 통해 서로 다른 시스템이나 언어로 작성된 애플리케이션들도 효과적으로 통신할 수 있음
  • 비동기 처리 : 메세지 큐를 사용하면 백그라운드에서 비동기 작업을 처리하는 데 유용하며, 작업 처리 시간이 긴 작업을 분산 및 병렬 처리할 수 있음
  • 이벤트 기반 아키텍쳐 : 메세지 큐는 이벤트 기반 아키텍쳐를 구현하는데 사용 됨. 이벤트가 발생하면 해당 이벤트로 메세지로 큐에 보내고, 이벤트 핸들러가 해당 메세지를 처리함
  • 메세지 큐 시스템 종류 : RabbitMQ, Apache Kafka, Apache ActiveMQ, Amazon SQS, Redis 등이 존재.

Q. 이벤트 드리븐 아키텍쳐란?
이벤트 드리븐 아키텍는 소프트웨어 시스템을 구성하는 기본 아키텍쳐 패러다임 중 하나로, 시스템의 구성 요소가 이벤트를 생성하고 수신하는 방식으로 동작.
이벤트란 시스템 내에서 중요한 변화나 사건을 나타내며, 이벤트 드리븐 아키텍처에서는 이러한 이벤트들을 중심으로 시스템이 구성됨

  • 비동기 통신 : 시스템 구성요소 간의 통신은 비동기적으로 이루어짐. 이벤트르 생성하고 발행한 후 , 이를 수신하거나 구독하는 방식으로 정보 교환이 이루어짐
  • 확장성 : 이벤트 드리븐 시스템은 각 구성 요소가 독립적으로 확장 가능, 시스템의 부하에 따라 필요한만큼의 인스턴스를 추가로 배포 가능
  • 락 인 해제 : 구성 요소 간의 결합도가 낮아져 락 인 문제를 줄여 줌.

예시) 온라인 주문 및 결제 시스템 시나리오
1. 주문 생성 이벤트 발생
2. 주문 생성 이벤트를 수신하는 서비스인 주문 처리 서비스는 주문 정보를 데이터베이스에 저장하거나 다른 시스템에 전달할 수 있음
3. 주문 생성 이벤트르 수신하는 다른 서비스인 결제 서비스. 결제 완료가 되면 결제 완료 이벤트르 생성하여 주문 서비스에 알림
4. 결제 완료 이벤트를 수신하면 주문을 배송 처리. 이 과정도 이벤트로 기록됨
5. 주문 상태가 변경되면 고객에게 알림을 보내는 서비스도 이벤트를 활용하여 동작

Q. 락 인 문제란?
특정 기술,플랫폼,또는 공급 업체에 대한 종속성을 의미하는 용어.
락 인 문제는 선택과 자유를 제한하고, 기술 및 비즈니스 전략의 유연성을 제한할 수 있음

profile
오늘의 노력이 내일의 성장으로 이어지고 있음을

0개의 댓글