본문 바로가기
DevOps

Discord는 수백만의 사용자 메시지를 어떻게 처리할까?

by dev-woo 2023. 3. 19.
반응형

Discord

Discord는 수백만 명의 사용자가 매일 수십억 개의 메시지를 주고받는 대중적인 커뮤니케이션 플랫폼입니다. 당연히 사용자들은 이러한 메

시지를 쉽게 검색할 수 있기를 원합니다. 그렇다면 Discord는 어떻게 이를 가능하게 할 수 있을까요?

 

그 해답은 바로 Elastic Search입니다. Elastic Search는 텍스트, 숫자, 정형 또는 비정형 데이터를 포함한 모든 종류의 데이터를 처리하

도록 설계된 분산형 개방형 검색 및 분석 엔진입니다. Apache Lucene을 기반으로 구축되어 빠르고 효율적인 검색 기능을 제공합니다.

 

 

Sorce:discord.com

 

 

 

Elastics Search

 

Elastic Search은 여러 개의 키-값 쌍을 포함하는 JSON 문서 형태로 데이터를 저장합니다. 색인화를 활성화하기 위해 Elastic 검색은 반

전된 색인을 생성합니다. 이 색인은 모든 문서에 나타나는 모든 고유 단어를 나열하고 각 단어가 나타나는 모든 문서를 식별합니다. 이렇게

하면 문서 데이터를 거의 실시간으로 쉽게 검색할 수 있습니다.

대량 인덱싱을 가능하게 하기 위해 Discord는 오픈소스 분산 큐인 셀러리를 사용하여 수신 메시지를 임시로 저장합니다. 그런 다음 색인 작

업자 그룹이 이러한 메시지를 처리하고 일괄적으로 Elastic Search으로 색인합니다.

Discord는 단일 서버가 아닌 클러스터 형태로 Elastic Search을 실행합니다. Discord는 메시지를 저장할 샤드를 결정하기 위해 샤드 할

당자를 사용합니다. 샤드는 Elastic 검색 클러스터와 그 위에 있는 인덱스의 조합입니다. 서비스 검색 프로세스는 또 다른 오픈 소스 도구인

etcd를 사용해 수행됩니다.

Discord는 오픈 소스 시스템과 그 기본 구현에 크게 의존한다는 점에서 다른 많은 제품들과 차별화된다는 점에 주목할 필요가 있습니다.

 

결론

 

디스코드 에 의하면 검색 기능을 도입한 지 3개월이 조금 넘었는데, 지금까지 큰 문제 없이 시스템이 매우 훌륭하게 작동하고 있습니다.

16,000개의 인덱스와 수백만 개의 Discord 서버에 분산되어 있는 260억 개의 문서에서도 일관되고 신뢰할 수 있는 결과를 제공

해 온 Elasticsearch를 활용하고 있습니다. 기존 클러스터에 노드를 더 추가하거나 추가 클러스터를 통합하여 시스템을 계속 확장할 계획입

니다.

시스템이 확장됨에 따라 클러스터 간에 인덱스를 전송할 수 있는 소프트웨어 개발을 검토할 수도 있습니다. 이 접근 방식을 사용하면 클러스

터의 부하를 완화하거나 특정 인덱스를 예외적으로 활성화된 Discord 서버에 할당할 수 있습니다. 하지만 현재 샤딩 시스템은 중요

한 Discord 서버가 전용 샤드를 받을 수 있도록 하는 데 효과적이었습니다.

 

반응형

댓글