카오스 엔지니어링 도구를 사용하여 생산 신뢰성 확인

Chaos Engineering 도구를 사용하여 생산을 안정적으로 유지할 수 있는 방법을 알아보겠습니다.

카오스 엔지니어링은 시스템이나 애플리케이션을 실험하여 약점과 용량 장애를 드러내는 분야입니다. 이것들은 당신이 그것을 만드는 동안 일어날 수 있다고 생각하지 않은 일입니다. 따라서 시스템에 고의적으로 일부 오류가 발생하여 취약점을 표시하여 수정 사항을 만들고 시스템과 응용 프로그램의 복원력을 높일 수 있습니다.

Netflix, LinkedIn, Facebook과 같은 많은 유명 조직은 마이크로서비스 아키텍처와 분산 시스템을 더 잘 이해하기 위해 카오스 엔지니어링을 수행합니다. 실제 사용자의 불만 사항보다 더 빨리 새로운 문제를 찾고 수정하는 데 필요한 조치를 취하는 데 도움이 됩니다. 이것이 이러한 조직이 수백만 명의 사용자에게 서비스를 제공하고 생산성을 높이며 수백만 달러를 절약할 수 있는 방법입니다 🤑.

카오스 엔지니어링의 이점:

  • 중요한 문제를 찾아 수익 손실 제어
  • 시스템 또는 애플리케이션 장애 감소
  • 중단 감소 및 높은 서비스 가용성으로 더 나은 사용자 경험 제공
  • 시스템에 대해 배우고 자신감을 얻는 데 도움이 됩니다.

생산 신뢰성에 대해 얼마나 확신하십니까? 진짜 방재입니까?

다음의 인기 있는 카오스 테스팅 도구의 도움으로 알아봅시다.

카오스 메시

카오스 메시 Kubernetes 시스템의 모든 계층에 결함을 주입하는 카오스 엔지니어링 관리 솔루션입니다. 여기에는 포드, 네트워크, 시스템 I/O 및 커널이 포함됩니다. Chaos Mesh는 Kubernetes 포드를 자동으로 종료하고 지연 시간을 시뮬레이션할 수 있습니다. 포드 간 통신을 방해하고 읽기/쓰기 오류를 시뮬레이션할 수 있습니다. 실험에 대한 규칙을 예약하고 범위를 정의할 수 있습니다. 이러한 실험은 YAML 파일을 사용하여 지정됩니다.

Chaos Mesh에는 실험에 대한 분석을 볼 수 있는 대시보드가 ​​있습니다. Kubernetes 위에서 실행되며 대부분의 클라우드 플랫폼을 지원합니다. 오픈 소스이며 최근 CNCF 샌드박스 프로젝트로 승인되었습니다. 카오스 엔지니어링 원칙을 사용하여 DevOps 워크플로에 Chaos Mesh를 추가하여 탄력적인 애플리케이션을 구축할 수 있습니다.

카오스 엔지니어링 기능:

  • 배포 로직 수정 없이 Kubernetes 클러스터에 쉽게 배포 가능
  • 배포에 고유한 종속성이 필요하지 않습니다.
  • CustomResourceDefinitions(CRD)를 사용하여 혼돈 개체를 정의합니다.
  • 모든 실험을 추적할 수 있는 대시보드 제공
  Linux에서 파일에 패치를 적용하고 패치를 생성하는 방법

카오스 툴킷 Chaos Engineering Experiment Automation을 위한 간단한 오픈 소스 도구입니다.

AWS, Google Cloud, Slack, Prometheus 등을 지원하는 드라이버 또는 플러그인 세트를 사용하여 Chaos ToolKit을 시스템과 통합합니다.

Chaos ToolKit 기능:

  • 벤더 또는 기술과 무관한 혼돈 실험을 생성하기 위한 선언적 Open API 제공
  • 자동화를 위해 CICD 파이프라인에 쉽게 내장 가능
  • 또한 다음을 통해 상업 및 기업 지원을 제공합니다. 카오스IQ

카오스큐브

이름으로 짐작할 수 있듯이 Kubernetes용입니다.

카오스쿠베 Kubernetes 클러스터에서 주기적으로 임의의 포드를 종료하는 오픈 소스 혼돈 도구입니다. 포드가 실패할 때 시스템이 어떻게 반응하는지 이해하는 데 도움이 됩니다. 기본적으로 모든 네임스페이스에서 10분마다 포드를 종료합니다. 네임스페이스, 레이블, 주석 등을 사용하여 Chaoskube에서 대상 포드를 필터링할 수 있습니다. Chaoskube를 사용하여 쉽게 설치할 수 있습니다.

