system-design

4 개의 포스트

실패는 피할 수 없습니다: (새 탭에서 열림)

2023년 3월, 데이터독(Datadog)은 인프라의 약 50~60%가 중단되는 대규모 장애를 겪으며 시스템의 일부가 마비될 때 플랫폼 전체가 완전히 다운된 것처럼 보이는 '정방형 파형(Square-wave)' 장애 패턴을 확인했습니다. 이를 계기로 데이터독은 모든 장애 상황을 완벽히 방지하는 것은 불가능하다는 점을 인정하고, 장애 발생 시에도 시스템이 점진적으로 기능을 유지하는 '우아한 성능 저하(Graceful Degradation)'를 최우선 가치로 삼게 되었습니다. 데이터 유실 방지, 실시간 데이터 우선 처리, 부분적인 결과 제공을 핵심 원칙으로 설정하여 인프라 전반의 회복 탄력성을 재설계하는 대대적인 변화를 추진하고 있습니다. **"결함 없음" 설계의 한계와 Square-wave 장애** - 과거 데이터독은 데이터의 '정확성'을 보장하기 위해 100% 완벽한 데이터가 수집될 때까지 쿼리 결과를 반환하지 않도록 시스템을 최적화했습니다. - 이러한 설계는 일부 노드가 다운되었을 때 시스템 전체가 응답을 멈추게 하여, 사용자에게는 플랫폼이 완전히 중단된 것처럼 보이는 이진적(Binary) 장애를 초래했습니다. - 고전적인 근본 원인 분석(RCA)을 통해 특정 트리거를 제거할 수는 있지만, 소프트웨어 업데이트, 인증서 만료 등 무한한 장애 원인을 모두 예방하는 것은 불가능하다는 결론에 도달했습니다. **우아한 성능 저하를 위한 새로운 우선순위** - 시스템 구성 요소가 완벽하게 작동해야만 가치를 제공하는 '결함 방지(Never-fail)' 아키텍처에서 '더 잘 실패(Fail better)'하는 구조로 전환했습니다. - 데이터 유실 방지: 처리가 늦어지더라도 고객의 데이터가 영구적으로 사라지지 않도록 보장합니다. - 실시간성 우선: 가용 자원이 부족할 때 오래된 데이터보다 실시간 데이터를 우선적으로 처리하여 현재 상태를 파악할 수 있게 합니다. - 부분 결과 제공: 모든 데이터가 준비되지 않았더라도 정확도가 확인된 범위 내에서 부분적인 데이터를 즉시 시각화합니다. **데이터 유실 방지를 위한 영구적 수집 저장소(Persistent Intake Storage)** - 장애 당시 메모리나 로컬 디스크에만 머물던 미복제 데이터가 노드 유실과 함께 사라졌던 문제를 해결하기 위해 파이프라인 초기 단계에 디스크 기반 영구 저장소를 도입했습니다. - 수집(Intake) 직후 데이터를 복제된 저장소에 즉시 기록함으로써, 후속 처리 시스템이 정체되거나 노드가 유실되더라도 데이터 손실 없이 재처리가 가능하도록 설계했습니다. - 이를 통해 네트워크 지연이나 하위 시스템의 과부하 상황에서도 데이터 수집 단계에서의 안정성을 확보했습니다. 모든 장애를 차단하려는 시도보다는, 장애 상황에서도 시스템이 어떻게 부분적으로나마 작동할 수 있을지를 설계 단계부터 고민해야 합니다. 대규모 분산 시스템을 운영한다면 데이터의 완전성(Completeness)과 가용성(Availability) 사이의 균형을 재검토하고, 최악의 순간에도 사용자에게 최소한의 가시성을 제공할 수 있는 복구 탄력성을 구축하는 것이 권장됩니다.

자네, 해커가 되지 않겠나? Hack Day 2025에 다녀왔습니다! (새 탭에서 열림)

