- Today
- Total
목록Redis (3)
개발하는 고라니
일전에 지연 이벤트를 구현하기 위해 batch를 이용한 polling 방식과 Rabbit MQ, 그리고 redis의 keyspace notification 을 알아보았습니다. 그중 제가 채택한 redis를 이용해서 어떻게 구현했고, 아쉬웠던 점과 놓쳤던 부분에 대해 버그가 발생했던 부분을 회고할 겸 글을 작성합니다.Architecture처음 완성시킨 아키텍처에서 일부분을 도식화 하면 아래와 같습니다. A 에서 주문 등록 처리 후 Redis에 N분의 TTL과 함께 Key:Value를 등록N분 후 Key가 만료됨에 따라 Redis에서 Event를 발행각 B 서버(복수)에서 동일한 Event 수신Redis 분산락 획득 시도락을 획득한 서버만 주문이 결제가 되었는지 확인 후 안되었으면 주문 취소, 락을 획득하지..
Local 환경 keyspace notification기본적으로 Redis는 성능을 이유로 이 설정이 off되어있다.레디스에서 발생하는 이벤트를 발행하고 받으려면 아래의 설정값을 주어야한다.notify-keyspace-events 이를 설정하는 2가지 방법을 간단하게 보자.방법 1: redis-cli 로 즉시 적용로컬이나 개발 환경에서 빠르게 테스트할 때 유용합니다.redis-cli로 접속하여 간단히 즉시 적용할 수 있으나, redis 서버를 재시작하면 휘발됩니다.$ redis-cli# 'E'는 키스페이스 이벤트, 'x'는 만료 이벤트를 의미합니다.> CONFIG SET notify-keyspace-events Ex# 설정값 조회> CONFIG GET notify-keyspace-events방법 2: r..
Event이벤트라는 단어 참 친숙하지요?일상 생활부터 소프트웨어 개발까지, 이벤트는 셀 수 없이 많은 곳에서 다양하게 쓰이고 있습니다. 저는 특히 도메인 이벤트(Domain Event)라는 개념을 중요하게 사용합니다. 도메인 이벤트란 "비즈니스적으로 의미 있는 어떤 사건이 발생했다"는 사실 그 자체를 말합니다.예를 들어 '주문이 생성되었다'거나 '회원 가입이 완료되었다'는 사실이 바로 도메인 이벤트입니다.이렇게 사건을 중심으로 시스템을 설계하면, 비즈니스 로직 간의 결합도를 낮추어 시스템을 훨씬 유연하게 만들 수 있습니다.Delayed Event이번에는 지연 이벤트에 대해 이야기 해보고자 합니다. "지연 이벤트"란 시스템에서 어떤 일이 발생했을 때 그에 대한 후속 조치를 즉시 실행하지 않고 의도적으로 지..