네이버 메인 페이지의 트래픽 처리
Last updated
Last updated
https://d2.naver.com/helloworld/206816
일반적인 3계층(3-Tier) 분산 처리 모델의 문제점
클라이언트의 트래픽이 로드 밸런서를 통해 각 웹서버로 분산
WAS는 동일한 데이터베이스 참조
WAS에 문제 발생 시 웹서버가 다른 WAS를 찾도록 해야 함
사용자가 로그인한 상태면 WAS에 세션 클러스터링 설정해야 함
세션 클러스터링 설정을 위한 추가 작업 필요하고 관리 지점 증대
데이터 동기화 등의 문제로 데이터 스토리지 레이어의 다중화는 특히 어려운 부분임
네이버 메인페이지의 분산 처리 모델 요구사항
어떤 서버로 접속해도 동일한 내용 표시
특정 상태(사용자의 로그인 여부)에 의존하지 않아야 함
무중단 서비스
트래픽 증가에 대해 탄력적인 대처 가능해야 함
네이버 메인페이지의 분산 처리 모델의 구성요소
GCDN(Global CDN): 공통적으로 호출되는 리소스의 부하 분산을 위해 GCDN 활용. GCDN에서 지원되는 GSLB(Global Server LB) 기능은 접속 IP로부터 가장 가까운 CDN 서버를 자동 선정해 연결해줌.
SSI, APR(Apache Portable Runtime): 웹서버의 활용도를 높여 효율적인 서버 자원 사용.
Data Publisher: WAS와 통신 실패 시 웹서버에서 참조할 파일을 특정 주기에 따라 정상 응답 결과값을 웹서버에 미리 파일로 생성해 둔다.
NodeJs: 외부 시스템과 API 연동에 사용. 병렬 처리 시 스레드 문제 해결, 비동기식 외부 시스템 연동 시 병렬로 여러개의 요청을 한번에 처리 가능.
서킷 브레이커(Netflix OSS Hystrix): 외부 서비스의 장애로 연쇄적 장애 전파를 막기 위해 외부 서비스와 연결을 차단 및 복구하는 역할. 오류 발생 횟수가 일정치에 도달하면 서킷을 오픈하여 미리 지정된 응답 반환하도록 구성.
서비스 디스커버리: 동적으로 생성, 삭제되는 서버 인스턴스에 대한 IP 주소와 포트를 자동으로 찾아 설정할 수 있게 하는 기능.
네이버 메인 페이지의 모니터링
Spring Boot Actuator의 MetricWriter로 성능 지표 수집
NPOT(사내시스템, Grafana기반)으로 네이버 메인 페이지의 상태를 모니터링
네이버 메인 페이지의 비상 대응 체계
MEERCAT(사내시스템): 갑작스러운 트래픽 증가 시 방어하는 애플리케이션. 실시간 트래픽을 수집하고 그 양상을 예측한 다음 트래픽 폭증이 예측되는 경우 또는 기상청의 지진 발생 신호가 수신되는 경우 외부 시스템과 연결을 끊고 자체 서버로만 서비스를 제공.