맨위로가기

카오스 엔지니어링

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

카오스 엔지니어링은 소프트웨어 개발에서 회복 탄력성을 확보하기 위한 기술로, 인프라, 네트워크, 애플리케이션 장애 등에 대한 시스템의 복원력을 테스트하고 개선하는 데 사용된다. 아마존, 넷플릭스, 구글 등에서 시스템 안정성 확보를 위해 도입되었으며, 카오스 몽키, 시미안 아미, 그렘린 등 다양한 도구가 활용된다.

더 읽어볼만한 페이지

  • 넷플릭스 - 넷플릭스 프라이즈
    넷플릭스 프라이즈는 넷플릭스가 영화 추천 시스템의 성능 향상을 위해 2006년부터 2009년까지 개최한 경진대회이다.
  • 넷플릭스 - 리드 헤이스팅스
    리드 헤이스팅스는 1997년 넷플릭스를 공동 설립하고 CEO를 역임하며 스트리밍 서비스 전환과 자체 콘텐츠 제작을 통해 회사를 성장시킨 미국의 기업가이다.
  • 소프트웨어 개발 - 유스 케이스
    유스 케이스는 시스템과 액터 간 상호작용을 통해 시스템 목표 달성에 기여하는 동작들을 나타내는 요구 사항 캡처, 모델링, 명세 기법으로, 객체 지향 소프트웨어 공학에서 기능 요구 사항을 캡처하는 데 중요한 역할을 하며 다양한 분야에서 활용된다.
  • 소프트웨어 개발 - 사용자 경험 디자인
    사용자 경험 디자인은 인간 공학에 기반하여 제품 또는 서비스와 사용자 간의 상호작용을 설계하는 분야이며, 사용자 조사, 인터랙션 디자인, 사용성 테스트 등을 통해 효율적이고 만족스러운 경험을 제공하는 것을 목표로 한다.
카오스 엔지니어링
개요
분야소프트웨어 공학
목적시스템의 안정성과 신뢰성 향상
접근 방식예상치 못한 상황을 시뮬레이션하여 시스템의 약점 파악
주요 활동시스템에 결함 주입
시스템 응답 관찰 및 분석
약점 식별 및 개선
역사 및 배경
어원혼돈(카오스) 이론에서 유래
기원넷플릭스에서 시스템 복원력 강화를 위해 개발
발전아마존을 비롯한 다양한 기업으로 확산
클라우드 컴퓨팅 환경에서 중요성 증가
주요 원칙
실제 시스템에서 실험모의 환경이 아닌 실제 운영 환경에서 테스트 수행
지속적인 실험정기적인 실험을 통해 시스템의 변화에 대응
자동화실험 과정을 자동화하여 효율성 증대
영향 범위 최소화실험으로 인한 시스템 장애를 최소화하기 위한 안전 장치 마련
학습 및 개선실험 결과를 분석하여 시스템 개선에 활용
주요 기술 및 도구
결함 주입 도구카오스 몽키 (넷플릭스에서 개발)
모니터링 도구프로메테우스, 그라파나
자동화 도구앤서블, 테라폼
적용 분야
클라우드 컴퓨팅클라우드 환경의 안정성 및 확장성 테스트
마이크로서비스 아키텍처개별 서비스의 장애가 전체 시스템에 미치는 영향 평가
컨테이너 기반 환경도커, 쿠버네티스 환경의 복원력 강화
장점
시스템 안정성 향상예상치 못한 장애에 대한 대비 능력 강화
문제 해결 능력 강화장애 발생 시 신속하게 대응할 수 있는 능력 향상
개발 프로세스 개선시스템의 약점을 파악하여 개발 단계에서 문제 해결
단점
초기 비용실험 환경 구축 및 자동화 도구 도입에 비용 소모
전문 인력 필요실험 설계 및 분석을 위한 전문 지식 필요
위험 관리실험 중 시스템 장애 발생 가능성에 대한 철저한 대비 필요
참고 자료
관련 서적Chaos Engineering: System Resiliency in Practice
관련 웹사이트카오스 엔지니어링 원칙

2. 개념

