[StudyWithMe] 유저의 사업자 검수 요청을 처리하며 - 2
·
프로젝트/StudyWithMe
이전 포스팅에서는 유저의 사업자 검수 요청 요구사항에 관한 설명과이와 관련된 `ApplicationEventPublisher` 활용에 대해 설명했다. 2025.01.15 - [프로젝트/StudyWithMe] - [StudyWithMe] 유저의 사업자 검수 요청을 처리하며 - 1 [StudyWithMe] 유저의 사업자 검수 요청을 처리하며 - 1이번 포스팅 및 다음 포스팅에서는 유저의 사업자 검수 요청과 관련된`StudyWithMe` 프로젝트에서의 `ApplicationEventPublisher` 사용`ApplicationEventPublisher` 사용과 관련된 테스트 코드에서 `@Transactional`를hdbstn3055.tistory.com  이번 포스팅에서는 `ApplicationEventPub..
[StudyWithMe] 유저의 사업자 검수 요청을 처리하며 - 1
·
프로젝트/StudyWithMe
이번 포스팅 및 다음 포스팅에서는 유저의 사업자 검수 요청과 관련된`StudyWithMe` 프로젝트에서의 `ApplicationEventPublisher` 사용`ApplicationEventPublisher` 사용과 관련된 테스트 코드에서 `@Transactional`를 제거과정에 관해 설명하려고 한다.  ApplicationEventPublihser우선, `ApplicationEventPublisher`가 뭘까? `ApplicationEventPublisher`Spring의 `ApplicationContext`가 상속하는 인터페이스 중 하나디자인 패턴중 하나인 옵저버 패턴(Observer Pattern)의 구현체옵저버 패턴객체의 상태 변화를 관찰하는 옵저버들의 목록을 객체에 등록하고 상태 변화가 있을때..
[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..