figma3분 읽기

큐레이션 요약

피그마의 차세대 데이터 캐싱 플랫폼 | 피그마 블로그

원문 읽기(새 탭에서 열림)

Figma는 Redis 기반 캐싱 인프라가 성장하면서 연결 수 한계, 급격한 확장 시 연결 폭주, 관측성 부족 등으로 가용성 위협이 커지자 이를 근본적으로 재설계했다. 그 결과 stateless RESP 프록시인 FigCache를 구축해 Redis 연결과 클라이언트 서비스 규모를 분리하고, 라우팅·보안·관측성을 중앙화했다. 2025년 하반기 핵심 API에 도입한 이후 캐싱 계층은 99.9999% 가동률을 달성했다.

Redis 캐싱 인프라의 성장통

  • Figma의 Redis는 단순한 보조 구성 요소에서 사이트 가용성에 직접 영향을 주는 핵심 의존성으로 발전했다.
  • Redis 클러스터의 연결 수가 한계에 가까워졌고, 클라이언트 서비스가 빠르게 확장될 때 대규모 연결 생성이 동시에 발생하는 ‘thundering herd’ 문제가 나타났다.
  • 중앙화된 트래픽 관리와 일관된 접근 방식이 없어 애플리케이션이 서로 다른 클러스터의 데이터를 오염시키거나 손상시킬 위험이 있었다.
  • 클라이언트 라이브러리마다 관측 기능이 달라 장애 원인 분석과 대응이 어려웠다.
  • 장애 조치나 토폴로지 변경 시 클라이언트 상태가 올바르게 유지되는지 전체 서비스에 일관된 보장을 제공하기도 어려웠다.
  • Figma는 일부 API 시스템에서 Redis 의존성을 제거하고, 서비스별 연결 풀링을 도입해 단기적으로 장애 영향을 줄였지만 장기적인 공통 플랫폼이 필요하다고 판단했다.

장기적인 설계 목표

  • 클라이언트 연결 변동성으로부터 Redis 격리
    • Redis가 처리하는 연결 수를 클라이언트 애플리케이션의 규모와 탄력적 확장성에서 분리한다.
    • 서비스가 급격히 확장될 때 Redis로 연결 요청이 몰리는 현상을 막는다.
  • 기본 제공 observability
    • 서비스 소유자와 플랫폼 운영자가 멀티테넌트 환경에서 개별 워크로드의 가용성과 성능을 확인할 수 있도록 한다.
    • 여러 계층에서 일관되고 세밀한 모니터링 기능을 제공한다.
  • 투명한 수평 확장
    • 클라이언트가 인프라 확장이나 축소를 직접 알 필요 없도록 한다.
    • 클러스터 확장·축소, 노드 장애 조치, 샤드 전체 손실 같은 복잡한 Redis Cluster 동작을 클라이언트 라이브러리 아래 계층에서 처리한다.
  • 단일 범용 엔드포인트
    • 여러 Redis 클러스터를 애플리케이션별 개별 설정 없이 중앙 라우팅한다.
    • 클러스터 격리 수준, 내구성, 중요도, 트래픽 규모가 서로 다른 환경의 분할 결정을 중앙에서 관리한다.
  • 대체 저장소의 플러그인 가능성
    • 같은 프로토콜과 API를 유지하면서 필요에 따라 진정한 내구성을 제공하는 다른 저장 기술을 연결할 수 있도록 한다.
  • 기본 확장성
    • 인라인 데이터 암호화, 보호 장치(guardrail), 트래픽 백프레셔 등 Figma 고유의 데이터 플레인 기능을 애플리케이션마다 반복 구현하지 않도록 한다.

FigCache의 구조와 역할

  • FigCache는 stateless RESP-wire-protocol 프록시 서비스다.
  • Redis 데이터 플레인과 진입 계층 역할을 하며, 애플리케이션에는 언어와 무관한 일관된 Redis 인터페이스를 제공한다.
  • 여러 Redis 클러스터와 백엔드 사이의 트래픽 라우팅 및 클러스터 관리 복잡성을 애플리케이션에서 숨긴다.
  • 연결 멀티플렉서로 동작해 클라이언트 서비스의 연결 변동이 Redis에 직접 전달되지 않도록 한다.
  • FigCache 자체와 함께 Figma가 관리하는 전용 클라이언트 라이브러리를 제공해 캐싱 스택 전반의 동작을 표준화한다.

플랫폼 전환의 효과

  • Redis 연결 확장성과 클라이언트 서비스의 용량 변동을 분리할 수 있게 됐다.
  • 중앙화된 라우팅으로 애플리케이션이 여러 클러스터의 엔드포인트를 직접 관리할 필요가 줄었다.
  • 보안 정책과 트래픽 제어를 공통 계층에서 적용할 기반이 마련됐다.
  • 전체 캐싱 스택에 걸친 종합적인 관측성을 확보했다.
  • 2025년 하반기 Figma의 메인 API 서비스에 적용한 뒤 캐싱 계층은 99.9999% 가동률이라는 안정성 목표를 달성했다.

실용적인 시사점

Redis를 서비스의 핵심 경로에서 사용할 때는 개별 애플리케이션의 연결 풀링만으로 문제를 해결하기보다, 연결 중계·라우팅·클러스터 토폴로지 관리·관측성을 공통 플랫폼으로 분리하는 것이 효과적이다. 특히 클라이언트 수가 탄력적으로 변하는 환경에서는 프록시 계층을 통해 Redis가 직접 연결 폭주를 겪지 않도록 설계하는 것이 중요하다.

큐레이션 요약을 이어서 읽어보세요.