소프트웨어 개발 과정에서, 특정 소프트웨어가 적절한 서비스 품질을 보장하면서 결함을 허용하는 능력, 즉 회복탄력성은 중요한 요구사항으로 여겨진다. 하지만 개발팀은 촉박한 마감 기한이나 해당 분야에 대한 지식 부족 등의 이유로 이러한 요구사항을 완벽하게 충족시키지 못하는 경우가 발생할 수 있다. 카오스 엔지니어링은 바로 이러한 회복탄력성 요구사항을 충족시키는 것을 목표로 하는 다양한 기술들을 포함한다.

카오스 엔지니어링은 주로 인프라 장애, 네트워크 장애, 그리고 애플리케이션 장애와 같은 예기치 못한 문제 상황에 대해 시스템이 얼마나 잘 견디고 복구될 수 있는지, 즉 회복탄력성을 확보하는 데 사용될 수 있다.

실제 운영 환경에 배포되어 서로 복잡하게 연결된 시스템들이 얼마나 안정적으로 운영될 수 있는지 신뢰도를 평가하기 위해서는 운영 준비성 지표가 필요하다. 이러한 운영 준비성은 카오스 엔지니어링 시뮬레이션을 통해 평가될 수 있다. 시스템의 복원력과 운영 준비성을 향상시키기 위한 구체적인 방법으로는 데이터 백업 및 복원 절차 강화, 네트워크를 통한 파일 전송 능력 개선, 장애 발생 시 자동으로 시스템을 전환하는 장애 조치 기능 강화, 그리고 전반적인 시스템 환경의 보안 강화 등이 있다.

예를 들어, 쿠버네티스 환경에서 의도적으로 카오스 상황을 만들어 시스템의 반응을 평가하는 경우가 있다. 대규모 데이터 네트워크에서 분석 작업을 처리하는 동안, 데이터 센터의 가장자리(엣지)에 있는 장치로부터 데이터를 수신하는 임의의 파드(Pod, 쿠버네티스에서 실행되는 애플리케이션의 기본 단위)를 강제로 종료시키는 실험을 진행했다. 이때 해당 파드가 얼마나 빨리 복구되는지를 측정하여 시스템의 응답 시간과 복원력을 평가하는 지표로 사용하였다.[2][3]

3. 역사

카오스 엔지니어링의 개념은 시스템의 안정성을 선제적으로 검증하고 강화하려는 시도에서 비롯되었다. 초기에는 여러 기업에서 각기 다른 형태로 시스템에 의도적인 혼란을 주어 그 반응을 살피는 실험들이 진행되었다.

1983년 애플에서는 스티브 캡스가 초기 매킨토시 개발 과정에서 '몽키'라는 도구를 사용해 무작위 사용자 인터페이스 이벤트를 발생시켜 시스템 오류를 찾는 데 활용했다.[4] 이는 시스템의 예기치 않은 동작을 시험하는 초기 사례로 볼 수 있다. 1992년 PROLOGUE 운영 체제 개발 중에는 이안 제임스 마샬이 'La Matraque'라는 도구를 만들어 그래픽 인터페이스의 복원력을 테스트했다.

2003년 아마존에서는 제시 로빈스가 웹사이트 안정성 향상을 목표로 '게임 데이'라는 프로그램을 도입하여 의도적으로 주요 장애 상황을 연출하고 이에 대비하는 훈련을 했다.[5][6] 2006년 구글 역시 이와 유사한 개념의 'DiRT' 프로그램을 만들어 시스템의 안정성을 시험했다.[6][7][8]

현대적인 카오스 엔지니어링 개념은 2011년 넷플릭스에서 클라우드 환경으로 이전하는 과정에서 크게 발전했다. 노라 존스, 케이시 로젠탈, 그렉 오젤 등은 카오스 몽키와 같은 도구를 개발하여 실제 운영 환경인 프로덕션 환경에서 의도적으로 서버를 중단시키는 실험을 감행했다.[12][16][13] 이는 장애가 발생할 수 있다는 전제하에 시스템의 복원력을 설계 단계부터 필수적으로 고려하도록 개발 문화를 변화시키는 데 중요한 역할을 했다.[14] 이러한 접근 방식은 소프트웨어 서비스의 인스턴스를 무작위로 종료시켜 봄으로써, 실제 장애 발생 시 고객에게 미치는 영향을 최소화할 수 있는지 중복 아키텍처를 검증하는 효과적인 방법이 되었다.

이러한 카오스 엔지니어링의 개념은 2012년 마틴 파울러가 소개한 피닉스 서버 개념과도 유사한 맥락을 가진다.[15]

3. 1. 1983년 - 애플

