How Notion Handles 200 BILLION Notes (Without Crashing)
- Notion은 블록 기반 데이터베이스를 사용하여 엄청난 양의 데이터를 저장합니다. 🗄️
- 초기에는 단일 Postgres 데이터베이스를 사용했으나, 200억 개 블록 돌파 후 성능 저하를 겪었습니다. 🐌
- 이를 해결하기 위해 샤딩(sharding) 기법을 도입하여 데이터베이스를 여러 작은 인스턴스로 분산했습니다. 🌐
- 데이터 분석을 위해 Snowflake 데이터 레이크를 활용했으나, 업데이트 처리의 어려움과 비용 문제로 자체 데이터 레이크를 구축했습니다. ❄️
- 자체 데이터 레이크는 Amazon S3, Apache Spark, Apache Kafka, Apache Hoodie 등 오픈소스 기술을 기반으로 구축되어 비용 절감 효과를 가져왔습니다. 💡
- 샤딩 확장에도 불구하고, 다시 한번 성능 저하 문제 발생 후, 데이터베이스 및 pgbouncer 샤딩을 통해 문제를 해결했습니다. 🔄
- 최종적으로, 단계적 데이터베이스 전환을 통해 사용자에게 서비스 중단 없이 시스템을 업그레이드했습니다. ➡️
- Notion의 대규모 시스템 구축 경험은 개발자들에게 귀중한 시사점을 제공합니다. 👨💻