왜 우리는 테넌트당 하나의 Elasticsearch 인덱스를 사용 중단하고 자체적으로 구축했는가
(dev.to)
테넌트별 독립된 인덱스를 유지하면서도 클러스터 상태 부하를 줄이기 위해 S3 기반의 분리된 스토리지 구조를 채택한 SeaSearch의 등장은 멀티테넌트 검색 엔진의 확장성 문제를 해결할 새로운 기술적 대안을 제시합니다.
이 글의 핵심 포인트
- 1테넌트당 하나의 인덱스를 사용하는 방식은 클러스터 상태(Cluster State)의 비대화로 인해 대규모 테넌트 운영 시 마스터 노드에 과부하를 유발함
- 2SeaSearch는 인덱스 데이터를 S3에 저장하고 컴퓨팅 노드는 메타데이터만 관리하여 데이터 복제 없이 테넌트 확장이 가능함
- 3etcd를 사용하여 클러스터 메타데이터와 파티션 소유권 맵을 관리하며, 프록시가 요청을 적절한 노드로 라우팅함
- 4S3의 높은 레이턴시 문제를 해결하기 위해 불변 세그먼트(Immutable Segments) 기반의 로컬 디스크 캐싱과 병렬 워밍업 기술을 사용함
- 5데이터의 활성 영역(Working Set)이 전체 데이터의 일부인 워크로드에서 가장 효율적이며, 대규모 쿼리는 분산 실행을 통해 처리함
이 글에 대한 공공지능 분석
왜 중요한가?
멀티테넌트 SaaS 환경에서 테넌트 수가 급증할 때 발생하는 인프라 비용과 운영 복잡도를 근본적으로 해결할 수 있는 아키텍처를 제안하기 때문입니다.
어떤 배경과 맥락이 있나?
기존 Elasticsearch는 데이터 격리를 위해 인덱스를 분리할수록 샤드와 클러스터 상태 정보가 늘어나 마스터 노드에 과부하를 주는 구조적 한계를 지니고 있습니다.
업계에 어떤 영향을 주나?
데이터 저장소와 컴퓨팅을 분리함으로써 인프라 비용 최적화와 무제한적인 테넌트 확장이 가능해져, 검색 기능을 핵심으로 하는 SaaS 기업들의 기술적 장벽을 낮출 수 있습니다.
한국 시장에 어떤 시사점이 있나?
글로벌 시장을 타겟으로 하는 국내 SaaS 스타트업들이 테넌트 규모 확장에 따른 인프라 병목 현상을 극복하고 효율적인 비용 구조를 설계하는 데 중요한 참고 사례가 될 것입니다.
이 글에 대한 큐레이터 의견
SeaSearch의 핵심은 '상태가 없는(Stateless) 컴퓨팅 노드'와 '불변(Immutable) 세그먼트'를 활용해 S3의 느린 레이턴시를 효율적인 캐싱 기술로 극복했다는 점입니다. 이는 인프라 비용을 획기적으로 줄이면서도 테넌트 확장을 용이하게 하려는 SaaS 창업자들에게 매우 매력적인 아키텍처적 접근입니다.
하지만 모든 워크로드에 만능은 아닙니다. S3 기반 구조는 데이터의 모든 부분이 빈번하게 액세스되는 'Hot Data' 중심의 워크로드에서는 로컬 NVMe 기반 시스템보다 성능 저하가 발생할 수밖에 없습니다. 따라서 서비스의 데이터 특성이 특정 데이터에 집중되는지, 아니면 전체 데이터에 고르게 분포되는지를 먼저 파악하는 것이 선행되어야 합니다. 기술적 혁신을 도입할 때는 성능 트레이드오프를 정확히 계산하여 서비스의 SLA(Service Level Agreement)를 위협하지 않는 범위 내에서 실행해야 합니다.
관련 뉴스
댓글
아직 댓글이 없습니다. 첫 댓글을 남겨보세요.