Core Concepts
Pinterest는 단순하고 안정적인 기술을 선택하여 급격한 사용자 증가에 대응했다.
Abstract
Pinterest의 확장 과정은 4단계로 나눌 수 있다:
자신을 찾는 시대: 소규모 엔지니어링 팀이 빠른 프로토타이핑과 진화하는 제품 요구사항을 관리했다.
실험의 시대: 지수적인 사용자 증가로 인해 다양한 기술을 채택했지만, 복잡하고 취약한 시스템이 되었다.
성숙의 시대: MySQL, Memcache, Redis와 같은 성숙하고 확장 가능한 기술에 초점을 맞추며 아키텍처를 단순화했다. 기술 스택을 추가하는 대신 잘 작동하는 것에 투자했다.
수익의 시대: 적절한 아키텍처가 마련되면서 Pinterest는 단순히 수평적으로 확장하여 성장 궤도를 유지할 수 있었다.
Pinterest는 안정성, 확장성, 유지보수성이 뛰어난 MySQL, Memcache, Redis, Solr 등의 기술을 핵심 기술로 선택했다. 데이터베이스 클러스터링의 복잡성과 문제점을 겪은 후 데이터 분할(sharding) 방식을 채택했다. 이를 통해 단순하고 관리 가능한 아키텍처를 구축할 수 있었다.
Pinterest의 확장 여정은 기술 선택의 중요성, 확장성 우선, 수평적 확장 설계의 가치를 보여준다. 이는 급격한 성장을 겪는 기업들에게 유용한 교훈이 될 것이다.
Stats
Pinterest는 2년 만에 월간 수십억 페이지뷰를 달성했다.
Pinterest는 6명의 엔지니어로 1,100만 명의 사용자를 확보했다.
Quotes
"데이터베이스 클러스터링은 하나의 데이터베이스 인스턴스 또는 서버를 여러 개 연결하는 과정이다. 일반적으로 클러스터에는 마스터라고 불리는 단일 데이터베이스 서버가 관리한다."
"한 경우에는 새로운 보조 노드를 추가했는데, 약 80%에서 보조 노드가 주 노드라고 말하면서 주 노드가 보조 노드가 되어 데이터의 20%를 잃어버렸다. 전부 잃는 것보다 20%를 잃는 것이 더 나쁘다. 왜냐하면 무엇을 잃었는지 알 수 없기 때문이다."