혼돈의 원숭이

혼돈의 원숭이 클라우드 시스템이 반응을 이해할 수 있도록 의도적으로 장애를 생성하여 클라우드 시스템의 복원력을 확인하는 데 사용되는 도구입니다. Netflix는 AWS 인프라 복원력 및 복구 가능성을 테스트하기 위해 이를 만들었습니다. 카오스 몽키라는 이름은 실패를 시험하기 위해 야생의 무장한 원숭이처럼 파괴를 일으킨다고 해서 붙여진 이름입니다.

또한 새로운 엔지니어링 방식인 Chaos Engineering을 탄생시킨 것은 Chaos Monkey였습니다. 갑작스러운 중대한 실패를 피하기 위해서는 반복해서 실패하는 것이 좋다는 원칙에 따라 만들어졌습니다.

혼돈 원숭이 기능:

  • 무작위 인스턴스 실패에 대비하는 데 도움이 됩니다.
  • 예상치 못한 장애에 대한 이중화를 권장합니다.
  • Spinnaker를 사용하여 클라우드 간 호환성 활성화
  • 장애 시뮬레이션을 위한 구성 가능한 일정 제공
  • 통합 주지사 카오스 원숭이에 새로운 종속성을 추가하려면

시미

시미 .NET용 Polly 복원 프로젝트와 통합되는 오류 주입 혼돈 도구입니다. 코드를 실행하는 Polly를 통해 혼돈 주입 정책을 만들 수 있습니다. 시스템에 예외를 주입하는 예외 정책, 새로운 행동을 주입하는 행동 정책 등과 같은 다양한 정책을 제공합니다. 이러한 정책은 행동을 무작위로 주입하도록 설계되었습니다.

시미 기능:

  • 혼돈을 주입하기 위한 Monkey 정책 또는 Chaos 정책 제공
  • 모든 종속성 실패를 테스트하기 쉽습니다.
  • 작업 모델로 빠르게 복귀하는 데 도움이 되며 폭발 반경을 제어합니다.
  • 생산 등급 준비가 완료되었습니다.
  • 외부 요인(예: 글로벌 구성으로 인한 장애)을 기반으로 장애를 정의할 수도 있습니다.
  Excel에서 텍스트와 셀 테두리 사이에 공백을 추가하는 방법

권총

권총 클라우드 네이티브 환경에서 잘못된 주입을 주입하는 데 사용되는 도구입니다. Kubernetes 운영자를 통해 ETCD의 이벤트를 감시합니다. 결함 주입 작업이 실행되면 운영자는 포드를 생성하고 일부 Ansible 컬렉션을 실행합니다. 따라서 개발자는 수행할 작업을 직접 작성할 필요가 없습니다.

Pystol은 시스템을 테스트하기 위해 미리 만들어진 작업을 제공합니다. 그래도 개발자가 새 작업을 만들고 싶다면 GoLang과 Python을 사용하여 수행할 수 있습니다.

모든 작업 작업에 대한 요약 보기를 제공하는 지속적인 통합 대시보드를 제공합니다. Pystol을 로컬에서 실행하거나 도커 이미지를 사용하여 컨테이너에 배포할 수 있습니다. Pystol은 두 가지 인터페이스를 제공합니다. 하나는 웹 UI이고 다른 하나는 CLI를 통한 것입니다. 분명히 웹 UI가 더 나은 옵션입니다.

먹시

먹시 실제 분산 시스템 오류에 대한 복원력 및 내결함성 패턴을 테스트하는 프록시입니다. 전송 수준(계층 4), TCP 세션 수준(계층 5) 및 HTTP 프로토콜 수준(계층 7)을 변조할 수 있습니다.

Muxy 기능:

  • 모듈식 아키텍처 및 쉽게 확장 가능
  • 공식 도커 컨테이너 있음
  • 설치가 쉽고 종속성이 필요하지 않습니다.
  • 복원력의 지속적인 테스트에 이상적
  • 분산 시스템 및 모바일 장치에 대한 네트워크 연결 문제를 시뮬레이션합니다.

품바

품바 도커 컨테이너에 대한 혼돈 테스트를 수행하는 명령줄 도구입니다. Pumba를 사용하면 의도적으로 애플리케이션의 도커 컨테이너를 충돌시켜 시스템이 어떻게 반응하는지 확인합니다. CPU, 메모리, 파일 시스템, 입출력 등과 같은 컨테이너 리소스에 대한 스트레스 테스트를 수행할 수도 있습니다.

