AOP 2

Spring 의존성 끊어내기 DIP, Event, AOp

1. 서론여러 프로젝트를 하면서 의존성을 분리하려고 여러가지 패턴, 스택을 사용해왔다. 특히 이번 Mafia Together에서 SSE를 적용하면서 SSE를 관리하는 로직들이 Game에 있게 되면서 타 어그리게이트에서 SSE 통신하기 위해서는 Game에 의존을 하게 되었다. 이러한 상황에서 Game은 거의 모든 클래스에 의존성을 가지고 있어 순환 참조가 될 것으로 예상이 되었다. 그래서 우리는 이 SSE 를 분리할 필요가 생겼다. 그동안 사용한 의존성 분리에는 DIP, Event, AOP가 있었는데 이번 기회에 어떤 상황에 어떤 방법을 사용할지 생각해보면 좋을 것 같아 적게되었다.2. 의존성이란의존성이란 의존하는 대상의 변화가 본인에게 영향을 줄 가능성이 있는 경우를 말한다.예를 들어 A와 B가 다음과 ..

학습 2024.11.01

Spring Redisson Lock 구현하기, 근데 AOP를 곁들인

읽기 전에Redis Lock 기본Redisson vs Lettuce서론위 글에서 적은 동시성 이슈를 해결하기 위해 Redisson을 도입한 Redis 락을 구현하게 되었다. 1. User A와 User B가 동시에 방에 참가한다2. User A와 User B가 거의 동시에 방 목록을 가져오게된다3. User A가 먼저 saveRoom을 하여 참가를 하게되고 다른 유저들은 User A가 마지막 참가자로 참가하는 알림을 받게 된다4. User B가 saveRoom을 하며 덮어쓰게되고 다른 유저들은 마지막 참가자가 User B가 되었다는 알림을 다시 받게된다5. User A는 방에서 추방되게 된다.이처럼 유저가 직접적으로 동시성 이슈로 인한 버그를 느낄 수 있기 때문에 Lock의 필요성을 느끼게 되었다.설계L..

개발 2024.10.21