메인 콘텐츠로 건너뛰기

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

국가적·세계적 주요 이벤트가 발생하면 소셜 미디어 플랫폼 전반에서 사용자 활동량이 급격히 폭증하는 경우가 많습니다. Super Bowl, 정치 선거, 전 세계의 새해맞이 행사처럼 사전에 예정된 이벤트도 있지만, 자연 재해, 돌발적인 정치적 사건, 대중문화 이슈, COVID-19와 같은 감염병 팬데믹 등 예기치 못한 상황 때문에 트래픽이 급증하기도 합니다. 이러한 사용자 활동의 폭증은 매우 짧게(수초 단위) 나타날 수도 있고, 수분 동안 지속될 수도 있습니다. 원인이 무엇이든, X에서 데이터를 소비하는 애플리케이션에 미칠 수 있는 영향을 고려하는 것이 중요합니다. 아래는 대규모 소셜 데이터 이벤트에 대비하는 데 팀에 도움이 될 수 있는 모범 사례입니다.

현재 필터링된 스트림 규칙을 검토하세요

  • 주요 스포츠 이벤트 후원처럼 대형 이벤트가 발생할 때는, 브랜드 언급과 같은 특정 키워드의 볼륨이 급등할 수 있습니다.
  • 불필요한 활동량을 발생시킬 수 있는, 불필요하거나 지나치게 포괄적인 규칙은 피하도록 주의하세요.
  • 예상되는 대규모 트래픽 이벤트 전에 미리 클라이언트와 소통하여, 적절한 계획을 세울 수 있도록 하세요.  

애플리케이션에 스트레스 테스트 수행하기

버스트 트래픽량이 일일 평균 소비량의 5~10배까지 도달할 수 있다고 예상해야 합니다. 설정한 규칙 집합에 따라 증가는 이보다 훨씬 더 클 수도 있습니다.

연결에 대한 전달 한도 이해하기

플로우 한도와 전달 한도는 액세스 수준에 따라 결정됩니다. 이로 인해 각 스트림에 대해 전달되는 결과량이 고정됩니다.
  • Academic: 250 포스트/초
  • Enterprise: 포스트/초 한도는 액세스 수준에 따라 설정됩니다

연결 유지를 위한 최적화

스트림을 사용할 때는 데이터를 놓치지 않으려면 연결을 유지하는 것이 중요합니다. 클라이언트 애플리케이션은 연결 끊김을 감지할 수 있어야 하며, 재연결 시도가 실패할 경우 지수 백오프를 사용해 즉시 다시 연결을 시도하는 로직을 가져야 합니다.  

애플리케이션 측에 자체 버퍼링 추가

멀티스레드 애플리케이션을 구축하는 것은 대량 스트림을 처리하기 위한 핵심 전략입니다. 전반적인 관점에서 데이터 스트림을 관리하는 모범 사례는, 스트리밍 연결을 설정하는 전용 스레드/프로세스를 두고 수신된 JSON activity를 메모리 구조나 버퍼가 있는 스트림 리더에 기록하도록 하는 것입니다. 이 ‘경량’ 스트림 처리 스레드는 들어오는 데이터를 처리하는 역할을 하며, 해당 데이터는 필요에 따라 크기가 늘어나거나 줄어들 수 있도록 메모리에 버퍼링될 수 있습니다. 그 다음 별도의 스레드가 그 버퍼를 소비하고, JSON을 파싱하거나 데이터베이스 기록을 준비하는 등 App이 수행해야 하는 ‘무거운 작업’을 처리합니다.  

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

이벤트는 근무 시간 이후나 주말에도 발생할 수 있으므로, 팀이 평소 근무 시간 외에 발생하는 트래픽 급증에도 대비할 수 있도록 미리 준비해야 합니다.