LY Corporation의 'Hack Day 2025'는 19년째 이어져 온 전통 있는 사내 해커톤으로, 직무와 국적에 상관없이 구성원들이 자유롭게 아이디어를 기술로 구현하는 혁신적인 개발 문화를 상징합니다. 참가자들은 24시간 동안 몰입하여 프로토타입을 제작하며, 'Perfect the Details' 정신을 바탕으로 기술적 검증과 협업의 가치를 실현합니다. 이번 행사는 단순한 개발을 넘어 글로벌 동료들과의 네트워크를 강화하고 창의적인 시도를 장려하는 LY Corporation만의 독보적인 기술 축제로 자리매김했습니다. **자유로운 협업과 글로벌 팀 빌딩** * 과거 야후 재팬 시절부터 시작되어 19회차를 맞이한 Hack Day는 기획자, 디자이너, HR 등 사내 구성원 누구나 참여할 수 있는 열린 행사입니다. * 온/오프라인 밋업과 Zoom, Miro 등의 툴을 활용해 한국, 일본, 대만, 베트남 등 다양한 국가의 멤버들이 'Global Mixed Team'을 구성하여 협업합니다. * 하이브리드 워크 환경에 맞춰 이동 시간 및 업무 집중 시간을 보장하는 'Travel Day' 제도를 통해 원격 근무자들이 오프라인에서 밀도 있게 협업할 수 있는 환경을 제공합니다. **몰입을 돕는 환경과 해커톤의 문화** * 행사 기간 동안 오피스의 한 층을 통째로 사용하며, 팀별 독립 공간과 화이트보드, 모니터 등 개발에 필요한 인프라를 전폭적으로 지원합니다. * 1일 차 오전 9시, 전 참가자가 모여 "Hack Time!"을 외치는 개회 선언을 통해 행사의 본격적인 시작을 알리는 전통이 있습니다. * 에너지 소모가 큰 해커톤 특성을 고려하여 시간대별로 도넛, 컵라면 등 다양한 간식과 전 세계 법인에서 가져온 이색 먹거리를 무제한 제공하여 개발에만 집중할 수 있게 돕습니다. **AI 모델을 활용한 기술적 실천과 유연한 피보팅** * 실제 프로젝트 사례로 Slack 커뮤니케이션 기록과 AI 모델을 결합해 개개인의 협업 성향을 분석하는 '전투력 측정' 프로그램을 개발했습니다. * 성격 심리학 모델인 'Big 5 Personality'를 도입하여 데이터의 신뢰성을 확보하고, 이를 게임 캐릭터 능력치처럼 시각화하여 재미 요소를 더했습니다. * 개발 마지막 단계에서 포토 프린터 하드웨어 장애라는 변수가 발생하자, 실물 카드 출력 대신 파일 다운로드 방식으로 기획을 신속하게 변경하며 해커톤 특유의 유연한 문제 해결 능력을 발휘했습니다. **성과 공유를 위한 90초 발표와 부스 운영** * 3일 차에는 각 팀이 결과물을 공유하며, 90초라는 엄격한 시간 제한 속에서 핵심 기능과 데모를 선보이는 '라이브 피칭'을 진행합니다. * 발표 후에는 별도의 부스 운영 시간을 통해 심사위원과 다른 참가자들이 직접 서비스를 체험해 보고 기술적인 디테일에 대해 심도 있는 질의응답을 나눕니다. * 창의성, 기술적 완성도, 발표 전달력을 종합적으로 평가하여 시상하며, 이를 통해 사내 기술 트렌드를 공유하고 성취감을 고취합니다. Hack Day와 같은 사내 해커톤은 일상적인 업무에서 벗어나 최신 기술(AI 등)을 실험하고 동료와의 유대감을 쌓을 수 있는 최고의 기회입니다. 기술적 성장에 목마른 조직이라면, 결과물의 완벽함보다는 24시간 동안의 몰입 경험과 그 과정에서 발생하는 유쾌한 시행착오를 장려하는 문화를 구축해 보길 추천합니다.

Figma에서 AI 기반 검색을 (새 탭에서 열림)