Kubernetes 클러스터에서 Pumba를 실행할 수도 있습니다. Kubernetes 노드에 Pumba를 배포하려면 DaemonSets를 사용해야 합니다. 여러 Pumba 컨테이너를 사용하여 동일한 DaemonSet에서 여러 Pumba 명령을 실행할 수 있습니다.

카오스블레이드

카오스블레이드 알리바바의 시스템에 실험을 주입하는 오픈 소스 도구입니다. 알리바바가 지난 10년 동안 직면한 모든 실패를 테스트하고 이를 피하기 위해 모범 사례를 적용합니다. 분산 시스템의 내결함성을 확인하기 위해 카오스 엔지니어링 원칙을 따릅니다.

카오스블레이드 기능:

  • CPU, 네트워크, 메모리, 디스크 등과 같은 여러 리소스에 대한 실험 시나리오를 제공합니다.
  • Kubernetes 플랫폼의 노드, 네트워크 및 포드에 대한 실험적 시나리오 제공
  • 실험을 실행하기 위해 사용하기 쉬운 CLI 명령 제공
  Office 2013에서 미니 도구 모음 숨기기

리트머스

리트머스 클라우드 네이티브 카오스 엔지니어링 원칙을 따릅니다. 리트머스 도구의 사명은 Kubernetes 시스템과 Kubernetes에서 실행 중인 애플리케이션의 약점을 찾기 위한 완전한 프레임워크를 제공하는 것입니다.

그것은 혼돈 연산자와 그 주변의 CRD(CustomResourceDefinitions)를 가지고 있어 플러그 앤 플레이 기능을 허용합니다. 혼돈 논리를 도커 이미지에 넣고 리트머스 프레임워크에 집어넣고 CRD를 사용하여 오케스트레이션하는 것입니다.

리트머스의 특징:

  • 사이트 안정성 엔지니어 및 개발자가 Kubernetes 시스템의 약점을 찾을 수 있도록 지원
  • 바로 사용할 수 있는 일반 실험 제공
  • 카오스 워크플로 관리를 위한 Chaos API 제공
  • Litmus SDK는 Go, Python 및 Ansible을 지원하여 고유한 실험을 생성합니다.

그렘린

그렘린 엔지니어가 보다 탄력적인 소프트웨어를 구축하는 데 도움이 됩니다. 카오스 엔지니어링 실험을 안전하고 간단하게 실행할 수 있는 플랫폼을 제공합니다.

공용 클라우드든 자체 데이터 센터든 상관없이 gremlin을 사용하여 호스트나 컨테이너에 오류를 신중하게 주입할 수 있습니다.

그렘린 기능:

  • 장애를 주입하기 위해 호스트 또는 컨테이너에 경량 에이전트를 설치합니다.
  • 10개 이상의 다양한 인프라 공격 모드 제공
  • 상태 gremlin을 사용하면 시스템 시간을 조작하고, 호스트를 종료 또는 다시 시작하고, 프로세서를 종료할 수 있습니다.
  • 네트워크 그렘린은 대기 시간을 주입하여 패킷 손실을 유발하거나 트래픽을 삭제할 수 있습니다.
  • Gremlin의 Alfi 라이브러리 공격은 웹 앱을 통해 구성, 시작 및 중지할 수 있습니다. API 또는 CLI
  • 공격하려는 폭발 반경을 정확하게 타겟팅할 수 있습니다.
  • 모든 공격을 중지하고 시스템을 정상 상태로 되돌릴 수 있습니다.

스테디빗

스테디빗 사전 예방적으로 가동 중지 시간을 줄이고 시스템 문제에 대한 가시성을 제공하는 것을 목표로 합니다. 이 도구는 인프라 또는 SaaS(Cloud as a Service)에서 로컬로 실행할 수 있습니다.

Steadybit을 사용하려면 상황을 정의하고, 실험을 시뮬레이션하고, 프로덕션에서 시뮬레이션된 실험을 실행하고, 모든 실험을 자동화합니다. 시스템에서 지능형 에이전트를 실행하여 잠재적인 문제와 약점을 발견합니다. 여러 시스템과 쉽게 통합됩니다.

결론

카오스 엔지니어링 원칙을 적용하고 위에서 언급한 도구를 사용하여 프로덕션을 테스트할 만큼 용감하게 진행하십시오. 이러한 도구는 시스템에서 식별되지 않은 여러 약점을 찾는 데 도움이 되며 시스템을 보다 탄력적으로 만드는 데 도움이 됩니다.