-
Notifications
You must be signed in to change notification settings - Fork 1
매수 매도 체결 로직에 의해 redis pub sub이 정상적으로 동작하지 않는 문제
JIN edited this page Dec 4, 2024
·
1 revision
⚙️ Web BE | ⚙️ Web BE |
---|---|
김진 | 이시은 |
다른 로직에서 한국투자 Open API WebSocket에 정상적으로 구독 요청 및 해제를 하기 위해 서버가 재실행될 때마다 Redis를 비워주는 작업을 했다.
그러나 매수/매도 체결 로직은 서버가 실행될 때 DB에서 종목 코드를 가져와 구독 요청을 하는 로직이었기 때문에, 서버가 실행될 때마다 Redis를 비우고 구독 요청을 하게 되면 아래와 같은 상황이 발생한다.
사진에서 사용한 예시처럼, DB에 005930이라는 종목 코드에 대한 매수/매도 체결 요청이 있었다고 가정했을 때, 서버가 하나씩 실행될 때마다 Redis 내 데이터를 삭제하는 로직이 실행되어 여전히 세 개의 서버가 동일한 종목을 구독하게 되는 상황이 발생했다.
Deploy에 사용하는 YAML 파일 코드를 확인해보니, 가장 먼저 deploy되는 서버에서 Redis Docker를 실행하는 코드를 발견했다.
서버 코드 내에서 Redis 내 데이터를 지우지 않고, Redis Docker를 실행하는 시점에 데이터를 지우면 서버가 deploy될 때마다 Redis 내 데이터를 삭제하지 않아 우리의 의도대로 동작할 수 있다는 생각을 했다.
if [ "${{ matrix.app.name }}" = "be-1" ]; then
docker run -d \
--name redis \
--network network \
-p port:port \
-v redis_data:/data \
redis:latest redis-server --appendonly yes
docker exec redis redis-cli EVAL "local keys = redis.call('keys', 'connections:*') for i=1,#keys do redis.call('del', keys[i]) end" 0
fi
코드를 위와 같이 수정해, Redis가 실행되는 시점에서만 불필요한 데이터를 지울 수 있어 우리의 의도대로 동작하는 것을 확인할 수 있었다.
- [FE] 프론트엔드 기술스택
- [FE] 라이브러리 없이 차트 구현 이유
- [FE] Canvas API 사용방법
- [FE] 네비게이션 바 애니메이션 구현
- [FE] Socket.io 사용방법
- [FE] Tanstack Router에 대하여...
- [FE] Intl(Internationalization) API
- [FE] React Suspense 적용
- [FE] 한글 입력 방식의 유연성을 높인 검색 시스템 구현하기
- [BE] 백엔드 기술 스택
- [BE] SSE vs Socket.io
- [BE] Redis를 도입하게 된 계기
- [BE] ACG Rule을 활용한 Secure CI CD 파이프라인 구현
- [BE] Nginx 로드밸런싱을 통해 한국 투자 API 소켓 제한 극복
- [BE] 주가 지수 기능 개발 과정
- [BE] 매수 및 매도 기능 개발 과정
- [BE] 실시간 자산 조회 기능 개발 과정
- [BE] 단위 테스트
- [BE] redis를 이용한 한국투자 Open API 세션 관리
- [BE] 데이터베이스 인덱싱
- [FE] React에서의 DOM 요소 접근 (useRef vs getElementById)
- [FE] Outlet을 활용한 공통 레이아웃 관리
- [FE] react hooks가 특정 조건에서 실행되면 안되는 이유 & useQuery에 query function 매개변수가 undefined일 수도 있을 때 어떻게 해결할까
- [FE] cross‐domain 로컬 환경에서 cookie로 인증 처리하기 with vite proxy
- [FE] 크롬&사파리 Composition 차이
- [FE] useEffect 의존성 배열
- [BE] Naver Cloud Platform HTTPS 무응답 현상
- [BE] 한국투자 Open API에서 access token을 발급받지 못하는 문제
- [BE] 한국투자 Open API와 웹소켓 연결이 되지 않던 문제
- [BE] 한국투자 Open API 웹소켓 연결이 중단되는 문제
- [BE] 같은 주식 주문이 동시에 여러 번 체결되는 문제
- [BE] 한국투자 Open API Websocket 세션을 두 개에서 한 개로 변경하기
- [BE] Nginx 로드 밸런싱 중 Socket bad Request 발생하는 현상
- [BE] 매수/매도 체결 로직에 의해 redis pub/sub이 정상적으로 동작하지 않는 문제