scalability

3 개의 포스트

디자인 시스템 다시 생각해보기 (새 탭에서 열림)

디자인 시스템은 성장에 따라 경직되기 마련이며, 시스템이 제품 팀의 변화하는 요구사항을 제때 수용하지 못할 경우 팀은 시스템을 우회하거나 파편화된 코드를 생성하게 됩니다. 토스의 디자인 시스템(TDS)은 디자인 시스템을 통제 수단이 아닌 '하나의 제품'으로 정의하고, 수요자의 니즈에 따라 유연하게 대응할 수 있는 설계 구조를 지향합니다. 이를 위해 단순함과 유연함을 동시에 잡을 수 있는 하이브리드 API 전략을 도입하여 일관성과 생산성을 모두 확보하는 해결책을 제시합니다. ### 시스템의 경직성과 파편화 문제 * 조직이 커지고 제품이 다양해지면 기존 시스템의 제약 내에서 해결할 수 없는 UI 요구사항이 빈번하게 발생합니다. * 제품 팀은 빠른 해결을 위해 피그마 컴포넌트를 해제(detach)하거나 라이브러리 코드를 복제(fork)하여 로컬에서 수정해 사용하게 됩니다. * 이러한 우회 방식은 시스템 업데이트와의 연결을 끊어버려 UI 불일치를 초래하고, 장기적으로 디자인 시스템의 핵심 가치를 무너뜨립니다. * 결국 디자인 시스템이 팀의 속도를 늦추는 장애물이 되지 않으려면, 강력한 규칙보다 '우회할 이유를 줄이는 유연한 설계'가 필요합니다. ### 확장성을 고려한 컴포넌트 API 패턴 비교 * **Flat 패턴**: 내부 구조를 숨기고 모든 변형을 props로 처리하는 방식입니다. 사용이 직관적이고 간결하지만, 예외적인 요구사항이 늘어날수록 props가 기하급수적으로 증가하여 유지보수가 어려워집니다. * **Compound 패턴**: 하위 컴포넌트(Header, Body, Footer 등)를 제공하여 사용자가 직접 조합하는 방식입니다. 시스템이 예측하지 못한 레이아웃도 유연하게 구현할 수 있으나, 코드량이 늘어나고 구조에 대한 학습 비용이 발생한다는 단점이 있습니다. * 두 패턴은 상충하는 장단점을 가지고 있으므로, 단순히 하나의 패턴을 강요하는 것은 사용자의 이탈을 막기에 부족합니다. ### TDS의 하이브리드 전략과 Primitive 레이어 * TDS는 단순하고 빈번한 케이스를 위한 **Flat API**와 복잡한 커스텀을 위한 **Compound API**를 동시에 제공합니다. * 사용자는 별도의 커스텀이 필요 없을 때는 간결한 Flat 형식을 선택하고, 세밀한 제어가 필요할 때는 Compound 형식을 선택하여 시스템 내부에서 문제를 해결할 수 있습니다. * 디자인 시스템 팀은 관리 효율을 위해 **Primitive(기초 단위)** 레이어를 먼저 구축합니다. * 내부적으로는 동일한 Primitive 컴포넌트를 공유하면서 외부로 드러나는 API만 두 가지 형태로 노출함으로써, 유지보수 부담을 최소화하면서도 사용자 경험을 극대화합니다. 디자인 시스템은 팀을 가두는 울타리가 아니라 안전하게 안내하는 가드레일이 되어야 합니다. 중앙에서 모든 것을 통제하려 하기보다, 규칙에서 벗어난 예외 상황까지 시스템 안에서 지원할 수 있는 유연한 설계를 갖출 때 진정한 일관성을 유지할 수 있습니다.

비하인드 더 스트 (새 탭에서 열림)