MacWrite와 MacPaint가 최초의 애플 매킨토시 컴퓨터용으로 개발되던 시기에, 스티브 캡스는 "몽키"라는 데스크 액세서리를 만들었다. 이 프로그램은 마치 원숭이가 키보드를 두드리고 마우스를 움직이며 클릭하는 것처럼, 무작위로 사용자 인터페이스 이벤트를 빠르게 생성하는 역할을 했다. 당시에는 테스트 자동화가 불가능했고, 최초의 매킨토시는 더 정교한 작업을 수행하기에는 메모리 공간이 부족했기 때문에, "몽키"는 프로그래머가 수정해야 할 오류를 찾아내는 디버깅 목적으로 즉시 활용되었다.[4]

3. 2. 1992년 - Prologue

ABAL2와 SING이 PROLOGUE 운영 체제의 최초 그래픽 버전용으로 개발되는 동안, 이안 제임스 마샬은 "La Matraque"라는 데스크 액세서리를 만들었다. 이 프로그램은 고속으로 유효하고 무효한 그래픽 인터페이스 이벤트의 무작위 시퀀스를 생성하여 기본 그래픽 라이브러리의 중요한 가장자리 동작을 테스트했다. 이 프로그램은 생산 배포 전에 며칠 동안 실행되어 필요한 정도의 완전한 복원력을 보장했다. 이 도구는 이후 ABAL 언어의 데이터베이스 및 기타 파일 접근 명령을 포함하도록 확장되어 이후의 복원력을 확인하고 보장했다. 이 도구의 변형은 현재 OPENABAL로 알려진 현대 버전의 자격 요건에 사용되고 있다.

3. 3. 2003년 - 아마존

아마존에서 웹사이트 안정성을 개선하기 위해 노력하면서, 제시 로빈스는 "게임 데이"[5]를 만들었다. 이는 정기적으로 주요 장애를 의도적으로 발생시켜 안정성을 높이는 활동이었다. 로빈스는 이 아이디어가 소방관 훈련과 복잡한 시스템, 신뢰성 공학 분야의 다른 연구에서 얻은 교훈에서 영감을 받았다고 밝혔다.[6]

3. 4. 2006년 - 구글

구글에서는 크리파 크리슈난이 아마존의 게임 데이와 유사한 "DiRT"라는 프로그램을 만들었다.[6][7][8] 구글의 사이트 신뢰성 엔지니어인 제이슨 카훈[9]은 "카오스 엔지니어링"이라는 책[12]에서 구글의 DiRT 프로그램에 대한 장[10]을 집필했으며, GOTOpia 2021 컨퍼런스에서도 이 시스템에 대해 설명했다.[11]

3. 5. 2011년 - 넷플릭스

2011년 넷플릭스클라우드로 이전하는 과정을 감독하면서 이 분야를 발전시켰다. 노라 존스, 케이시 로젠탈, 그렉 오젤[12][16][13]은 넷플릭스 고객이 실제로 사용하는 환경인 프로덕션 환경에서 의도적으로 시스템 중단을 일으키는 도구를 만들었다. 이는 개발자들이 장애가 없다고 가정하는 개발 방식에서 벗어나, 장애는 피할 수 없다는 생각으로 전환하도록 유도하기 위해서였다. 이를 통해 개발자들이 시스템 설계 시 복원력을 선택 사항이 아닌 필수로 내장하도록 만들기 위한 목적이었다.

: "넷플릭스에서 우리의 자유와 책임의 문화는 엔지니어가 코드를 특정 방식으로 설계하도록 강요하지 않도록 했다. 대신, 서버 중립화로 인해 발생하는 문제를 격리하고 이를 극단으로 밀어 넣음으로써 인프라 복원력이라는 개념을 중심으로 팀을 조정할 수 있다는 것을 발견했다. 우리는 카오스 몽키를 만들었다. 이 프로그램은 임의로 서버를 선택하여 일반적인 활동 시간 동안 비활성화한다. 어떤 사람들은 이것을 미친 짓이라고 생각하겠지만, 우리는 이 이벤트의 결과에 직면하여 우리의 행동을 테스트하기 위해 이벤트의 무작위 발생에 의존할 수 없었다. 이것이 자주 발생할 것이라는 것을 알고 있었기 때문에 엔지니어들 사이에서 이러한 사고에서 살아남기 위해 중복성과 프로세스 자동화를 구축하여 수백만 명의 넷플릭스 사용자에게 영향을 미치지 않도록 강력한 조정이 이루어졌다. 카오스 몽키는 서비스 품질을 개선하는 가장 효과적인 도구 중 하나이다."[14]

