본문 바로가기
728x90

Spring23

[Spring] Amazon MQ (Active MQ) : Consumer 운영 ActiveMQ를 적용해 보니 서비스 메시지 성향에 따라 Consumer 운영이 달라져야 한다고 생각됐다. Message 간의 디펜던시 및 영향도가 있나 없나에 따른 운영 전략이 달라진다. Message A : 메시지간의 영향이 없는 메시지 예를 들어 신규로 등록해야 할 상품 정보가 담긴 메시지가 Producer로부터 발행이 되고 Consumer는 메시지를 받아서 DB에 insert만 하는 프로세스라면 메시지간의 영향도가 없으므로 어떤 서버든 Consumer가 받아서 언제 처리가 되든 영향이 없다. 이럴 때는 RoundRobin 방식으로 메시지를 소비하는 게 메시지 처리 퍼포먼스가 좋아진다. MQ RoundRobin 방식 Queue(개발자가 정의한 destination)에 연결 된 Consumer가 3개.. 2022. 11. 10.
[Spring] Amazon MQ (Active MQ) : 개발 [Spring] Amazone MQ (Active MQ) : 개념편을 이어서 실제 Spring Boot + Active MQ 개발에 대해서 기록해보겠다. 우선적으로 Active MQ 서버가 이미 구성되어 있다는 가정하에 Spring Framework에서 어떻게 설정하고 개발했는지에 대해 살펴보겠다. AWS Amazon MQ Document에 예제가 있으니 참고해도 좋다. Gradle 설정 먼저 gradle에 dependncies를 아래와 같이 'activemq-client'와 'activemq-pool'를 설정해준다. implementation 'org.apache.activemq:activemq-client:5.15.8' implementation 'org.apache.activemq:activemq-.. 2022. 11. 9.
[Spring] Amazon MQ (Active MQ) : 개념 Amazon MQ AWS에서 운영하는 클라우드 기반의 관리형 메시지 브로커 서비스이며 Apache ActiveMQ 기반으로 서비스하고 있다. Producer : 메시지 발행자 Broker(Queue) : 메시지 전달자 Consumer : 메시지 수신자 큰 흐름은 위의 이미지와 같이 Producer가 발행 한 메시지를 Broker에게 전달해 주고 Broker는 메시지를 순차적으로 저장하고 Consumer로 메시지를 순차적으로 전달 / 수신하는 방식이다. JMS (Java Message Service) 자바 기반의 MOM(Message Oriented Middleware) API 표준이며 자바 플랫폼, 엔터프라이즈 에디션 기반이고, 메시지 생성, 송수신, 읽기를 한다. AcitveMQ의 JMS Library.. 2022. 11. 9.
[MySQL] Replication 동기화 시간 문제 문제 발생 프런트 클라이언트로부터 데이터 업데이트 요청을 받았고 DB에 업데이트를 정상적으로 처리했다. DB 업데이트 완료 이벤트를 다른 서버가 인지하고 업데이트 데이터를 조회했더니 간혈적으로 업데이트 이전 데이터가 조회는 현상이 있었다. 이 현상으로 인하여 데이터 무결성에 대한 문제를 인식하게 되었다. 클라이언트는 A서버에게 value를 20으로 업데이트 요청을 했고 A서버는 db에 데이터를 정상적으로 commit 했다. A서버는 B서버에게 데이터가 업데이트 완료된 상태를 알렸고 B서버는 value 값을 조회했는데 업데이트 이전 value값 10이 조회되었다. 원인 파악 DB 서버는 Master와 Slave로 되어 있고 Insert, Update, Delete는 Master(Write) 서버로 요청을 .. 2022. 11. 8.
300x250