Marginalia Search가 Docker에서 systemd로 전환하며 운영 복잡성을 크게 줄였음
비순위 쿼리(Unranked Query) 엔드포인트 신설로 쿼리 처리 속도를 획기적으로 개선함
광범위한 도메인 인덱싱(Wide Domain Indexing)을 분리하여 크롤링 시간을 절반으로 단축함
NUMA, 프로세스 생명주기, IP 주소 관리 등 Docker의 한계를 systemd로 극복함
커뮤니티에서는 Marginalia Search가 Docker Compose 기반 배포에서 systemd로 전환한 이유로 NUMA 아키텍처, 복잡한 프로세스 생명주기 관리, 다중 IP 주소 활용 등 Docker의 네트워킹 및 관리 모델의 한계를 지적함. 특히 Docker의 ipvlan 지원 방식이 IP 주소 관리 및 방화벽 설정에 제약을 준다는 점이 부각됨. 반면 systemd는 더 세밀한 제어(Finer Control)와 안정성(Stability)을 제공하며, 특히 복잡한 시스템 구성에 강점을 보인다고 언급됨.
논의에서는 비순위 쿼리(Unranked Query) 엔드포인트 도입으로 검색 엔진의 쿼리 처리 파이프라인(Query Execution Pipeline) 비용이 절감되었다고 설명함. 순위 결정(Ranking) 과정이 불필요한 쿼리들을 별도 엔드포인트로 분리하여, 단순 용어 교차(Term Intersection)만 수행하도록 설계함. 이를 통해 쿼리 실행 시간을 기존 대비 하고, 로 처리하여 스레드 풀 부하를 줄이는 효과를 얻었다고 함.
댓글에서는 서브도메인(Subdomain)의 파레토 분포(Pareto Distribution)와 크롤러의 폴라이트니스(Crawler Politeness) 요구사항이 크롤링 시간의 주요 병목임을 지적함. 특히 tumblr.com, blogspot.com 등 특정 상위 도메인에 속한 수많은 서브도메인이 동시 크롤링을 제한하여 전체 크롤링 완료까지 수 주가 소요되었음. 이를 해결하기 위해 별도의 광범위 도메인 크롤러 파티션(Separate Wide Domain Crawler Partition)을 도입하여 병렬 처리함으로써 메인 크롤러의 완료 시간을 2주에서 5일로 단축했다고 함.
커뮤니티에서는 Docker Compose 설정을 systemd 서비스 파일로 자동 변환하는 도구에 대한 질문이 있었으나, 명확히 확립된 솔루션은 없는 것으로 보임. Marginalia Search 개발자는 직접 .service 파일을 작성했으며, Docker Compose의 제약을 벗어나는 systemd의 장점(예: drop-ins를 통한 설정 오버라이드) 때문에 완전한 자동 변환보다는 개별 서비스 파일 관리가 더 효과적이라고 언급함. 이는 systemd의 유연성(Flexibility)과 제어력(Control)을 강조하는 부분임.