디스코드의 기술 스택
⏰Discord는 Elixir와 Python을 사용하여 대규모 실시간 이벤트를 처리한다.
⏰Elixir는 Erlang VM에서 실행되는 함수형 프로그래밍 언어로, 안정적이고 신뢰성이 높다.
⏰Erlang은 통신 시스템에 사용되는 안정적이고 견고한 시스템을 구축하는 데 사용되며, Ericson axd 301 ATM 스위치 등에서 신뢰성을 입증받았다.
디스코드의 인프라 구성
⏰디스코드는 500대의 Elixir 머신을 운영하며 수천만 개의 메시지를 처리하고 1200만 명의 동시 사용자를 다루고 있다.
⏰디스코드의 채팅 인프라 팀은 5명의 엔지니어로 구성되어 있지만, Elixir와 Erlang VM의 안정성을 입증하고 대규모 동시성을 다루고 있다.
⏰Airline 프로세스는 가벼우며 격리되어 있어 대규모 동시성을 가능케 한다.
데이터베이스 전환
⏰디스코드는 몽고디비에서 카산드라로 이전하였고, 미래에 다른 데이터베이스로 이전할 예정이다.
⏰디스코드는 빠르게 제품 기능을 테스트하고 론칭하기 위해 빠르게 빌드하며, 더 견고한 솔루션으로의 이전 경로를 항상 고려한다.
⏰디스코드는 1억 개의 메시지에 도달하면서 데이터와 인덱스가 RAM에 맞지 않게 되어 데이터베이스 이전이 필요하게 되었다.
성능 향상과 데이터 이동
⏰데이터 이동 속도가 3개월에서 9일로 단축되었음.
⏰Cassandra 노드 수가 줄어들고, 데이터 읽기 및 쓰기 시간이 현저히 단축됨.
⏰성능 향상으로 역사적인 메시지를 빠르게 처리할 수 있게 되었음.
FAQ
디스코드는 어떤 프로그래밍 언어를 사용하나요?
디스코드는 Elixir와 Python을 주로 사용합니다.
디스코드는 얼마나 많은 동시 사용자를 다룰 수 있나요?
디스코드는 1200만 명의 동시 사용자를 다룰 수 있습니다.
디스코드의 데이터베이스는 무엇인가요?
디스코드는 현재 카산드라를 사용하고 있으며, 미래에 다른 데이터베이스로 이전할 예정입니다.
데이터 이동 속도가 왜 단축되었나요?
데이터 이동 속도가 단축된 이유는 성능 향상으로 인한 것입니다.
디스코드의 채팅 인프라 팀은 몇 명으로 구성되어 있나요?
디스코드의 채팅 인프라 팀은 5명의 엔지니어로 구성되어 있습니다.
디스코드의 Airline 프로세스는 무엇인가요?
Airline 프로세스는 가벼우며 격리되어 있어 대규모 동시성을 가능케 합니다.
디스코드의 데이터와 인덱스가 RAM에 맞지 않게 된 이유는 무엇인가요?
디스코드가 1억 개의 메시지에 도달하여 데이터와 인덱스가 RAM에 맞지 않게 되었기 때문에 데이터베이스 이전이 필요하게 되었습니다.
Cassandra 노드 수가 줄어든 결과는 무엇인가요?
Cassandra 노드 수가 줄어들고, 데이터 읽기 및 쓰기 시간이 현저히 단축되었습니다.
핫 파티션 문제를 해결하기 위해 무엇을 만들었나요?
데이터 서비스를 만들어 핫 파티션 문제를 해결했습니다.
디스코드의 빌드 속도를 빠르게 하기 위해 무엇을 고려하나요?
디스코드는 빠르게 제품 기능을 테스트하고 론칭하기 위해 빠르게 빌드하며, 더 견고한 솔루션으로의 이전 경로를 항상 고려합니다.
타임스탬프와 함께 요약
⚙️ 0:00Discord는 Elixir와 Python을 사용하여 대규모 실시간 이벤트를 처리하고 트리리언 메시지를 저장한다.
⚙️ 2:04Elixir와 Erlang VM은 대규모 동시성을 처리하기 위해 설계되었으며, Airline 프로세스는 가벼우며 격리되어 있어 안정적인 시스템을 유지할 수 있다.
📦 4:02디스코드는 몽고디비에서 시작하여 카산드라로 이동하였으나 다시 다른 데이터베이스로 이전할 예정이다.
⚙️ 5:59Cassandra에서 읽기 작업은 쓰기 작업보다 비싸며, 디스크로부터 읽는 것은 메모리로부터 읽는 것보다 느리다. '핫 파티션'은 많은 요청을 받아 응답이 더 오래 걸리고 노드를 느리게 만든다.