Quora 기술 스택 및 아키텍처 분석

Source

  • Evernote/ancom21c's notebook/Quora 기술 분석.md

Summary

본문서는 Quora의 웹 아키텍처와 기술 스택을 분석한 내용이다. 주요 구성 요소는 다음과 같다: 1) 검색: 토큰 기반 검색으로 n-gram 인덱싱 미적용, 오타/복수형 대응 불가. 2) 검색 쿼리: AJAX GET 요청, 서버사이드 HTML 렌더링, 영속적 연결 사용. 3) 내부 CMS: Webnode2(HTML/CSS/JS 생성)와 LiveNode(콘텐츠 표시 관리, Python/C++/JS 사용)로 구성되며 실시간 동기화 문제가 존재함. 4) 인프라: AWS EC2(Ubuntu), S3(CloudFront CDN), HAProxy(로드밸런싱), Nginx(리버스 프록시). 5) 백엔드: Python(Pylons 프레임워크) 기반, 느린 부분은 C++로 구현. Thrift(C++)로 백엔드 간 통신, Tornado로 실시간 업데이트(Comet/Long-polling) 처리. 6) 데이터베이스: MySQL(Memcached 캐시 레이어). 7) 기타: Git 버전 관리, ‘High Performance Web Sites’의 14가지 패스트로딩 기법 적용.

Key Points

  • 검색: 토큰화 기반, n-gram 미적용, 서버사이드 렌더링을 통한 하이라이트 처리
  • 인프라: AWS(EC2, S3, CloudFront), HAProxy, Nginx 리버스 프록시
  • 백엔드 언어: Python(Pylons) 주력, 성능 병목 시 C++ 사용, Thrift(C++)로 서비스 간 통신
  • 실시간 처리: Tornado 기반 Comet(Long-polling) 아키텍처
  • 데이터 저장: MySQL + Memcached 캐시
  • 내부 도구: Webnode2 및 LiveNode 기반 CMS, 실시간 동기화 이슈 존재
  • 성능 최적화: HTTP 요청 최소화, CDN 활용, Gzip, CSS/JS 최적화 등 표준 웹 성능 기법 적용