피그마의 AI 검색 인프라는 수십억 개의 디자인 레이어를 실시간으로 처리하고 의미론적으로 검색할 수 있도록 구축되었습니다. 대규모 벡터 데이터베이스와 멀티모달 임베딩 모델을 결합하여 단순 텍스트 매칭을 넘어 시각적 유사성을 기반으로 한 검색 경험을 제공합니다. 이 시스템은 데이터 프라이버시를 엄격히 준수하면서도 디자인 파일의 빈번한 수정을 즉각적으로 검색 결과에 반영하는 고성능 데이터 파이프라인을 핵심으로 합니다. **멀티모달 임베딩을 통한 디자인의 수치화** * 디자인 파일 내의 레이어, 텍스트, 이미지를 고차원 벡터로 변환하기 위해 멀티모달 임베딩 모델(예: CLIP 변형 모델)을 사용합니다. * 단순한 시각적 특징뿐만 아니라 디자인의 구조적 맥락과 텍스트 정보를 함께 학습하여 "로그인 페이지", "네비게이션 바"와 같은 추상적인 검색어에도 정확한 결과를 반환합니다. * AWS SageMaker를 활용해 모델 추론을 확장 가능하게 관리하며, 다양한 해상도의 이미지 자산을 효율적으로 처리하기 위한 전처리 과정을 포함합니다. **실시간 변경 사항을 반영하는 증분 인덱싱 파이프라인** * 피그마 디자인은 수시로 수정되기 때문에, 전체 데이터를 다시 인덱싱하는 대신 변경된 부분만 업데이트하는 증분(Incremental) 업데이트 방식을 채택했습니다. * 사용자가 디자인을 수정하면 해당 이벤트가 Kafka를 통해 실시간 스트리밍되며, Flink와 같은 처리 엔진을 거쳐 즉시 벡터 데이터베이스에 반영됩니다. * 이 과정을 통해 수만 명의 사용자가 동시에 작업하는 환경에서도 검색 결과와 실제 디자인 사이의 시차를 최소화합니다. **벡터 데이터베이스와 하이브리드 검색 최적화** * 대규모 벡터 검색을 위해 Pinecone과 같은 전문 벡터 데이터베이스를 활용하여 밀집 벡터(Dense Vector) 검색을 수행합니다. * 단순히 유사도만 측정하는 것이 아니라, 파일 이름, 생성 날짜, 프로젝트 위치 등 구조화된 메타데이터를 함께 필터링하는 하이브리드 검색 방식을 사용합니다. * 검색 성능을 높이기 위해 사용자별, 팀별로 데이터를 논리적으로 분할하여 검색 범위를 최적화하고 응답 속도를 밀리초(ms) 단위로 유지합니다. **엄격한 권한 관리와 데이터 격리** * AI 검색 결과는 피그마의 복잡한 권한 체계(Permissions)를 완벽히 준수해야 하므로, 검색 요청 시 실시간으로 사용자의 접근 권한을 확인하는 레이어가 포함됩니다. * 인덱싱 단계에서부터 각 벡터에 조직 및 파일 식별자(ID)를 메타데이터로 부여하여, 사용자가 접근할 수 없는 디자인 데이터가 검색 결과에 노출되는 것을 원천 차단합니다. * 데이터 보안을 위해 테넌트(Tenant) 간 데이터 격리를 보장하며, 모델 학습과 추론 과정에서도 민감한 정보가 유출되지 않도록 설계되었습니다. 피그마와 같이 데이터 업데이트가 빈번하고 권한 체계가 복잡한 환경에서 AI 검색을 구현하려면, 단순히 성능 좋은 모델을 사용하는 것을 넘어 실시간 데이터 파이프라인과 메타데이터 필터링 시스템을 정교하게 결합하는 것이 필수적입니다. 효율적인 비용 관리와 낮은 지연 시간을 동시에 달성하고자 하는 팀에게 피그마의 증분 인덱싱 및 하이브리드 검색 아키텍처는 훌륭한 벤치마킹 사례가 될 것입니다.

딥 서치 심층 분석 | 피 (새 탭에서 열림)

