[Spring WebSocket] 채팅 서비스에 Transactional Outbox Pattern 도입
·
Spring/WebSocket
2024.11.11 - [Spring/WebSocket] - [Spring WebSocket] STOMP에서 Kafka 활용 Flow [Spring WebSocket] STOMP에서 Kafka 활용 Flow2024.11.10 - [Spring/WebSocket] - [Spring WebSocket] 채팅 서비스 프로젝트에 Kafka 적용 [Spring WebSocket] 채팅 서비스 프로젝트에 Kafka 적용채팅 서비스는 일반적인 `HTTP` 통신을 사용하는 `stateless` 서비스와는hdbstn3055.tistory.com 이전 포스팅에서 본것처럼 `STOMP`에 메시지 브로커인 `Kafka`를 활용해서 `Scale-Out` 상황에 대비했다. 그런데 이렇게 되면 발행되어야 할 메시지가 발행되지 않거..
[Spring Data] Redis Lock을 적용해보자 - 1
·
Spring/동시성 & Lock
`백엔드/서버` 개발자라면 반드시 `동시성` 문제를 만나게 된다. 특히, 요즘 `K8s` 환경을 자주 사용하는데 아무리 애플리케이션에서 `동시성` 발생 대비를 해도다른 `Pod`에서 같은 `DB`에 접근하면 동시성 문제를 처리하는 것이 어렵다.  위의 그림과 같은 경우 `DB` 또는 `Redis`에서 제공하는 `Lock`을 활용하여 데이터의 동시성 접근을 제어해야 한다. `DataBase Lock`을 이용할 경우 추가적인 인프라 구성요소 없이 `동시성`을 해결할 수 있다는 장점이 있으나`Lock` 획득을 위해 `Waiting`되는 `DataBase Connection` 증가로 인해 부하가 발생할 수 있다. `Redis`를 이용하여 `Distributed Lock`을 사용할 경우 `DataBase Conn..