Slack과 GitHub 규모 확장 경험: 썸원 이모지 23개 제한과 Koi Pond 부하 테스트 도구
Scaling Slack and GitHub with Maude Lemaire
전 Slack 백엔드 성능 인프라 팀장이자 GitHub 데이터베이스 확장을 담당했던 Maude Lemaire가 대규모 제품의 확장 과정을 공유했다. Slack이 커스텀 이모지를 23개로 제한해 썬더링 허드를 막은 사례와 GitHub의 16개 샤드 한계가 주요 내용이다. Slack은 한 채널의 모든 사용자에게 팬아웃되는 커스텀 이모지가 과도한 네트워크 부하를 만들지 않도록 개수를 23개로 제한했다. 50만 사용자 규모의 신규 고객을 앞두고 Maude는 헤드리스 Chrome 인스턴스로 부하 테스트를 하면 세션당 5시간에 인스턴스당 0.37달러가 들어 총 비용이 크다는 점을 확인했다. 이에 Go로 WebSocket 연결을 맺는 경량 Slack 버전 'Koi'를 만들고 이를 실행하는 도구 Koi Pond를 개발했다. GitHub에서는 Ruby on Rails 모놀리스의 Active Record가 홈페이지 한 번 로드에 세 개 데이터베이스 클러스터에 걸쳐 100개의 SQL 쿼리를 발생시키는 문제가 드러났다. 기사에 따르면 GitHub는 샤드 키가 없는 스캐터 쿼리 때문에 데이터베이스 샤드를 16개 넘게 늘릴 수 없었다. 스캐터 쿼리는 모든 샤드 인스턴스에서 실행되어야 하며 샤드가 많아질수록 느려진다. Maude는 플랫폼 작업에서는 LLM이 낸 결과를 직접 검증한다고 밝혔다.
Active Record 같은 추상화가 샤드 키 없는 쿼리를 만들면 16개 샤드 이상으로 확장할 수 없다는 점은, 데이터 계층을 설계할 때 ORM이 생성하는 쿼리 형태를 확인해야 함을 보여준다.
원문 출처
The Pragmatic Engineer (Gergely Orosz)