본문으로 이동
우리는 어떻게 해외주식 서비스 안정화를 이뤘는가
문서

우리는 어떻게 해외주식 서비스 안정화를 이뤘는가

김광훈 · 토스 · 토스 기술 블로그

원본 보기

소개

토스증권 해외주식 플랫폼 팀은 미국 주식을 중심으로 해외 주식 원장을 개발 및 운영하고 있어요. 현지에서 주식 매매를 대신 해주는 브로커와 어떤 통신 문제가 있었고, 문제를 어떻게 해결했는지 공유드립니다.

AI 핵심 요약

정규장 시작에 트래픽이 급증하고 주문량도 성장하면서 외부 브로커 응답이 지연되고, 데이터 증가로 원장 조회 성능도 저하됐다. 팀은 resilience4j RateLimiter로 예약 주문 배치의 TPS를 제어하고, Grafana 알림을 이상 감지 API와 Kafka 이벤트에 연결해 CRITICAL 상태에서 서브 브로커로 자동 전환하도록 했다. 조회 성능과 Oracle 파티션 키 선택의 상충을 해결하기 위해 원천 데이터는 날짜 기준으로 Oracle에 두고, 계좌 단위 조회용 집계 데이터는 MongoDB에 저장했으며 Impala와 Kafka를 이용해 초기 데이터와 이후 변경분을 이관했다. 기존 도구를 활용해 문제의 핵심에 맞는 수준으로 대응하는 것이 빠른 안정화와 운영 효율에 중요하다는 점을 강조한다.

  • 예약 주문처럼 특정 시점에 요청이 몰리는 작업은 브로커의 처리 한도에 맞춰 TPS를 제한하세요.
  • Grafana 알림은 쿼리 조건뿐 아니라 평가 주기와 pending period를 함께 설정해 순간적인 오류와 지속 장애를 구분할 수 있습니다.
  • 장애 감지와 대응을 이벤트로 분리하면 Kafka 구독 시스템이 상태에 따라 독립적으로 동작할 수 있습니다.
  • 데이터 저장소는 조회 패턴과 파티션·샤드 전략, 디스크 운영까지 함께 고려해 선택하세요.
  • 기존 도구를 활용해 핵심 문제를 적정 수준으로 해결하면 오버엔지니어링을 줄이고 비즈니스 개발에 집중할 수 있습니다.