우리는 어떻게 해외주식 서비스 안정화를 이뤘는가
김광훈 · 토스 · 토스 기술 블로그
소개
토스증권 해외주식 플랫폼 팀은 미국 주식을 중심으로 해외 주식 원장을 개발 및 운영하고 있어요. 현지에서 주식 매매를 대신 해주는 브로커와 어떤 통신 문제가 있었고, 문제를 어떻게 해결했는지 공유드립니다.
AI 핵심 요약
정규장 시작에 트래픽이 급증하고 주문량도 성장하면서 외부 브로커 응답이 지연되고, 데이터 증가로 원장 조회 성능도 저하됐다. 팀은 resilience4j RateLimiter로 예약 주문 배치의 TPS를 제어하고, Grafana 알림을 이상 감지 API와 Kafka 이벤트에 연결해 CRITICAL 상태에서 서브 브로커로 자동 전환하도록 했다. 조회 성능과 Oracle 파티션 키 선택의 상충을 해결하기 위해 원천 데이터는 날짜 기준으로 Oracle에 두고, 계좌 단위 조회용 집계 데이터는 MongoDB에 저장했으며 Impala와 Kafka를 이용해 초기 데이터와 이후 변경분을 이관했다. 기존 도구를 활용해 문제의 핵심에 맞는 수준으로 대응하는 것이 빠른 안정화와 운영 효율에 중요하다는 점을 강조한다.
- 예약 주문처럼 특정 시점에 요청이 몰리는 작업은 브로커의 처리 한도에 맞춰 TPS를 제한하세요.
- Grafana 알림은 쿼리 조건뿐 아니라 평가 주기와 pending period를 함께 설정해 순간적인 오류와 지속 장애를 구분할 수 있습니다.
- 장애 감지와 대응을 이벤트로 분리하면 Kafka 구독 시스템이 상태에 따라 독립적으로 동작할 수 있습니다.
- 데이터 저장소는 조회 패턴과 파티션·샤드 전략, 디스크 운영까지 함께 고려해 선택하세요.
- 기존 도구를 활용해 핵심 문제를 적정 수준으로 해결하면 오버엔지니어링을 줄이고 비즈니스 개발에 집중할 수 있습니다.
비슷한 학습 자료
토스ㅣSLASH 24 - 대규모 사용자 기반의 마이데이터 서비스 안정적으로 운영하기
SLASH · YouTube
토스ㅣSLASH 22 - 애플 한 주가 고객에게 전달 되기까지
SLASH · YouTube
고객은 절대 기다려주지 않는다: 빠른 데이터 서빙으로 고객 만족도를 수직 상승 시키는 법
이세찬 · 토스 기술 블로그
캐시를 적용하기 까지의 험난한 길 (TPS 1만 안정적으로 서비스하기)
김경윤 · 토스 기술 블로그
전세대출에서 대외기관 신용정보를 조회하는 방법
김동우 · 토스 기술 블로그
서버 증설 없이 처리하는 대규모 트래픽
함종현 · 토스 기술 블로그