카오스 엔지니어링은 프로덕션 또는 사전 프로덕션 환경에서 의도적이고 통제된 방식으로 장애를 일으켜 그 영향을 파악하고 더 나은 방어 태세와 인시던트 유지 관리 전략을 계획하는 것입니다.
조직의 중요한 애플리케이션이나 인프라에 장애가 발생할 기회는 매일 새롭게 생겨나고 있으며, 이는 고객에게 서비스를 제공하는 능력에 잠재적인 위협이 될 수 있습니다. 장애 원인으로는 보안 침해, 잘못된 구성 또는 서비스 중단 등 다양한 문제를 들 수 있습니다. 클라우드에서 호스팅되는 애플리케이션과 데이터가 많아지면 오류나 중단 가능성이 높아져 보안 문제가 증가할 수 있습니다.
이러한 중단을 해결하는 한 가지 방법이 바로 카오스 엔지니어링 입니다. 이 프로세스는 엔지니어가 아무 목적 없이 인스턴스나 서비스를 종료하거나 시스템 장애를 일으키는 무작위적인 프로세스가 아닙니다. 이 프로세스는 향후 발생할 수 있는 잠재적 문제를 식별하여 엔지니어링 팀이 사전에 문제를 해결하고 추후 라이브 환경에서 문제를 방지할 수 있도록 합니다.
카오스 엔지니어링이 중요한 이유는 오류나 중단이 발생하면 조직의 추진력이 둔화되고, 다운타임이 증가하며, 그때마다 해결책을 찾느라 귀중한 시간이 소요될 수 있기 때문입니다. 넷플릭스는 온프레미스에서 클라우드로 전환하면서 이를 몸소 경험했습니다1 (ibm.com 외부 링크). 이 회사는 2008년에 정전으로 인해 서비스 제공이 3일간 중단되는 사태를 겪었습니다. 비디오 스트리밍 운영으로 전환되기 전에 일어난 사건이었으며, 비디오 스트리밍 운영이었다면 중단으로 인한 비용은 기하급수적으로 증가했을 것입니다. 이 경험의 결과, 넷플릭스는 중단을 최소화하기 위해 가능한 모든 조치를 취하기로 결정하고 카오스 엔지니어링을 워크플로우에 도입하기 시작했습니다. 이 덕분에 문제가 발생하기 전에 파악하고, 피할 수 없는 장애가 발생하는 경우에도 피해를 최소화할 수 있게 되었습니다.
넷플릭스는 클라우드의 불안정성에 대응하기 위해 프라이빗 데이터 센터에서 아마존 웹 서비스(AWS)로 이전하면서 자동 복구 절차를 통해 수정하거나 해결할 수 있는 약점을 식별할 수 있도록 IT 서비스 및 인프라에 무작위 사고를 발생시키는 오픈소스 도구인 카오스 몽키2(ibm.com 외부 링크)를 만들었습니다. 이제는 많은 조직에서 카오스 몽키를 사용하여 카오스 엔지니어링 실험을 실행하고 있습니다.
카오스 엔지니어링은 조직의 프로덕션 환경에서 인프라 장애, 중단 또는 구성 요소 누락의 중요한 방어 수단으로 사용됩니다. 카오스 엔지니어링은 서비스 중단을 방지하고, 취약성을 더 정확하게 이해하며, 중단이 발생할 경우 영향을 최소화하는 방법을 파악하여 사이트 안정성 엔지니어 (SRE)와 기타 DevOps 팀원이 지속적으로 서비스를 제공할 수 있도록 도와줍니다.
코드의 작은 문제라도 다양한 프로그램 종속성을 고려하면 전체 프로덕션 환경에 치명적인 영향을 미칠 수 있습니다. 예를 들어, 금융 서비스 회사의 거래 소프트웨어 시스템에 오류가 발생하면 수백만 달러의 손실이 발생할 수 있습니다3(ibm.com 외부 링크). 조직이 모든 IT 사고를 피할 수는 없지만, 카오스 관리를 통해 발생 가능한 시나리오와 최선의 해결책을 파악하면 피해를 최소화할 수는 있습니다.
IBM Instana Observability는 신속한 문제 예방 및 해결에 필요한 컨텍스트를 제공하며, 기업 내 모든 사용자가 간편한 방식으로 데이터에 액세스할 수 있도록 지원합니다.
IBM 뉴스레터 구독하기
복원력과 디지털 성숙도가 높고 대시보드 및 기타 도구를 통해 높은 관측 가능성을 확보한 조직은 실험을 통해 발생하는 문제에 대해 즉각적인 조치를 취할 수 있으므로 카오스 엔지니어링을 도입해야 합니다. 이러한 관측 가능성이 부족한 조직4(ibm.com 외부 링크)은 카오스 엔지니어링을 통해 생성된 실험을 진행하는 데 시간이 너무 오래 소요될 수 있습니다.
카오스 엔지니어링은 클라우드, 특히 퍼블릭 클라우드 와 클라우드 네이티브 앱을 사용하는 조직에도 필수 요소입니다. 퍼블릭 클라우드에서는 클라우드 공급업체와의 조율이 필요한 중단 문제가 발생할 수 있으며, 이로 인해 온프레미스의 문제를 처리하는 것과는 다른 접근 방식이 발생합니다.
Constellation Research5에 따르면 클라우드를 사용하는 기업에서는 클라우드와 서비스형 소프트웨어(SaaS)가 이러한 사고에 어떻게 영향을 미치는지 고려하지 않은 채 IT 사고에 접근하는 경우가 여전히 많습니다( ibm.com 외부 링크).
또한 마이크로서비스의 사용이 늘어나면서 시스템에서 실행되는 호스트 또는 컨테이너의 수가 증가하면, 카오스 실험을 통해 발굴하고 해결할 수 있는 고유한 과제(ibm.com 외부 링크)도 생겨납니다. 복잡성을 코드 설계에서 시스템 운영으로 전환하면 복잡성이 없어지지는 않지만 자동화가 심화될 수 있습니다.
또한 카오스 엔지니어링은 조직이 지속적 통합 및 지속적 배포 (CI/CD) 파이프라인의 속도를 향상하는 데도 도움이 될 수 있습니다. 넷플릭스6(ibm.com 외부 링크)처럼 카오스 엔지니어링을 CI/CD에 통합할 경우 조직은 잠재적인 영향을 통제하면서 지속적인 실험을 자동화할 수 있습니다.
마지막으로, 조직이 API를 통해 파트너와 점점 더 많이 연결된다는 사실은 해당 시스템의 문제가 다른 조직에도 영향을 미칠 수 있다는 것을 의미합니다.
카오스 엔지니어링을 구축하면 조직은 아키텍처의 약점을 파악하고 이를 수정하여 궁극적으로 향후 발생할 장애를 예측할 수 있는 능력을 키울 수 있습니다. 성공적인 카오스 엔지니어링은 조직이 고객에게 중대한 영향을 미치는 기술적 장애를 최소화하는 데 도움이 되며, 더 강력하고 탄력적이며 복잡한 시스템 아키텍처의 구축 또한 지원합니다. 조직이 카오스 엔지니어링을 추진하기로 결정했다면 다음 단계는 사전 프로덕션 환경에서 실행할지, 아니면 프로덕션 환경에서 실행할지를 결정하는 것입니다.
DevOps 팀에는 카오스 엔지니어링 실험을 통해 다양한 시스템 프로세스를 테스트할 수 있는 몇 가지 옵션이 있습니다.
이상적인 카오스 엔지니어링 프로세스를 만들려면 조직이 대규모 분산 시스템을 마련할 수 있도록 몇 가지 원칙을 세워야 합니다.
카오스 엔지니어링을 활용하는 조직은 프로덕션 환경에서 카오스 테스트를 진행할지, 아니면 사전 프로덕션 환경에서 진행할지 결정해야 합니다. 프로덕션 환경에서 카오스 엔지니어링을 진행하는 것이 가장 유용한 이유에는 몇 가지가 있습니다. 라이브 환경은 인시던트가 고객 경험에 어떤 영향을 미치는지 이해할 수 있는 가장 정확한 환경을 제공합니다. 사전 프로덕션 환경이 실제 환경과 정확히 일치하지 않아 실험에 약간의 가변성이 발생할 수 있다는 점이 또 다른 이유입니다.
예를 들어, 사전 프로덕션 환경의 인시던트는 라이브 환경과 트래픽 수준이 동일하지 않기 때문에 현실적인 대응이 불가능할 수 있습니다. 또한 해당 환경과 보안 구성이 동일하지 않을 수도 있습니다.
일부 조직에서는 라이브 사이트에 의도적으로 문제를 일으키는 것을 두려워하여 사전 프로덕션 또는 개발 사이트에서 실험을 진행하기도 합니다. 이렇게 하면 발생하는 모든 문제가 실제 고객 경험에는 영향을 미치지 않습니다. 이러한 문제를 완화하기 위해 일부 조직에서는 라이브 프로덕션 환경으로 전환하기 전에 프로세스를 파악할 수 있도록 사전 프로덕션 환경에서 시작하기도 합니다.
조직은 위험 허용 범위에 따라 어떤 환경을 사용할지 선택할 수 있습니다. 궁극적으로 카오스 엔지니어링은 실제 대규모 문제를 테스트하는 것을 목표로 하므로 프로덕션 환경에서야 말로 현재 상황과 수정이 필요한 사항을 가장 정확하게 파악할 수 있습니다.
카오스 엔지니어링은 조직에 몇 가지 주요 이점을 제공합니다.
고객은 회사에서 구매하는 서비스의 가용성에 대해 높은 기대를 갖고 있습니다. 다운타임이 발생하거나 고객이 비용을 지불한 서비스에 액세스할 수 없게 되면 고객 만족도에 심각한 영향을 미쳐 매출 손실과 평판 손상을 초래할 수 있습니다. 시스템을 테스트하고 해결책을 파악해 두면 시스템이 상당한 기간 동안 다운될 위험이 줄어듭니다.
중단은 잘못된 코드, 서버 문제 또는 외부 위협으로 인해 발생할 수 있습니다. 후자는 보안 관행이 우수하더라도 발생할 수 있습니다. 카오스 엔지니어링은 악용될 수 있는 문제를 식별하는 데 도움이 되므로 조직은 패치와 버그 수정 (ibm.com 외부 링크)을 도입하여 서비스를 안전하게 유지할 수 있습니다.
카오스 엔지니어링을 통해 조직은 보다 정확한 정보에 기반하여 미래에 발생할 문제를 해결하는 방법에 대한 청사진을 만들 수 있습니다. 카오스 엔지니어링을 도입한 조직은 다양한 인시던트에 대한 구체적인 대응책을 갖추고 있어 더 빠르게 복구하고 다운타임을 줄일 수 있습니다. 카오스 엔지니어링은 다운타임7(ibm.com 외부링크)을 최대 20%까지 줄일 수 있습니다.
카오스 엔지니어링 실험에서는 시스템이 리소스를 할당하는 방법을 파악합니다. 이 실험을 도입하면 시스템이 부하를 처리하는 방법과 병목 현상이 발생하거나 발생할 가능성이 있는 위치를 알 수 있습니다.
카오스 엔지니어링은 팀이 시스템 탄력성과 소프트웨어의 유연성을 높이는 데 도움이 됩니다. 조직은 현재 시스템이 문제를 처리하는 방식을 알고 있으므로 새로운 소프트웨어 및 솔루션 코딩에 보다 지능적으로 접근할 수 있습니다.
IT 운영을 위한 인공 지능(AIOps)이 데이터와 머신 러닝을 사용하여 IT 서비스 관리를 개선하고 자동화하는 방법을 알아보세요.
애플리케이션 성능 관리를 통해 성능 문제가 비즈니스에 영향을 미치기 전에 이를 예측하고 예방합니다.
IT 운영 및 AIOps는 조직 전체에서 IT 서비스의 관리, 제공 및 지원을 감독하고 자동화합니다.
ITSM은 조직의 IT 서비스가 사용자와 비즈니스에 필요한 방식으로 작동하도록 보장하는 방법입니다.
사이트 안정성 엔지니어링을 통해 IT 운영 작업을 자동화하고, 소프트웨어 제공을 가속화하고, IT 위험을 최소화할 수 있습니다.
지능형 자동화는 AI와 자동화 기술을 결합하여 비즈니스 내 하위 수준 작업의 자동화를 실현합니다.
1 Chaos Engineering: System Resiliency in Practice, (ibm.com 외부 링크) Casey Rosenthal, Nora Jones, 2020년
2 What is Chaos Monkey? Chaos engineering explained, (ibm.com 외부 링크) InfoWorld, 2020년 5월 13일
3 Knight Capital Says Trading Glitch Cost It $440 Million, (ibm.com 외부 링크) New York Times, 2012년
4 There Is No Resilience without Chaos, The New Stack, (ibm.com 외부 링크) 2023년 4월 13일
5 Incident Management in the Cloud Era, (ibm.com 외부 링크) Constellation Research, 2023년
6 ChAP: Chaos Automation Platform, (ibm.com 외부 링크) 넷플릭스 블로그, 2017년 7월 26일
7 The I&O Leader’s Guide to Chaos Engineering, (ibm.com 외부 링크) Gartner, 2021년 10월 28일