소프트웨어 서비스의 인스턴스를 무작위로 정기적으로 종료시켜 봄으로써, 서버 오류가 발생해도 고객에게 눈에 띄는 영향을 주지 않는지 확인하기 위해 중복 아키텍처를 테스트할 수 있었다.

카오스 엔지니어링의 개념은 2012년 마틴 파울러가 처음 소개한 피닉스 서버의 개념과 유사하다.[15]

4. 주요 도구

카오스 엔지니어링을 수행하기 위해 다양한 도구들이 개발되어 활용되고 있다. 대표적인 예로는 넷플릭스가 개발한 카오스 몽키와 이를 포함하는 더 큰 도구 모음인 시미안 아미가 있다. 이 외에도 Gremlin, 페이스북의 Project Storm, Voyages-sncf.com의 자체 도구, Steadybit, Proofdock 등 다양한 상용 및 오픈소스 도구들이 존재하며, 특정 환경이나 목적에 맞게 사용된다.[16][18][20][29][30][23][28]

4. 1. 카오스 몽키 (Chaos Monkey)

'''카오스 몽키'''는 2011년 넷플릭스에서 IT 인프라의 복원력을 테스트하기 위해 개발된 도구이다.[16] 넷플릭스의 프로덕션 네트워크에서 의도적으로 컴퓨터를 비활성화하여 나머지 시스템이 중단에 어떻게 대응하는지 테스트한다. 카오스 몽키는 현재 다양한 시스템 오류 및 엣지 케이스에 대한 응답을 시뮬레이션하고 테스트하도록 설계된 Simian Army라고 하는 더 큰 도구 모음의 일부이다.

카오스 몽키의 코드는 2012년 넷플릭스에서 아파치 2.0 라이선스에 따라 공개되었다.[17][18]

"카오스 몽키"라는 이름은 안토니오 가르시아 마르티네즈의 저서 ''카오스 몽키''에서 다음과 같이 설명하고 있다.[19]

온라인 활동의 모든 중요한 기능을 호스팅하는 '데이터 센터', 즉 이러한 서버 '팜'에 원숭이가 들어간다고 상상해 보십시오. 원숭이는 무작위로 케이블을 찢고, 장치를 파괴하고, 손에 닿는 모든 것을 되돌려 놓습니다 [즉, 배설물을 던집니다]. IT 관리자의 과제는 이러한 원숭이에도 불구하고 작동할 수 있도록 책임 있는 정보 시스템을 설계하는 것입니다. 이러한 원숭이는 언제 도착하여 무엇을 파괴할지 아무도 알 수 없습니다.

4. 2. 시미안 아미 (Simian Army)

시미안 아미(Simian Armyeng)[18]넷플릭스(Netflix)가 아마존 웹 서비스(Amazon Web Services) 인프라의 신뢰성, 보안 또는 복원력을 테스트하기 위해 개발한 도구 모음이며, 다음과 같은 도구를 포함한다:[20]

  • 카오스 콩 (Chaos Kong): 시미안 아미 계층 구조의 최상위에 위치하며, 전체 AWS "리전"을 중단시킨다.[21] 드물지만 전체 리전의 손실이 발생하며, 카오스 콩은 이러한 유형의 이벤트에 대한 시스템 응답 및 복구를 시뮬레이션한다.
  • 카오스 고릴라 (Chaos Gorilla): 전체 아마존 "가용 영역"(지리적 지역을 서비스하는 하나 이상의 전체 데이터 센터)을 중단시킨다.[22]

4. 3. 기타 도구


  • Gremlin은 "서비스형 실패" 플랫폼이다.[29]
  • 페이스북의 Project Storm은 자연 재해에 대한 저항력을 시험하기 위해 데이터 센터 규모의 실패를 시뮬레이션한다.[30]
  • Voyages-sncf.com은 2017년 "카오스의 날" 행사를 통해 게이미피케이션 기법을 활용하여 프로덕션 환경 이전 단계에서 시스템 실패 상황을 시뮬레이션했으며, 이 사례는 2017년 DevOps REX 컨퍼런스에서 발표되었다.[23][24][25]
  • 2019년에 설립된 Steadybit은 프로덕션 환경 적용 전 단계에서의 카오스 엔지니어링과 신뢰성 엔지니어링을 대중화하는 데 기여했다.[28] Steadybit은 오픈 소스 신뢰성 허브를 통해 기능을 확장할 수 있다.[26][27]
  • Proofdock은 마이크로소프트 Azure DevOps 환경 내에서 인프라, 플랫폼, 애플리케이션 수준의 다양한 실패 시나리오를 주입하는 기능을 제공한다.[28]

