리트머스를 활용한 카오스 엔지니어링: CNCF 인큐베이팅 프로젝트

문제 진술: 마이크로서비스 기반 전자상거래 플랫폼의 회복력 보장.

시스템 회복력은 서비스 운영을 유지하고 사용자에게 최상의 성능을 제공하기 위해 전자상거래 플랫폼의 확장 작업에서 핵심 요구 사항으로 자리잡고 있습니다. 우리는 트래픽이 많은 이벤트에 직면했을 때 간헐적인 시스템 실패를 겪는 마이크로서비스 아키텍처 플랫폼을 개발하였습니다. 서비스 가용성이 저하되고 수익에 영향을 미치는 문제는 주로 Kubernetes 포드 충돌, 리소스 고갈, 그리고 성수기 쇼핑 시즌 동안 발생하는 네트워크 중단으로 인해 발생합니다.

조직은 플랫폼의 평가 및 회복력 강화를 위해 CNCF 인큐베이션 프로젝트인 Litmus를 활용할 계획입니다. Litmus를 사용하여 시뮬레이션된 실패 테스트를 수행할 때 우리의 시스템 약점이 더욱 명확해지며, 이는 포드 종료 이벤트, 네트워크 지연, 리소스 사용 한계와 같은 실제 실패 상황을 유발할 수 있게 합니다. 이 실험들은 재해 복구 절차를 테스트하고 Kubernetes 설정을 총 시스템 신뢰성을 향상시키기 위해 자동화된 확장성 시스템을 검증할 수 있게 해줍니다.

이 시스템은 실패 상황을 견딜 수 있는 견고한 기반을 마련하고 사용자 경험 품질을 저하시키지 않으면서 바쁜 트래픽 기간을 안전하게 분산할 수 있습니다. 우리의 인프라에 사전적으로 적용된 카오스 엔지니어링은 더 나은 위험 감소와 관측 가능성을 높여 주며, 이는 모든 운영 조건에서 플랫폼의 전자상거래 회복력을 강화하는 자동화된 복구 방법을 개발할 수 있게 합니다.

카오스 실험 환경 설정하기

Kubernetes 클러스터에 LitmusChaos 설치하기:

Shell

 

설치 확인:

Shell

 

참고: 교란 실험에 준비된 클러스터인지 확인하십시오.

교란 실험 정의

Pod 삭제 시나리오를 모의하는 ChaosExperiment YAML 파일을 생성하십시오.

예시 (pod-delete.yaml):

YAML

 

ChaosOperator 설치 및 서비스 계정 구성

실험 관리를 위해 ChaosOperator를 배포하십시오:

Shell

 

참고: 필요한 권한을 부여하기 위해 ServiceAccount를 생성하십시오.

대상 응용프로그램에 교란 삽입

교란을 위해 응용프로그램 네임스페이스에 레이블을 지정하십시오:

Shell

 

실험을 트리거하기 위해 ChaosEngine를 배포하십시오:

예시 (chaosengine.yaml):

YAML

 

ChaosEngine 적용:

Shell

 

실험 모니터링

진행 상황 확인:

Shell

 

교란 pods의 상태 확인:

Shell

 

결과 분석

실험 후, 응용프로그램이 자동으로 회복되거나 스트레스에 실패했는지 확인하기 위해 로그 및 메트릭스 검토

모니터링할 몇 가지 메트릭스:

  • 응용프로그램 응답 시간
  • 실험 중 및 이후의 오류율
  • pod 회복 시간

해결책

원인 식별됨: 고트래픽 시, 배포 내 레플리카 수가 충분하지 않고 적절한 자원 제한이 없어서 pods가 실패했습니다.

수정 사항 적용:

  • 고트래픽 처리를 위해 배포 내 레플리카 수를 증가시켰습니다
  • 팟 사양에서 CPU 및 메모리에 대한 적절한 자원 요청 및 제한 구성
  • 트래픽 급증을 동적으로 처리하기 위해 수평 파드 오토스케일러(HPA)를 구현했습니다

결론

LitmusChaos를 사용하여 포드 실패를 모의하면 전자 상거래 플랫폼의 Kubernetes 배포의 주요 약점을 식별할 수 있습니다. 혼돈 실험을 통해 확장 및 자원 할당 조정으로 내구성을 크게 향상시킬 수 있는 것을 입증했습니다. 혼돈 공학을 통해 선제적인 시스템 강화가 가능해져 가동 시간과 고객 만족도가 향상되었습니다.

Source:
https://dzone.com/articles/chaos-engineering-litmus-cncf-incubating-project