Canva는 어떻게 수억 건의 사용자 세션을 빠르고 안전하게 유지할까?

(news.hada.io)
GeekNewsSaaS
Canva는 어떻게 수억 건의 사용자 세션을 빠르고 안전하게 유지할까?

Canva가 대규모 사용자 세션 검증 시 발생하는 MySQL 병목 현상을 해결하기 위해, 세션 취소 기록을 16바이트 단위의 압축된 바이너리 형태로 S3에 저장하고 게이트웨이가 이를 직접 이진 탐색하도록 설계하여 메모리 사용량을 87.5% 절감한 사례를 다룹니다.

이 글의 핵심 포인트

  • 1배포 시 수백 개의 게이트웨이가 MySQL에서 100만 건 이상의 취소 기록을 읽는 병목 현상 발생
  • 2최근 12시간의 데이터를 30분 단위 S3 객체로 나누고, 각 기록을 16바이트로 압축·정렬하여 저장
  • 3게이트웨이가 별도의 변환 없이 내려받은 바이트 배열에서 직접 이진 탐색(Binary Search) 수행
  • 4S3 조건부 PUT과 ZooKeeper 리더 선출을 통해 비동기 워커 간의 데이터 갱신 유실 방지
  • 5시스템 전환 후 메모리 사용량 87.5% 감소 및 단일 워커 초당 2,000건 이상의 쓰기 처리량 달성

이 글에 대한 공공지능 분석

왜 중요한가?

대규모 트래픽을 처리하는 시스템에서 인프라 비용과 성능 사이의 최적점을 찾는 혁신적인 아키텍처 전환 사례이기 때문입니다. 단순히 고가의 솔루션을 도입하는 대신, 데이터 구조를 재설계하여 기존 클라우드 스토리지(S3)를 고성능 캐시처럼 활용한 점이 핵심입니다.

어떤 배경과 맥락이 있나?

수억 명의 사용자를 보유한 Canva와 같은 플랫폼은 세션 무효화(로그아웃, 권한 변경) 정보를 모든 서버에 실시간으로 전파해야 하는 과제를 안고 있습니다. 기존에는 MySQL을 통해 이 정보를 공유했으나, 서버 증설 및 배포 시 발생하는 DB 부하가 서비스 안정성을 위기 수준으로 몰아넣었습니다.

업계에 어떤 영향을 주나?

Redis와 같은 별도의 캐시 레이어를 추가하여 복잡성을 높이는 대신, S3의 조건부 요청(Conditional GET/PUT) 기능을 활용해 데이터 일관성과 비용 효율성을 동시에 잡을 수 있음을 보여줍니다. 이는 대규모 분산 시스템 설계 시 '새로운 기술 도입'보다 '기존 인프라의 창의적 재구성'이 더 강력한 해법이 될 수 있음을 시사합니다.

한국 시장에 어떤 시사점이 있나?

급격한 트래픽 성장을 겪는 한국의 유니콘 스타트업들에게, 인프라 확장 시 발생하는 비용 압박을 해결할 기술적 돌파구를 제시합니다. 데이터 구조 최적화와 비동기 처리를 통해 클라우드 비용을 절감하면서도 시스템의 확장성(Scalability)을 확보하는 엔지니어링 역량의 중요성을 강조합니다.

이 글에 대한 큐레이터 의견

이 사례는 '인프라의 단순화'가 어떻게 성능 향상으로 이어질 수 있는지를 보여주는 교과서적인 예시입니다. 많은 개발자가 트래픽 증가 시 Redis 클러스터 확장이나 DB 샤딩 같은 복잡한 해결책을 먼저 떠올리지만, Canva는 데이터의 특성(슬라이딩 윈도우)을 분석하여 S3라는 저비용 저장소를 고효율 검색 엔진처럼 활용했습니다. 특히 16바이트 바이너리 포맷과 이진 탐색을 결합해 메모리 사용량을 87.5%나 줄인 점은 데이터 구조 설계의 힘을 증명합니다.

다만, 이러한 접근 방식에는 명확한 트레이드오프가 존재합니다. S3를 활용한 청크 업데이트 방식은 쓰기 작업 시 전체 배열을 다시 쓰는 $O(N^2)$의 복잡도를 가질 수 있으며, 이는 데이터 양이 폭발적으로 증가할 경우 워커의 병목으로 이어질 위험이 있습니다. 따라서 이 설계는 '세션 취소'라는 특정 도메인의 데이터 패턴이 예측 가능하고 제어 가능하다는 전제하에 작동하는 최적화입니다.

스타트업 창업자 관점에서는, 무분별한 기술 스택 확장이 오히려 운영 복잡도와 비용을 높일 수 있음을 인지해야 합니다. 서비스의 핵심 데이터 패턴을 깊이 이해하고, 이를 기존 인프라에 맞춰 재설계할 수 있는 엔지니어링 역량을 확보하는 것이 진정한 확장성을 만드는 길입니다.

원문 보기 →

관련 뉴스

댓글

아직 댓글이 없습니다. 첫 댓글을 남겨보세요.