참조

[1] 웹사이트 Principles of Chaos Engineering https://principlesof[...] 2017-10-21
[2] 간행물 Evaluating operational readiness using chaos engineering simulations on Kubernetes architecture in Big Data https://ieeexplore.i[...] 2022-11-29
[3] 뉴스 Machine Learning Podcast Host and Technology Influencer: Gautam Siwach https://www.laweekly[...] LA Weekly 2022-10-07
[4] 웹사이트 Monkey Lives https://www.folklore[...] 2023-09-11
[5] 웹사이트 Game day https://wa.aws.amazo[...] Amazon 2020-12-31
[6] 학술지 Resilience Engineering: Learning to Embrace Failure https://queue.acm.or[...] 2012-09-13
[7] 학술지 Weathering the Unexpected https://queue.acm.or[...] 2012-09-16
[8] 간행물 10 Years of Crashing Google https://www.usenix.o[...] 2015-11-08
[9] 서적 Site Reliability Engineering https://www.worldcat[...] O'Reilly Media
[10] 웹사이트 Chapter 5. Google DiRT: Disaster Recovery Testing https://learning.ore[...] O'Reilly Media 2020-04-30
[11] 웹사이트 WATCH: The DiRT on Chaos Engineering at Google https://youtube.com/[...] GOTO Conferences 2021-06-02
[12] 서적 Chaos Engineering https://www.worldcat[...] O'Reilly Media
[13] 특허 Validating the resiliency of networked applications
[14] 웹사이트 Netflix Chaos Monkey Upgraded https://medium.com/n[...] Medium 2016-10-19
[15] 웹사이트 PhoenixServer https://martinfowler[...] Martin Fowler (software engineer) 2012-07-10
[16] 웹사이트 The Netflix Simian Army https://medium.com/n[...] Medium 2011-07-19
[17] 뉴스 Netflix libère Chaos Monkey dans la jungle Open Source https://www.lemondei[...] Le Monde Informatique 2017-11-07
[18] 웹사이트 SimianArmy: Tools for your cloud operating in top form. Chaos Monkey is a resiliency tool that helps applications tolerate random instance failures https://github.com/N[...] Netflix, Inc. 2017-10-20
[19] 웹사이트 Mais qui sont ces singes du chaos ? https://15marches.fr[...] 2017-07-25
[20] 뉴스 Infrastructure : quelles méthodes pour s'adapter aux nouvelles architectures Cloud ? - D2SI Blog http://blog.d2-si.fr[...] D2SI Blog 2015-12-08
[21] 웹사이트 Chaos Engineering Upgraded https://netflixtechb[...] 2017-04-19
[22] 웹사이트 The Netflix Simian Army https://medium.com/n[...]
[23] 웹사이트 Days of Chaos http://days-of-chaos[...] 2022-02-18
[24] 웹사이트 DevOps: feedback from Voyages-sncf.com https://www.blogdumo[...] 2017-03-17
[25] 웹사이트 "[devops REX 2017] Days of Chaos : le développement de la culture devops chez Voyages-Sncf.com à l'aide de la gamification" https://fr.slideshar[...] 2017-10-03
[26] 웹사이트 steadybit/reliability-hub-db https://github.com/s[...] Steadybit 2024-08-26
[27] 웹사이트 Home https://hub.steadybi[...] 2024-08-26
[28] 웹사이트 Steadybit wants developers involved in chaos engineering before production https://techcrunch.c[...] 2022-09-22
[29] 웹사이트 Gremlin raises $18 million to expand 'failure-as-a-service' testing platform https://venturebeat.[...] 2018-09-28
[30] 웹사이트 Interview: How Facebook's Project Storm Heads Off Data Center Disasters https://www.forbes.c[...] 2016-09-11
[31] 웹인용 Principles of Chaos Engineering http://principlesofc[...] 2017-10-21



본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

문의하기 : help@durumis.com