
네이버 검색 SRE - 지진과 비상 대응 시스템
네이버 검색 SRE - 지진과 비상 대응 시스템 관련
잠자던 개발자 L 씨는 2024년 7월 12일 아침 8시 26분 휴대폰에서 재난문자 알림 음을 들었습니다.

알림 음에 깜짝 놀라서 깬 L 씨는 지진 재난문자를 보고 바로 네이버 메인에서 지진을 검색하고 뉴스 속보를 확인했습니다. 개발자 L 씨뿐만 아니라 재난문자를 받은 수많은 사람이 똑같이 네이버에서 동시에 지진을 검색했습니다. 이렇게 갑작스럽게 많은 사람이 네이버를 접속하여 지진을 검색했는데도 네이버 검색은 평소와 다름없이 동작했습니다.
네이버 검색에서는 서비스 건강을 지키기 위해 비상 대응 시스템이 존재합니다. 이번 지진과 같은, 재난, 재해 발생으로 갑자기 많은 트래픽이 들어와도 견고한 네이버 검색 시스템을 위한 비상 대응 시스템은 무엇인지 그리고 왜 필요한지, 네이버 검색 SRE - 상위 레벨 모니터링 시스템에 이어 이야기해보겠습니다.
비상 대응 시스템의 조건
지진과 같은 재난 상황에서의 패턴은 평상시 트래픽이 증가할 때와 다른 점이 있습니다.

매우 빠르게 트래픽이 유입되고 피크까지 올라간다는 것입니다. 이는 매우 짧은 시간 내에 이상을 탐지하고 대응해야 한다는 것을 의미합니다. 성공적으로 대응하려면 병목이 되는 계층이나 시스템을 빠르게 확인해야 하고 서비스 간의 영향도 파악 및 의사 결정 또한 신속해야 합니다.
비상 대응 시스템의 조건은 다음과 같습니다.
1. 빠른 이상 탐지 및 규칙 설정
평상시와 다른 트래픽 급증이 발생하면 시스템과 하단의 계층에 영향을 미치기 전에 빠르게 탐지되어야 합니다. 네이버 검색 비상 대응 시스템은 빠르게 이상을 탐지하기 위해 지표 수집 주기를 기존의 1분에서 10초로 줄인 별도의 트래픽 지표를 수집하고 평상시 피크 트래픽의 n배 이상의 트래픽이 들어오면 이상으로 판단합니다.
또한 효과적인 규칙을 설정해야 합니다. 실제로 시스템이 임계 상황을 겪기 전에 빠르게 문제를 파악할 수 있어야 하지만 너무 민감한 규칙은 불필요하게 비상 모드를 발동시킬 수 있기 때문에 적정한 수준의 규칙을 설정하는 것이 중요합니다. 비상 모드에서는 서비스의 안정성을 위해 검색 품질이 희생될 수 있으므로 꼭 필요한 상황에만 비상 모드를 발동해야 합니다.
2. 비상 대응 동작 자동화
이상을 탐지하고 나면 그에 맞는 비상 대응 동작이 빠르게 수행되어야 합니다. 앞에서 설명했듯이 재난 상황에서는 트래픽이 매우 빠르게 증가하기 때문에 이상 탐지부터 비상 대응 동작까지 빠르게 이루어져야 합니다. 만약 수동으로 동작한다면 사람의 상황 인식 및 의사 결정에 걸리는 시간이 치명적일 수 있습니다.
네이버 검색 비상 대응 시스템에서는 지진이 발생하거나 평상시 피크 대비 n배의 트래픽이 들어오면 아래의 동작이 자동으로 실행됩니다.
- 캐시 만료 시간(cache expire time) 연장: 캐시를 연장해 하단 레이어로 전파되는 트래픽을 감소시킵니다.
- 비상 모드 발동을 IC(Incident commander), IO(Incident Operator) 담당자에게 전파

3. 손쉽게 비상 모드 동작 실행이 가능한 UI/UX
자동화 규칙만으로는 충분하지 않은 경우가 있습니다. 그런 상황에서 병목 서비스나 컴포넌트의 담당자들에게 추가 비상 대응을 요청하는 것은 1초가 아쉬운 비상 대응 상황에서는 적절하지 않습니다. 추가 비상 대응 동작은 수동으로 실행할 수 있어야 하고, IC나 IO가 손쉽고 빠르게 실행할 수 있어야 합니다. 단, 부작용이 큰 기능이기 때문에 허가된 인원만 접근을 허용해야 한다는 점을 주의해야 합니다.
네이버 검색 비상 대응 시스템에서는 캐시 만료 시간 추가 연장이나 하단 레이어의 재시도 횟수 조절과 같은 동작을 수동으로 실행할 수 있습니다.

4. 상위 레벨 모니터링 시스템과의 연동
의사 결정자는 시스템의 건강도와 현재 상황을 정확하고 빠르게 알 수 있어야 합니다.
네이버의 검색 시스템은 거대하고 복잡한 시스템입니다. 상위 레벨 모니터링 시스템이 없다면 각 서비스 담당자와 직접 소통해야 각 서비스의 건강도를 파악할 수 있을 것입니다. 수백 개의 서비스가 존재하는 네이버 검색에서 긴급한 재난 상황에 각 서비스의 담당자와 직접 소통하고 서비스 간의 영향도를 파악하는 것은 불가능합니다.
네이버 검색의 상위 레벨 모니터링 시스템은 비상 대응 시스템의 기반으로서 다음과 같은 역할을 합니다.
- 빠르게 시스템 및 서비스의 건강도를 확인하고 영향도를 파악할 수 있습니다. 이는 곧 커뮤니케이션 비용과 의사 결정까지의 시간을 줄일 수 있습니다.
- 평상시 트래픽을 모니터링함으로써 이상 탐지를 위한 규칙의 기준을 제공합니다.
- 평상시 가용량을 기준으로 재난 상황에 대비하여 필요한 가용량을 확보하는 근거를 제공합니다.
- 비상 모드를 연장하거나 해제하는 판단의 근거가 될 정보를 제공합니다.
마치며
담당자 출근 전의 취약 시간(오전 8시 26분)에 지진이 발생했음에도 불구하고 상위 레벨 모니터링 시스템과 비상 대응 시스템을 통해, 평상시 병목 지점을 파악하고 빠르게 이상을 탐지하고 자동으로 비상 모드를 발동함으로써 네이버 검색 서비스를 안정적으로 제공할 수 있었습니다.
연관 서비스를 한눈에 손쉽게 볼 수 있는 모니터링 시스템을 만들고 이를 활용해 자동화된 비상 대응 시스템을 구축하는 것은 거대한 시스템을 만들고 유지하는 것만큼이나 수많은 고민과 커뮤니케이션을 동반합니다. 이 두 시스템은 효과적으로 서비스의 안정성을 지키고 조기에 이상을 탐지하고 대응할 수 있게 하지만 바닥부터 만들어가는 데는 많은 어려움이 있을 것입니다. 이 글이 SRE 및 서비스 안정성을 지키기 위해 노력하는 분들에게 도움이 되었으면 합니다.