Skip to main content Link Menu Expand (external link) Document Search Copy Copied

이번에 토스 러너스 하이 2기 프로그램에 참여하게 되었고, 결과 발표 시점에 이전 직장에서 경영 악화로 개발 조직이 해체되는 상황을 겪었습니다.

현업 목표를 이어가기 어려워진 상황에서, 제가 선택한 최선은 이전 직장에서 실제로 겪었던 실무 문제를 다시 꺼내 정의하고 직접 해결하는 것이었습니다. 아래는 본 러너스 하이 2기 기간 동안 설정한 목표와 그에 대한 수치화 된 결과를 요약한 내용입니다.

SUMMARY

  1. Redis Cluster 환경에서 단일 노드 메모리 사용률이 60% 이상으로 Redis Stream 에 의해 집중되는 문제
    → 파티셔닝을 도입하여 3대 노드에 평균 20% 수준으로 부하를 분산 관련 링크
  2. Redis Stream에 대한 모니터링 및 알림 체계 부재로 장애 대응이 지연되던 문제
    → Grafana 기반으로 Stream lag 및 Redis memory 임계치 초과 시 Slack 알림을 구성하여 초 단위 대응 가능
  3. 메시지 상태 관측 수단 부재로 개별 확인 시 평균 5분 이상 소요되던 문제
    → 별도의 Redis Stream 모니터링 API를 구현하고 Grafana와 연동
    → consumer, group, memory, length 등 메타 정보를 통합 제공하여 원클릭 수준의 관측 환경 구축
  4. MAXLEN 초과 시 기존 메시지를 삭제(trimming)하던 위험한 처리 방식
    → 메시지 전송 이전 MAXLEN 근사치 도달 시 즉시 에러 반환하도록 변경
    → 기존 메시지 삭제 이전에 차단함으로써 메시지 유실 및 evict 리스크 제거
  5. 롤백을 위한 설정 변경 시 반영까지 최대 10분 이상 소요되던 문제
    → 기존 인프라 활용한 Redis Pub/Sub 기반 설정값 Bus Refresh 구조를 구현
    설정 적용 시간을 수 초 단위로 단축 관련 링크

아래는 러너스 하이 2기 기간 동안 문제 정의부터 개선까지의 과정을 기록한 로그입니다.