학회_공부해요/기술_스터디

[NAVER D2] 네이버 뉴스 서비스가 장애를 예방하는 방법 - 카오스 엔지니어링

yenas0 2024. 9. 29. 23:05
반응형

https://d2.naver.com/helloworld/8857983

▲원문 기사


카오스 엔지니어링

  • 프로덕션 또는 사전 프로덕션 환경에서 의도적이고 통제된 방식으로 장애를 일으켜 그 영향을 파악하고 더 나은 방어 태세와 인시던트 유지 관리 전략을 계획하는 것
  • 향후 발생할 수 있는 잠재적 문제를 식별하여 엔지니어링 팀이 사전에 문제를 해결하고 추후 라이브 환경에서 문제를 방지할 수 있도록 함.

https://www.ibm.com/kr-ko/topics/chaos-engineering

 

카오스 엔지니어링이란 무엇인가요? | IBM

카오스 엔지니어링은 프로덕션 또는 사전 프로덕션 환경에서 의도적이고 통제된 방식으로 장애를 일으켜 그 영향을 파악하고 더 나은 방어 태세와 인시던트 유지 관리 전략을 계획하는 것입니

www.ibm.com

 

카오스 엔지니어링의 필요성

네이버 뉴스는 외부에서 관리하는 인프라에 의존함

(장) 직접 관리할 필요 無

(단) 해당 인프라 장비에 직접 장애 상황을 만들어 테스트 할 수 없다는 어려움 有

 

 

네이버는 자사의 분산 저장 플랫폼인 nbase-arc를 테스트하려했고 장애 상황 모사를 위해 Toxiproxy를 사용했다.

https://d2.naver.com/helloworld/614607

▲nbase-arc 설명

 

nbase-arc 구성

ZooKeeper Redis 클러스터의 게이트웨이 주소를 저장하고 있다가 app실행 시 gateway address를 전달
클러스터 노드 관리, 상태 정보 중앙에서 통제하는데 사용
Redis cluster Redis 인스턴스들을 클러스터로 묶어 관리
단일 인스턴스의 용량 한계 해결 위해 여러 인스턴스를 클러스터로 운영하는 구조

 

nbase-arc의 장애 상황 모사를 위해서는 위 두개를 다운시켜야 함.

-> 다운 후 재시행하면 불편하고 시간 소모가 多

-> Toxiproxy사용

 

Toxiproxy

애플리케이션 서버와 인프라 장비 등의 서버 사이에 프록시 서버를 만들어 해당 장비들의 장애 상황을 네트워크 상태로 모사하여 테스트할 수 있는 도구.

 

테스트 환경은 위와 같이 Toxiproxy 서버로 구성한 프록시 서버에 nbase-arc Redis 게이트웨이를 연결 후 프록시 서버의 주소를 docker의 zookeeper에 저장해 app이 프록시 서버의 주소를 받도록했다.

 

 

테스트 방법

1. HTTP요청으로 proxy를 추가 후 결함 주입

# add proxy

POST http://{toxiproxy-server}/proxies  
{
    "name": "{proxy name}",
    "listen": "{proxy listen addr}",
    "upstream": "{proxy upstream addr}",
    "enabled": true
}
# toxic proxy

POST http://{toxiproxy-server}/proxies/{proxy name}  
{
    "enabled": false
}

 

 

위와 같은 테스트를 통해 ZooKeeper장애 발생 시 WAS가 실행되지 않음을 확인했다고 한다.

 


WAS

Web Application Server

웹 어플리케이션 실행해서 필요한 기능 수행 후 그결과를 웹 서버에 전달하는 역할

 

본문에 나온 Toxiproxy 깃허브다

https://github.com/Shopify/toxiproxy

 

GitHub - Shopify/toxiproxy: :alarm_clock: A TCP proxy to simulate network and system conditions for chaos and resiliency testing

:alarm_clock: :fire: A TCP proxy to simulate network and system conditions for chaos and resiliency testing - GitHub - Shopify/toxiproxy: :alarm_clock: A TCP proxy to simulate network and system co...

github.com

 

 

 

반응형