메인 콘텐츠로 건너뛰기

대규모 소셜 데이터 이벤트를 대비하는 방법

국가적·세계적 주요 이벤트가 발생하면 소셜 미디어 전반에서 사용자 활동이 급격히 폭증하는 일이 흔합니다. 슈퍼볼, 각종 선거, 전 세계의 새해맞이처럼 미리 예측 가능한 이벤트도 있지만, 자연재해, 돌발 정치 현안, 대중문화 이슈, COVID-19와 같은 보건 팬데믹 등 예기치 못한 사건으로 인해 볼륨이 급증하기도 합니다. 이러한 사용자 활동의 급증은 때로는 매우 짧게(초 단위) 나타나기도 하고, 몇 분간 지속되기도 합니다. 원인이 무엇이든 X의 데이터를 소비하는 애플리케이션에 미치는 영향을 고려하는 것이 중요합니다. 다음은 대규모 소셜 데이터 이벤트에 대비해 팀이 준비하는 데 도움이 되는 모범 사례입니다.

현재 필터 스트림 규칙 검토

  • 대형 이벤트 기간에는 특정 키워드의 빈도가 급등할 수 있습니다. 예: 주요 스포츠 이벤트에서 브랜드가 스폰서로 참여할 때 브랜드 언급이 급증.
  • 불필요한 활동량을 유발할 수 있는 불필요하거나 지나치게 포괄적인 규칙은 피하세요.
  • 예상되는 대규모 이벤트 전에 클라이언트와 미리 소통하여 적절히 계획할 수 있도록 하세요.  

애플리케이션에 스트레스 테스트를 수행하세요

버스트 트래픽이 평균 일일 사용량의 5~10배에 이를 수 있음을 예상하세요. 설정한 규칙에 따라 증가는 훨씬 더 클 수 있습니다.

연결 전송 한도 이해하기

플로우와 전송 한도는 액세스 수준에 따라 결정됩니다. 이로 인해 스트림에 전달되는 결과의 양은 고정됩니다.
  • Academic: 초당 게시물 250개
  • Enterprise: 초당 게시물 수는 액세스 수준에서 설정됨

연결 상태 유지를 위한 최적화

스트림을 사용할 때는 데이터가 누락되지 않도록 연결을 지속적으로 유지하는 것이 중요합니다. 클라이언트 애플리케이션은 연결 해제를 감지하고, 재연결이 실패할 경우 지수적 백오프를 적용해 즉시 재시도하는 로직을 갖추어야 합니다.  

자체 측에 내장 버퍼링 추가

멀티스레드 애플리케이션을 구축하는 것은 대용량 스트림을 처리하는 핵심 전략입니다. 상위 수준에서 데이터 스트림을 관리하는 모범 사례는 스트리밍 연결을 설정하는 전용 스레드/프로세스를 두고, 수신한 JSON 활동을 메모리 구조나 버퍼링된 스트림 리더에 기록하는 것입니다. 이 ‘경량’ 스트림 처리 스레드는 수신 데이터를 처리하며, 데이터는 필요에 따라 메모리에서 버퍼링되어 증감할 수 있습니다. 그런 다음 다른 스레드가 해당 버퍼를 소비하고 JSON 파싱, 데이터베이스 쓰기 준비 등 애플리케이션에 필요한 ‘무거운 작업’을 수행합니다.  

글로벌 이벤트 = 글로벌 시간대

이벤트는 근무 시간 이후나 주말에도 발생할 수 있으므로, 평상시 근무 시간 외의 급증 상황에 대비해 팀이 준비되어 있도록 하세요.