Discord
Discord는 수백만 명의 사용자가 매일 수십억 개의 메시지를 주고받는 대중적인 커뮤니케이션 플랫폼입니다. 당연히 사용자들은 이러한 메
시지를 쉽게 검색할 수 있기를 원합니다. 그렇다면 Discord는 어떻게 이를 가능하게 할 수 있을까요?
그 해답은 바로 Elastic Search입니다. Elastic Search는 텍스트, 숫자, 정형 또는 비정형 데이터를 포함한 모든 종류의 데이터를 처리하
도록 설계된 분산형 개방형 검색 및 분석 엔진입니다. Apache Lucene을 기반으로 구축되어 빠르고 효율적인 검색 기능을 제공합니다.
Elastics Search
Elastic Search은 여러 개의 키-값 쌍을 포함하는 JSON 문서 형태로 데이터를 저장합니다. 색인화를 활성화하기 위해 Elastic 검색은 반
전된 색인을 생성합니다. 이 색인은 모든 문서에 나타나는 모든 고유 단어를 나열하고 각 단어가 나타나는 모든 문서를 식별합니다. 이렇게
하면 문서 데이터를 거의 실시간으로 쉽게 검색할 수 있습니다.
대량 인덱싱을 가능하게 하기 위해 Discord는 오픈소스 분산 큐인 셀러리를 사용하여 수신 메시지를 임시로 저장합니다. 그런 다음 색인 작
업자 그룹이 이러한 메시지를 처리하고 일괄적으로 Elastic Search으로 색인합니다.
Discord는 단일 서버가 아닌 클러스터 형태로 Elastic Search을 실행합니다. Discord는 메시지를 저장할 샤드를 결정하기 위해 샤드 할
당자를 사용합니다. 샤드는 Elastic 검색 클러스터와 그 위에 있는 인덱스의 조합입니다. 서비스 검색 프로세스는 또 다른 오픈 소스 도구인
etcd를 사용해 수행됩니다.
Discord는 오픈 소스 시스템과 그 기본 구현에 크게 의존한다는 점에서 다른 많은 제품들과 차별화된다는 점에 주목할 필요가 있습니다.
결론
디스코드 에 의하면 검색 기능을 도입한 지 3개월이 조금 넘었는데, 지금까지 큰 문제 없이 시스템이 매우 훌륭하게 작동하고 있습니다.
16,000개의 인덱스와 수백만 개의 Discord 서버에 분산되어 있는 260억 개의 문서에서도 일관되고 신뢰할 수 있는 결과를 제공
해 온 Elasticsearch를 활용하고 있습니다. 기존 클러스터에 노드를 더 추가하거나 추가 클러스터를 통합하여 시스템을 계속 확장할 계획입
니다.
시스템이 확장됨에 따라 클러스터 간에 인덱스를 전송할 수 있는 소프트웨어 개발을 검토할 수도 있습니다. 이 접근 방식을 사용하면 클러스
터의 부하를 완화하거나 특정 인덱스를 예외적으로 활성화된 Discord 서버에 할당할 수 있습니다. 하지만 현재 샤딩 시스템은 중요
한 Discord 서버가 전용 샤드를 받을 수 있도록 하는 데 효과적이었습니다.
'DevOps' 카테고리의 다른 글
windows를 위한 Python 설치관련도구들 (0) | 2023.03.21 |
---|---|
파이썬3 (python3) 설치 및 윈도우 (0) | 2023.03.21 |
올해 최고의 소프트웨어 개발도구 6가지 (0) | 2023.03.17 |
NestJS를 이용한 Typescript로 Kafka 사용해보기 -2 (0) | 2022.12.11 |
NestJS를 이용한 Typescript로 Kafka 사용해보기 -1 (0) | 2022.12.04 |
댓글