넷플릭스는 수천만 명의 시청자가 동시에 접속하는 라이브 이벤트 상황에서 시스템 과부하를 방지하면서도 실시간 개인화 추천을 제공하기 위해 '프리페칭(Prefetching)'과 '실시간 브로드캐스팅'이라는 2단계 전략을 도입했습니다. 이 시스템은 이벤트 시작 전 미리 데이터를 기기에 저장해 두었다가, 실제 시작 시점에는 최소한의 신호만 보내 로컬에서 추천 정보를 활성화함으로써 '천둥 번개 효과(Thundering Herd)' 문제를 효과적으로 해결합니다. 이를 통해 넷플릭스는 클라우드 자원을 무리하게 확장하지 않고도 전 세계 수억 대의 기기에 지연 없는 실시간 스트리밍 경험을 제공할 수 있게 되었습니다. **라이브 이벤트와 시동 시간의 제약** * VOD와 달리 라이브 이벤트는 모든 시청자가 특정 시점에 동시에 접속하므로, 짧은 시간 내에 수억 개의 기기에 업데이트를 전달해야 하는 기술적 난관이 존재합니다. * 단순히 서버를 증설하는 선형적 확장은 비효율적이며, 다른 핵심 서비스의 자원을 고갈시킬 위험이 있습니다. * 성공적인 실시간 추천을 위해서는 업데이트 소요 시간(Time), 서비스 처리 용량(Request Throughput), 요청의 다양성(Compute Cardinality)이라는 세 가지 제약 조건을 동시에 최적화해야 합니다. **프리페칭을 통한 트래픽 분산** * 이벤트 시작 전 사용자가 평소처럼 앱을 탐색하는 동안, 라이브 이벤트와 관련된 메타데이터, 아트워크, 개인화된 추천 리스트를 미리 기기 캐시에 저장합니다. * 이를 통해 서버 요청을 시간에 따라 자연스럽게 분산시켜, 이벤트 직전 발생하는 트래픽 스파이크를 제거하고 시스템 안정성을 확보합니다. * 서버 측에서 미리 계산된 '구체화된 추천(Materialized Recommendations)'을 제공함으로써 기기별 요청의 복잡도를 낮춥니다. **저카디널리티 실시간 브로드캐스팅** * 이벤트가 실제로 시작되거나 일정이 변경될 때, 넷플릭스의 푸시 서비스(Zuul Push)를 통해 연결된 모든 기기에 '저카디널리티(Low-cardinality)' 메시지를 전송합니다. * 이 메시지는 복잡한 데이터를 담지 않고 단순히 미리 캐싱된 데이터를 화면에 표시하라는 트리거 역할만 수행하여 네트워크 부하를 최소화합니다. * '최소 한 번(At-least-once)' 전달 방식을 채택하여 네트워크 상태가 불안정한 기기도 다시 온라인 상태가 되면 누락된 업데이트를 즉시 따라잡을 수 있도록 설계되었습니다. **데이터 기반의 동적 적응** * 라이브 이벤트의 특성상 경기 시간이 지연되거나 일정이 변동될 수 있는데, 브로드캐스팅 시스템은 이러한 실시간 제작 상황에 맞춰 전송 타이밍을 동적으로 조절합니다. * 수천만 대의 기기가 동시에 서버에 데이터를 재요청하는 대신 로컬 데이터를 활용하게 함으로써, 전 세계 모든 사용자가 동일한 순간에 일관된 추천 UI를 볼 수 있게 합니다. 라이브 이벤트와 같은 초고부하 상황에서는 무조건적인 서버 증설보다는 클라이언트의 로컬 자원을 활용하고 서버 부하를 시간적으로 분산하는 아키텍처가 필수적입니다. 실시간성이 중요한 서비스라면 모든 데이터를 실시간으로 전송하기보다, 정적인 데이터는 미리 배치하고 상태 변화를 알리는 최소한의 신호만 실시간으로 처리하는 하이브리드 접근 방식을 권장합니다.

차분 프라이버시 파 (새 탭에서 열림)

