design-software

2 개의 포스트

Figma IPO 추진을 위한 로드 (새 탭에서 열림)

피그마(Figma)는 초기 단일 데이터베이스 구조에서 벗어나, 폭발적인 사용자 증가와 데이터 복잡성을 해결하기 위해 아키텍처를 어떻게 진화시켰는지에 대한 기술적 여정을 상세히 공개했습니다. 이 글은 피그마가 단순한 디자인 도구를 넘어 실시간 협업 플랫폼으로서 확장성을 확보하기 위해 선택한 데이터베이스 샤딩 전략과 자체 개발한 동기화 시스템의 핵심 원리를 다룹니다. 결과적으로 피그마는 인프라의 유연성을 확보함으로써 대규모 트래픽 속에서도 데이터 정합성과 낮은 지연 시간을 유지하는 데 성공했습니다. ### 데이터베이스 샤딩을 통한 확장성 확보 피그마는 초기에 모든 데이터를 하나의 거대한 PostgreSQL 데이터베이스에 저장했으나, 트래픽 증가에 따라 한계에 직면했습니다. 이를 해결하기 위해 단계별 샤딩 전략을 도입했습니다. * **수직적 샤딩(Vertical Sharding):** 부하가 큰 특정 테이블들을 별도의 독립된 데이터베이스 인스턴스로 분리하여 I/O 병목 현상을 일시적으로 해소했습니다. * **수평적 샤딩(Horizontal Sharding):** 단일 테이블의 크기가 너무 커지는 문제를 해결하기 위해 데이터를 여러 노드에 분산 저장했습니다. 이때 'Org ID'나 'File ID'와 같은 논리적 단위를 기준으로 데이터를 그룹화하여 쿼리 효율을 높였습니다. * **애플리케이션 계층의 라우팅:** 데이터베이스 수준이 아닌 애플리케이션 계층에서 어떤 셔드(Shard)에 접근할지 결정하는 로직을 구현하여, 인프라 변경이 서비스 코드에 미치는 영향을 최소화했습니다. ### 실시간 협업을 위한 LiveGraph 시스템 디자인 파일의 변경 사항을 수만 명의 사용자에게 실시간으로 전달하기 위해 피그마는 'LiveGraph'라는 독자적인 실시간 업데이트 엔진을 구축했습니다. * **구독 기반 모델:** 사용자가 보고 있는 파일의 특정 부분에 변경이 생기면, LiveGraph가 이를 감지하고 해당 데이터를 구독 중인 클라이언트에게만 즉각 전송합니다. * **데이터 정합성 유지:** 데이터베이스 쓰기 작업과 클라이언트 알림 사이의 간극을 줄이기 위해 트랜잭션 로그를 추적하며, 이를 통해 협업 중 발생하는 데이터 충돌을 효과적으로 방지합니다. * **효율적인 쿼리 처리:** 모든 클라이언트가 전체 데이터를 다시 불러오는 대신, 변경된 차분(Delta) 데이터만 전송함으로써 네트워크 대역폭 소모를 획기적으로 줄였습니다. ### 성능 최적화와 안정성 관리 인프라가 복잡해짐에 따라 발생할 수 있는 장애를 방지하고 성능을 일정하게 유지하기 위한 다양한 기술적 장치를 마련했습니다. * **쿼리 격리 및 제한:** 특정 사용자의 과도한 요청이 전체 시스템에 영향을 주지 않도록 'Noisy Neighbor' 문제를 차단하는 쿼리 제한(Throttling) 메커니즘을 도입했습니다. * **자동화된 마이그레이션:** 데이터베이스 스키마 변경 시 서비스 중단을 방지하기 위해 가동 중지 시간 없이 수행되는 온라인 마이그레이션 도구를 자체 개발하여 운영 안정성을 높였습니다. * **모니터링 고도화:** 각 샤드별 부하 상태와 쿼리 응답 시간을 실시간으로 추적하여, 병목 구간을 사전에 예측하고 대응할 수 있는 가시성을 확보했습니다. 성공적인 확장은 단순히 서버를 늘리는 것이 아니라, 서비스의 특성(실시간성, 고용량 데이터)에 맞는 데이터 분산 모델을 설계하는 데서 시작됩니다. 피그마의 사례는 서비스 초기부터 확장성을 고려한 아키텍처 설계가 장기적으로 기술 부채를 줄이고 비즈니스 성장을 뒷받침하는 핵심 동력이 됨을 시사합니다.

빌드 비하인드: (새 탭에서 열림)

Figma는 FigJam을 단순한 화이트보드 도구를 넘어 팀의 전체 워크플로우를 통합하는 핵심 플랫폼으로 진화시키기 위해 새로운 가격 정책과 개방형 플랫폼 전략을 발표했습니다. 이번 업데이트는 더 많은 팀이 비용 부담 없이 협업을 시작하고, API와 플러그인을 통해 업무 프로세스를 자동화할 수 있도록 돕는 데 초점으 맞추고 있습니다. 이를 통해 아이디어 구상부터 실제 제품 개발까지의 간극을 좁히고 팀의 생산성을 극대화하는 것을 목표로 합니다. **FigJam 가격 정책의 변화와 접근성 확대** * **유연한 요금제 도입:** 다양한 팀 규모와 요구사항에 맞춰 가격 구조를 개편하여, 소규모 팀부터 대규모 엔터프라이즈 기업까지 최적의 비용으로 FigJam을 사용할 수 있도록 했습니다. * **무료 사용자 경험 강화:** 더 많은 사용자가 제약 없이 협업을 경험할 수 있도록 무료 플랜의 혜택을 조정하고, 유료 기능으로의 전환 장벽을 낮췄습니다. * **Figma 디자인과의 시너지:** Figma 디자인 사용자들이 FigJam을 더욱 유기적으로 활용할 수 있도록 통합된 라이선스 경험을 제공하여 도구 간 전환 비용을 줄였습니다. **더욱 강력해진 개방형 플랫폼과 생태계 구축** * **FigJam API 및 위젯 기능 확장:** 개발자들이 FigJam 내에서 직접 작동하는 맞춤형 위젯을 만들거나, API를 통해 외부 데이터를 화이트보드에 실시간으로 반영할 수 있게 되었습니다. * **워크플로우 자동화:** 반복적인 작업(예: 포스트잇 정리, 데이터 시각화)을 플러그인을 통해 자동화함으로써 팀이 창의적인 문제 해결에 더 집중할 수 있는 환경을 조성했습니다. * **서드파티 통합 강화:** 기존에 사용하던 업무 도구들과 FigJam을 긴밀하게 연결하여, 화이트보드에서 논의된 내용이 즉시 실행 가능한 태스크로 전환될 수 있도록 지원합니다. **아이디어와 실행의 연결성 강화** * **비주얼 커뮤니케이션의 표준화:** 단순한 드로잉 도구를 넘어 시스템 다이어그램, 사용자 흐름도 등을 더 정교하게 제작할 수 있는 기능들을 추가했습니다. * **실시간 피드백 루프:** 팀원들이 장소에 구애받지 않고 실시간으로 의견을 나누고 의사결정을 내릴 수 있는 동기부여 요소들을 플랫폼 전반에 배치했습니다. **실용적인 제언** 팀 내에서 FigJam을 단순히 일회성 브레인스토밍 도구로만 사용하지 말고, 새롭게 공개된 API와 위젯을 활용해 Jira나 GitHub 등 기존 업무 관리 도구와 연동해 보시기 바랍니다. 이를 통해 회의 결과가 누락 없이 실제 개발 태스크로 이어지는 진정한 협업 허브를 구축할 수 있습니다.