Apache Kafka 구현 (Spring Boot & Docker-Compose)
·
📘 Backend/Message Broker
📚 Kafka이번에 Kafka를 공식문서를 보며 따라 구현해보고 있습니다.사내에서 진행하는 프로젝트들중 대부분은 RabbitMQ를 이용한 초당 데이터가 몇 안되는 작은 데이터 파이프라인을 사용 중 이었습니다.하지만 이번에 새로 개발하는 플랫폼에서는 수백군데의 고객사 데이터를 중앙서버 한곳에서 모든 데이터 스트림을 Consume 해야하는 요구사항이 있었고 RabbitMQ로는 데이터 처리량이 부족할 거 같아,실무 적용까지는 한참 공부해야 겠지만, 무작정 구현해보고자 우선 구현 후 글을 작성합니다.Kafka를 사용하려는 이유1. 귀찮음기존에 각각 다른 서버에 RabbitMQ를 개별적으로 설치하고, Queue 생성, Binding 설정, Exchange 관리 등 반복적인 작업이 많았음.프로젝트마다 새로운 서버..
RabbitMQ - Clustering & Mirroring
·
📘 Backend/Message Broker
📘 요구사항 내가 구현하고 싶은 그림 (그림 잘 못 그림) RabbitMQ의 Clustering & Mirroring을 사용해 구현 같은 네트워크에 있는 5개의 서버(WIndows 4, Linux1)에 각각의 RabbitMQ를 설치 해야 함. WIndows 서버에 있는 4대의 RabbitMQ + 관리서버(Linux) +1로 클러스터링 WIndows 서버의 Rabbit은 각각 다른 Exchange/Queue (Master Queue)를 가진다 Linux 서버의 RabbitMQ는 Windows Rabbit의 각 Queue의 Mirroring인 Slave Queue를 둔다. Linux 서버의 Backend Redis에서 Slave Queue들을 Subscribe하고 데이터를 필요에 따라 변환, Maria DB..
RabbitMQ - Publish/Subscribe On Linux
·
📘 Backend/Message Broker
📘 RabbitMQ 설치 (Linux) 서버 환경 : AWS EC2 t2.micro / Red Hat Enterprise Linux 9.2.0 버전 기반으로 진행합니다. Shell Script를 작성해서 간단하게 환경 세팅을 할 건데 그 전에 AWS 보안 그룹에서 사용할 포트/IP 허용 해줍니다. 실제 상용 서버에서는 IP-Port로 필요한 포트만 할당 하는 게 좋지만 저는 귀찮으므로 보안 그룹에서 제 Local External IP 대역을 /32로 설정해서 Local Network에 모든 TCP 포트를 할당하였습니다. 서버 환경 요구사항 Docker 사용 X 인스턴스 생성 후 접속 Xshell, Putty, Gitbash, Cmd 등 터미널을 열고 인스턴스를 생성할 때 만든 Pem키가 위치한 곳으로 이..
RabbitMQ - Dead Letter Exchange
·
📘 Backend/Message Broker
📘 RabbitMQ Dead Letter Exchange & TTL 설정 RabbitMQ는 기본적으로 메시지가 예상치 못하게 처리될 수 없을 경우 다시 Queue로 보내는 Re-Queuing을 수행합니다. 하지만 계속 동일한 에러로 메세지를 처리할 수 없을 경우, 이 메세지는 계속 Queue에 담기고 에러도 계속 생기는 루프가 될 것입니다. RabbitMQ는 기본적으로 Delayed Message 기능을 지원하지 않으므로 플러그인을 설치하고 RabbitMQ를 재시작 해줍니다. 플러그인 설치, 서비스 재시작은 관리자 권한 CMD를 열어서 RabbitMQ가 설치된 디렉토리의 sbin 폴더 내부에서 진행해야 합니다. # RabbitMQ Delayed Message Exchange 플러그인 설치 rabbitmq..
RabbitMQ - Publish & Subscribe MQTT Data
·
📘 Backend/Message Broker
📘 RabbitMQ - Publish & Subscribe MQTT Data MQTT Producer : 특정 소프트웨어에서 딥러닝 엔진을 거쳐 MQTT로 데이터가 계속 나옴 MQTT Broker(RabbitMQ) : Message Broker인 RabbitMQ를 이용해 MQTT 데이터를 Rabbit MQ의 Exchange를 거쳐 Routing Key에 맞는Queue에 쌓는다. MQTT Client(FrontEnd Server) : Queue에 쌓인 데이터를 Pub/Sub 구조로 프론트엔드(MQTT Client)와 실시간 통신을 하고싶음(Web Socket) 환경 요구 사항 도커 컨테이너 사용 중지지, 로컬(Windows)에 RabbitMQ 등 설치 RabbitMQ GUI Management Consol..