구글 리서치는 대규모 데이터셋에서 개인정보를 보호하면서도 유용한 데이터를 추출할 수 있는 혁신적인 차분 프라이버시(Differential Privacy, DP) 파티션 선택 알고리즘인 'MAD(MaxAdaptiveDegree)'를 공개했습니다. 이 알고리즘은 수천억 개의 아이템이 포함된 방대한 데이터를 처리할 수 있는 병렬 구조를 갖추고 있으며, 기존 비적응형 방식보다 훨씬 더 많은 유효 데이터를 안전하게 식별해 냅니다. 이를 통해 연구자들은 개별 사용자의 민감한 정보를 노출하지 않으면서도 AI 모델 학습이나 데이터 분석에 필요한 고품질의 데이터셋을 확보할 수 있게 되었습니다. **차분 프라이버시(DP) 파티션 선택의 역할** * **개념 정의:** 수많은 사용자가 기여한 방대한 데이터 집합에서 특정 임계치 이상의 빈도를 가진 공통 아이템(예: 자주 사용되는 단어나 n-gram)을 안전하게 선택하는 프로세스입니다. * **프라이버시 보호:** 특정 개별 사용자의 데이터 포함 여부를 알 수 없도록 제어된 노이즈를 추가하며, 노이즈가 섞인 상태에서도 충분히 공통적인 아이템만 최종 리스트에 포함합니다. * **활용 분야:** 대규모 텍스트 코퍼스의 어휘 추출, 데이터 스트림 분석, 사용자 데이터 기반 히스토그램 생성, 프라이버시 보존형 모델 미세 조정(Fine-tuning)의 효율성 증대 등에 필수적입니다. **기존 가중치 산정 방식의 한계** * **표준 패러다임:** 일반적으로 '가중치 계산(빈도 측정) → 노이즈 추가(가우시안 노이즈 등) → 필터링(임계값 적용)'의 3단계를 거칩니다. * **가중치 낭비:** 기존의 비적응형 방식은 매우 인기 있는 아이템에 필요 이상의 가중치를 할당하는 경향이 있으며, 이로 인해 임계값 바로 아래에 있는 유용한 아이템들이 노이즈에 의해 삭제되는 문제가 발생합니다. * **확장성 문제:** 기존의 순차적(Sequential) 알고리즘은 현대의 거대 데이터셋을 처리하기에 속도가 너무 느려 실무 적용에 한계가 있었습니다. **적응형 가중치 재배분을 통한 MAD 알고리즘의 혁신** * **적응형 가중치(Adaptive Weighting):** MAD 알고리즘은 아이템 간의 가중치를 독립적으로 두지 않고, 다른 사용자의 기여도를 고려하여 전략적으로 가중치를 재할당합니다. * **효율적 재배분:** 임계값을 훨씬 상회하는 인기 아이템의 '과잉 가중치'를 식별하고, 이를 임계값 근처에 있는 아이템들에 재배분하여 더 많은 유효 아이템이 프라이버시 기준을 통과하도록 돕습니다. * **병렬 대규모 처리:** 수천억 개의 아이템을 동시에 처리할 수 있는 병렬 구조로 설계되어, 기존 순차 알고리즘 대비 최대 1,000배 더 큰 규모의 데이터셋까지 확장 가능합니다. * **성능 유지:** 가중치를 재배분하면서도 차분 프라이버시의 핵심인 '낮은 민감도(Low-sensitivity)'와 계산 효율성을 그대로 유지합니다. **실용적 의의 및 권고** 데이터 규모가 커질수록 프라이버시 보호와 데이터 유용성 사이의 균형을 맞추는 것이 어려워지지만, MAD 알고리즘은 병렬 처리를 통해 이 문제를 해결했습니다. 대규모 사용자 데이터를 다루는 연구자나 엔지니어는 구글이 오픈소스로 공개한 'DP 파티션 선택' 라이브러리를 활용하여, 데이터의 유실을 최소화하면서도 강력한 프라이버시 보증을 제공하는 데이터 파이프라인을 구축할 것을 권장합니다.