피그마(Figma)는 웹 브라우저라는 제한된 환경에서 복합적인 그래픽 작업과 실시간 협업을 동시에 구현하기 위해 독자적인 인프라 아키텍처를 구축했습니다. 이들은 성능 한계를 극복하기 위해 C++ 엔진을 웹어셈블리(WebAssembly)로 컴파일하여 사용하며, 모든 사용자가 동일한 상태를 공유할 수 있도록 '파일별 단일 프로세스' 모델 기반의 멀티플레이어 서버를 운영합니다. 결과적으로 피그마는 웹의 접근성과 데이티브 앱의 고성능, 그리고 실시간 동기화라는 세 가지 요소를 성공적으로 결합해냈습니다. ### 웹 기반 고성능 렌더링을 위한 C++와 WebAssembly 활용 * 피그마의 핵심 편집기 엔진은 자바스크립트가 아닌 C++로 작성되었으며, 이를 웹어셈블리(Wasm)로 컴파일하여 브라우저에서 실행합니다. * 이는 복잡한 벡터 계산과 대용량 그래픽 데이터 처리를 네이티브 앱에 가까운 속도로 수행하기 위함이며, 브라우저의 가비지 컬렉션으로 인한 성능 저하 문제를 방지합니다. * 단일 코드베이스를 유지함으로써 웹, 데스크톱 앱(Electron), 모바일 앱 등 다양한 플랫폼에서 동일한 렌더링 결과와 비즈니스 로직을 보장합니다. ### 멀티플레이어 서버와 실시간 상태 동기화 * 피그마의 실시간 협업 엔진은 '중앙 집중식 권한 서버' 모델을 따릅니다. 각 피그마 파일은 멀티플레이어 서버의 특정 프로세스에 할당되어 해당 파일의 유일한 진실 공급원(Source of Truth) 역할을 합니다. * 사용자가 수정을 하면 클라이언트는 변경 사항(Operation)을 서버로 보내고, 서버는 이를 검증한 뒤 파일의 현재 상태에 적용하고 다른 사용자들에게 즉시 전파합니다. * 일반적인 CRDT(Conflict-free Replicated Data Type) 방식의 복잡성을 피하기 위해, 서버가 작업 순서를 결정하는 방식을 채택하여 데이터 정합성을 엄격하게 유지합니다. ### LiveGraph를 통한 효율적인 데이터 구독 * 기존의 REST API 방식은 빈번하게 변하는 디자인 데이터의 업데이트를 실시간으로 반영하기에 비효율적이었습니다. * 이를 해결하기 위해 피그마는 'LiveGraph'라는 커스텀 리액티브 데이터 시스템을 구축했습니다. * 클라이언트가 필요한 데이터의 쿼리를 서버에 등록하면, 데이터베이스에 변경이 발생할 때마다 LiveGraph가 해당 변경 사항을 감지하여 관련 클라이언트에만 실시간으로 업데이트를 푸시합니다. ### 안정성과 확장성을 위한 인프라 계층 구조 * 피그마의 백엔드는 초기 Ruby on Rails 모놀리스에서 시작하여, 현재는 성능이 중요한 서비스들을 Go와 Rust 기반의 마이크로서비스로 점진적으로 분리하고 있습니다. * 데이터 저장소로는 AWS RDS(PostgreSQL)와 S3를 주로 사용하며, 전 세계 사용자에게 낮은 지연 시간을 제공하기 위해 에지 로케이션(PoP)을 활용하여 네트워크 경로를 최적화합니다. * 대규모 트래픽과 복잡한 파일 처리를 위해 수천 개의 멀티플레이어 서버 노드를 동적으로 스케일링하며, 특정 노드 장애 시에도 사용자의 작업을 보호할 수 있는 복구 메커니즘을 갖추고 있습니다. 피그마의 사례는 웹 기술의 한계를 넘기 위해 표준 기술(JS/HTML)에 안주하지 않고, 문제의 본질에 맞는 맞춤형 엔진과 프로토콜을 직접 설계하는 것이 중요하다는 것을 보여줍니다. 고성능 실시간 협업 서비스를 설계한다면 피그마처럼 "단일 소유권 기반의 동기화"와 "플랫폼 중립적인 고성능 코어 엔진"의 조합을 고려해 보는 것이 좋습니다.