DNS 빌드 지연을 절반으로 줄이고 메모리 사용량을 85% 절감한 방법

3 hours ago 3

Cloudflare가 변경 범위만 재빌드하는 플래너와 통합 스케줄러를 도입해, 일부 영역 설정 변경이 수천만 개 DNS 레코드 전체를 다시 처리하던 문제를 해결함 플래너는 이벤트와 실행 직전 데이터베이스 상태를 확인해 안전성을 입증할 수 있는 최소 작업을 선택하며, 변경 내용을 알 수 없으면 원칙적으로 전체 빌드를 수행함 같은 영역에 쌓인 변경을 하나로 합치되 Kafka 메시지 완료 추적은 별도로 유지해, 재시도나 작업 병합 과정에서 변경을 잃지 않도록 함 도입 후 전체 빌드 횟수가 약 40% 감소했으며, 피크 메모리는 79GiB에서 12GiB로 85% 감소함 확보한 처리 여유와 뒤처진 복제본 읽기 거부 기능을 바탕으로 대기 시간을 단축해 빌드 완료 지연 중앙값을 약 7.7초에서 3.3초로 줄임. Quicksilver의 네트워크 전파 시간은 제외한 수치임 DNS 변경을 엣지 데이터로 만드는 과정 2022년 DNS 전파 파이프라인 개선 당시 Zone Builder는 초당 약 250건의 레코드 변경을 받았으나, 현재는 약 700건의 레코드 변경과 100건의 기타 이벤트를 처리함 문제는 이벤트 수보다 영역 크기에 따라 늘어나는 작업량임 일부 DNS 영역은 이미 2,000만 개 이상의 레코드를 보유하며, 앞으로 수억 개까지 늘어날 것으로 예상함 빌드는 현재 데이터베이스 상태를 읽어 권한 DNS 서버가 사용하는 형식으로 변환하고, 변경분을 Quicksilver에 기록하는 작업임 고객의 DNS Records API 또는 대시보드 변경, 다른 서비스의 영역 설정 변경이 데이터베이스에 저장됨 데이터베이스나 다른 시스템이 Kafka 이벤트를 생성하면 DNS Kafka Aggregator가 여러 토픽의 이벤트를 합쳐 Zone Builder로 전달함 Zone Builder가 필요한 데이터를 키로 변환해 기존 Quicksilver 데이터와 비교하고 변경분만 기록하면, Quicksilver가 이를 글로벌 네트워크로 전파함 Zone Builder는 행을 그대로 복사하지 않고 레코드와 영역 설정을 결합하고 DNS 응답 규칙을 적용해, 권한 DNS 서버가 빠르게 읽을 수 있도록 결과를 구성함 2022년 레코드별 빌드는 전체 빌드보다 평균 150배, 레코드 100만 개의 테스트 영역에서는 4,250배 빨랐음 다음 과제는 영역 설정 변경에도 같은 접근을 적용하는 것이었으나, 여러 제품에서 발생하는 영역 이벤트는 변경 이유가 불분명하거나 같은 ...

Read Entire Article




피플앤툴즈 네트워크
🛍 샵