RabbitMQ - Clustering & Mirroring
📘 Backend/Message Broker2023. 9. 10. 15:37RabbitMQ - Clustering & Mirroring

📘 요구사항 내가 구현하고 싶은 그림 (그림 잘 못 그림) 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 Broker2023. 9. 10. 15:34RabbitMQ - Publish/Subscribe On Linux

📘 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 Broker2023. 9. 10. 15:33RabbitMQ - Dead Letter Exchange

📘 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 Broker2023. 9. 2. 13:08RabbitMQ - Publish & Subscribe MQTT Data

📘 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..

Spring Cloud Config Server/Client (RabbitMQ & Cloud Bus)
📘 Backend/Spring Cloud2023. 7. 22. 16:05Spring Cloud Config Server/Client (RabbitMQ & Cloud Bus)

📘 Spring Cloud Config Server Spring Cloud Config 는 여러 서비스 들의 설정 파일을 외부로 분리해 하나의 중앙 설정 저장소 처럼 관리 할 수 있도록 해주며 특정 설정 값이 변경시 각각의 서비스를 재기동 할 필요없이 적용이 가능하도록 도와준다. 여러 서버의 설정 파일을 중앙 서버에서 관리할 수 있다. 서버를 재배포 하지 않고 설정 파일의 변경사항을 반영할 수 있다. 하지만 이것이 모든 문제를 해결해주지는 않는다. Spring Cloud Config를 이용하면 다음의 문제들을 겪을 수 있으므로 주의해야 한다. Git 서버 또는 설정 서버에 의한 장애가 전파될 수 있다. 우선 순위에 의해 설정 정보가 덮어씌워질 수 있다. Spring Cloud Config 설정 파일 우선..

📘 Backend/Kotlin2023. 7. 13. 18:37Coroutine - GlobalScope & Delay & Dispatchers & Context

Coroutine GlobalScope 저번에 Coroutine의 CoroutineScope를 알아봤었는데 이번엔 GlobalScope를 알아보겠습니다. 코루틴은 실행의 일시중단(Suspend)&재개(Resume)를 할수있는 비선점형 멀티태스킹을 위한 서브루틴의 일반화가 가능하게 합니다. 다시 생각해보는 Coroutine 장점 스레드와 다른점은 Coroutine은 스레드와 함께 사용됩니다. Coroutine은 코드 실행 중 멈출 수 있고(Suspendable) 다시 실행(Resume)할 수 있는 제어능력이 있습니다. 또, 작업을 쉽게 전환하며 병렬성이 아닌 동시성을 지원하며 실시간 컨텍스트를 가능하게 하며, 세마포어, 뮤텍스같은 기본적인 동기화 작업도 불필요합니다. 비동기 코드이지만 동기코드처럼 보입니다..

Spring Batch (Kotlin)
📘 Backend/Spring2023. 6. 20. 19:56Spring Batch (Kotlin)

📘 Spring Batch Spring Batch를 사용하게 된 계기는 회사의 csv 파일 내부의 데이터를 DB로 이전하기 위해 알아보게 되었습니다. 배치(Batch)는 일괄처리 란 뜻을 가지고 있습니다. 만약 대용량의 파일을 DB에 저장하는 기능이 필요하다고 가정해봅시다. 이렇게 큰 데이터를 읽고, 가공하고, 저장한다면 해당 서버는 순식간에 CPU, I/O 등의 자원을 다 써버릴 것입니다. 그리고 이 집계 기능은 하루에 1번 수행되고,이를 위해 API를 구성하는 것은 너무 낭비입니다. 바로 이런 단발성으로 대용량의 데이터를 처리하는 애플리케이션을 배치 애플리케이션이라고 합니다. 스프링에서는 Spring Batch를 통해 배치 애플리케이션을 사용할 수 있습니다. Spring Batch 5.0 변경사항 S..

image