S3 기반의 새로운 세션 취소 아키텍처 개선 방안에 대한 상세 내용입니다.
- 수억 명의 사용자 세션 관리를 위해 Canva는 쿠키 기반 정보 저장 및 '인메모리 캐시'를 활용한 빠른 세션 해지(취소) 검증 시스템을 사용해 왔습니다.
- 하지만 시스템 규모가 커짐에 따라, 수백 개의 게이트웨이 파드(Pod)가 배포/시작 시 데이터베이스(MySQL)에서 백만 건 이상의 취소 데이터를 한 번에 가져오면서 DB에 심각한 과부하가 걸리는 병목 현상이 발생했습니다.
- 기존 데이터베이스나 Redis 클러스터 대신, 비용이 저렴하고 대용량 파일 읽기에 최적화된 AWS S3를 중간 캐시 저장소로 도입했습니다.
- 시간 단위 분할: 지속적으로 변화하는 데이터를 처리하기 위해 해지 기록을 30분 단위의 청크(Chunk)로 분할하여 S3 객체로 저장합니다.
- 이진 데이터 형식 최적화: 데이터를 비트 조작을 통해 16바이트 평면 배열(바이너리) 형식으로 압축 및 정렬하여 저장했습니다. 이를 통해 Java 객체 생성 오버헤드를 줄이고 효율적인 이진 검색이 가능해졌습니다.
- 동시성 및 리더 선출: 비동기 워커가 DB의 최신 데이터를 S3로 업로드하며, 데이터 경쟁을 막기 위해 S3 조건부 PUT(낙관적 동시성 제어) 및 ZooKeeper 리더 선출 기능을 활용했습니다.
- 성능 및 인프라 개선: 배포 속도가 크게 향상되었고, 세션 해지 DB의 읽기 복제본 수를 이중화를 위한 2개 수준으로 줄였습니다.
- 메모리 절약: 조밀한 바이너리 배열 구조를 사용하여 게이트웨이 캐시의 메모리(Java 힙) 사용량을 기존 대비 87.5% 감소시켰습니다.
- 예측 가능성: 이전에는 배포 시점 및 과거 쓰기 횟수에 따라 DB 부하가 불규칙했으나, 현재는 쓰기 처리량과 전체 사이트 트래픽에 맞춰 부하가 예측 가능하게 확장됩니다.
결과 및 교훈
새로운 세션 해지 시스템으로 마이그레이션한 후 배포 속도를 향상시키고 세션 해지 데이터베이스의 읽기 복제본 수를 줄여 이중화를 위해 두 개만 유지할 수 있었습니다. 또한 새로운 바이너리 형식 덕분에 각 해지마다 Java 힙에 여러 객체를 저장하는 오버헤드가 사라져 캐시의 메모리 사용량이 87.5% 감소했습니다. 이전에는 데이터베이스 부하가 수 시간 동안 발생한 이전 쓰기 횟수와 특정 시점에 캐시를 다운로드하려는 게이트웨이 인스턴스 수에 따라 달라졌습니다. 새로운 솔루션을 도입한 후에는 부하가 쓰기 처리량과 전체 사이트 트래픽에 따라 예측 가능하게 확장됩니다.
이 프로젝트에서 가장 중요한 교훈은 이론과 실제 확장성의 차이입니다. 언뜻 보면 단일 워커가 수십만 개의 레코드를 지속적으로 정렬하는 것이 비효율적으로 보일 수 있지만, 실제 테스트 결과 워커의 처리량이 요구 사항을 훨씬 뛰어넘는 것으로 나타났습니다. 상수 요소는 매우 중요합니다. 최신 시스템은 고밀도 배열 처리에 매우 뛰어나기 때문에, 단일 배열에서 수십만 건의 취소 데이터를 처리하는 경우에도 워커 구현의 병목 현상은 네트워크 지연 시간에 의해 발생합니다.
AI 코딩 에이전트 시대에는 원하는 클라우드 플랫폼에서 분산 시스템 설계의 모의 구현을 손쉽게 테스트할 수 있습니다. 저희는 문제 해결을 위해 여러 가지 솔루션을 구현하고 실제 인프라에서 예상 규모로 테스트했습니다. 이를 통해 확장성 요구 사항을 충족하는 최적의 접근 방식을 선택할 수 있었습니다. 개념 증명(PoC)을 개발한 후, 광범위한 엔드투엔드 테스트와 꼼꼼한 사람 검토를 거쳐 프로덕션 버전이 사용자에게 안전하게 제공될 수 있도록 했습니다.
출처 : https://www.canva.dev/blog/engineering/session-revocations-at-scale/
'AX_업계 읽기' 카테고리의 다른 글
| AI 에이전트 30개 써도 사장님은 한 명이다 (0) | 2026.09.09 |
|---|---|
| AI 검색, 6개월 만에 1등이 바뀌었다 (0) | 2026.09.09 |
| AI가 다 해주는 시대, 우리 후배들은 뭘 보고 배워야 하죠? (맥킨지 인사이트 요약) (0) | 2026.09.08 |
| AI 샀는데 왜 야근이 늘었지? (feat. AI 도입의 함정) (0) | 2026.09.08 |
| 딱 한 번 화면 녹화만 하면 AI가 알아서 업무 자동화를?? (0) | 2026.08.10 |