IT시스템을 위한 특급훈련, 카오스 엔지니어링을 아십니까?

컨테이너, 쿠버네티스, 마이크로서비스아키텍처(MSA), 모던 애플리케이션, 서버리스…

위에 나열된 단어들은 최근 IT 시스템을 논할 때 가장 많이 언급되는 키워드들이다. 이런 기술을 활용하는 방안을 고민하지 않는 기업은 거의 없을 것이다.

이 기술들의 특징은 점점 더 분산화된다는 것이다. 기존에는 하나의 대형 서버에서 하나의 애플리케이션을 구동했었는데, 이제는 IT시스템의 유연성, 확장성, 안정성 등을 위해 점점 더 작은 모듈로 분산처리된다.

그런데 이런 흐름에는 반대급부도 있다. 이 기술들의 장점은 극명하지만 반대로 IT환경이 복잡해진다는 문제가 있다. MSA 기반의 애플리케이션은 수백 개의 컨테이너나 마이크로서비스로 구성되어 있으며 하루에도 수십, 수백 번씩 배포가 이뤄지는 상황이다. 하나의 서버와 앱만 관리하던 시기와 비교하면복잡성이 대폭 증가한 셈이다.

이런 복잡성은 예기치 않은 혼란, 카오스를 야기한다. 수백 개의 마이크로서비스가 얽히고설킨 MSA 환경에서는 하나의 작은 서비스에서 생긴 문제가 의도치 않게 전체 서비스에 영향을 미칠 가능성이 있다. 각각의 마이크로서비스는 정상으로 작동하는데, 서로 연결되면 예기치 못한 문제를 일으키는 경우도 있다. 누군가 바꾼 코드 한 자가 나비효과를 일으켜 기업 비즈니스 전체를 중단시킬 가능성도 있다.

그럼 서두에 언급한 기술들의 장점을 누리면서도 카오스를 줄이는 방법은 없을까?

이런 혼란에 중점을 두고 문제를 예방하기 위한 방법론을 카오스 엔지니어링이라고 한다. 정의하자면 “복잡한 분산 시스템 환경에서 시스템의 신뢰성을 확인하기 위해 인위적인 혼돈(Chaos)을 가하여 시스템의 취약한 부분을 찾고 보강하는 방식의 엔지니어링 기법(출처 : IT위키)”이다. 일종의 장애 시뮬레이션이라고 볼 수 있다. 미리 다양한 장애 상황을 인위적으로 만들어놓고 시스템이 어떻게 동작되는지 테스트해보는 것이다.

오는 5월 11~12일 예정된 ‘AWS 서밋 온라인 코리아 2021(AWS Summit Online Korea 2021)’에서는 모바일 금융 서비스 토스를 운영하는 비바리퍼블리카의 김신 SW엔지니어가 카오스 엔지니어링을 주제로 발표를 할 예정이다. 최근 AWS는 카오스 엔지니어링을 좀더 쉽게 할 수 있도록 돕는 도구인 ‘AWS Fault Injection Simulator(이하 FIS)’를 정식 출시했는데, 김신 엔지니어는 이 도구를 미리 사용해본 경험을 공유할 예정이다. 김신 엔지니어는 카오스엔지니어링 한국 커뮤니티를 이끌기도 했다. 지난 달 29일 서울 역삼동 AWS 사무실에서 김신 엔지니어로부터 카오스 엔지니어링에 대한 이야기를 들어봤다.

카오스 엔지니어링이라는 용어를 모르는 독자들이 많을 같은데, 소개를 부탁드립니다.

우리가 평소에 화재를 대비해서 소방 훈련을 미리 하잖아요? 불이 났을 경우 어떻게 행동해야 하고, 어떻게 해야 사람들이 안전하게 대피하고 불을 빨리 끌 수 있는지 연습을 하죠. 이와 비슷하게 IT시스템에서 그런 걸 하는 것을 카오스 엔지니어링이라고 합니다.

예를 들어 홍수가 나서 데이터센터 하나가 통째로 물에 잠겨 버렸다고 할 때 중단되지 않아야 하는 서비스가 중단이 되는지 안 되는지 실제로 훈련을 해보는 거죠.

이전에도 재해복구시스템이나 테스팅 도구들이 많이 있었는데, 카오스 엔지니어링이 별도로 필요한가요?

소프트웨어가 갈수록 복잡해지고 있잖아요. 토스를 비롯해서 수백명의 개발자가 서비스를 만드는 회사들이 많은데 그러다보니까 각 시스템들 중에서 하나가 문제가 생겼을 때 전체 시스템에 장애가 어떻게 전파되는지 잘 몰라요.

기존 테스트는 자기가 만든 것이 잘 작동하는지에 대한 테스트에요. 데이터센터가 불이 났을 때를 대비한 테스트는 하지 않죠. 카오스 엔지니어링은 그런 일이 벌어졌을 때 정말로 그 문제를 해결할 수 있는 엔지니어에게 알림이 가고 그분들이 집에서 뛰쳐나와서 얼마나 빨리 그 문제를 해결할 수 있는지에 대해서 실험을 해보는 겁니다.

그러니까 카오스 엔지니어링은 그냥 일반적인 테스트와 다르게 어떤 재난에 대해서 대비하는 핵심인가요?

네 맞아요. 그런 천재지변부터 누군가 실수로 전원을 뽑을 수도 있고, 컴퓨터 하드디스크가 망가진다든지 이런 다양한 상황들이 있잖아요, 그런 상황에서 우리 서비스가 장애를 내지 않고 잘 견뎌낼 수 있는가, 장애가 나면 얼마나 빨리 복구되는가에 대해 테스트하고 개선하는 프로세스를 카오스 엔지니어링이라고 합니다.

AWS 행사에서 발표를 하실 예정인데, AWS 같은 클라우드 서비스는 재난대비 같은 알아서 해주지 않나요?

그렇지 않습니다. AWS도 늘 파란불은 아니거든요. 종종 AWS도 잘 안 될 때가 있죠. 또 비용이나 여러가지 문제로 100% 클라우드를 쓰는 경우는 많지 않을 거에요. AWS를 사용하면서도 직접 서버를 운용하는 경우도 있고, 마이크로소프트 애저나 구글 클라우드 플랫폼과 같은 다른 클라우드를 사용하는 경우도 많아요.

2년전인가 3년전인가 AWS 장애로 배달의민족이나 쿠팡같은 서비스가 한꺼번에 중단돼서 사회문제가 적이 있습니다. 토스도 그때 장애가 있었던가요?

토스 같은 경우에는 큰 문제가 없었습니다

그게 카오스 엔지니어링 덕분이었던건가요?

정확히 카오스 엔지니어링이란 용어를 쓰면서 했었던 건 아니지만 비바리퍼블리카는 분명 그런 테스트들을 늘 하고 있기는 해요. 데이터센터 한 군데에 문제가 생겼을 때 정말로 고객들이 송금을 하는데 문제가 없는가에 대해서 늘 확인하고 있어요.

그런데 클라우드라는 원래 죽지 않아야 하는 아닌가요? 특정 인스턴스에 문제가 생겨도 다른 인스턴스가 빠르게 하던 일을 받아서 함으로써 이용자가 느끼는 서비스 중단은 최소화된다, 이런 개념 아니었나요?

제가 경험한 일이 있어요. 인스턴스 열 대를 띄워놨었는데 갑작스럽게 늘어난 부하 때문에 세 대가 죽었어요. 열 대가 하던 일을 일곱 대가 하게 됐으니 일곱 대도 죽을 게 분명하죠. 그 걸 막으려고 새로운 인스턴스를 띄웠어요. 그런데 새롭게 띄워지는 인스턴스들이 동시에 딱 뜨는 게 아니죠. 하나씩 차례로 뜨는데 새 인스턴스가 뜨자마자 하나씩 부하를 맞고 죽어버리는 거예요.

우리는 논리적으로 설계를 해서 서비스 장애가 없도록 구성을 해놨지만 실제로 트래픽이 많아서 인스턴스가 죽었을 때 원했던 대로 자동으로 복구되지는 않는 문제였던 거죠.

카오스 엔지니어링은 이런 상황을 미리 실험해 보는 겁니다. 트래픽을 인위적으로 늘려보고 인스턴스들이 죽는지 안죽는지, 죽었을 때 우리의 논리적 설계 대로 다른 인스턴스가 떠서 부하를 떠안고 서비스를 유지시키는지 확인해야죠. 실험했는데 예상했던 논리적 설계대로 되지 않으면 수정해서 또 실험을 해야죠.

글로벌 IT 기업들은 카오스 엔지니어링을 하고 있나요?

넷플릭스나 아마존 같이 큰 기업들, 잠깐의 장애가 발생해도 큰 경제적인 손실이 생기는 회사들은 계속 도입해보고 있어요. 그래서 넷플릭스에서 나온 카오스 엔지니어링 툴들이 되게 많아요.

그런 툴들은 오픈소스로 공개되어 있나요?

네, 카오스 몽키라는 오픈소스가 있어요. AWS는 대신 이론적인 정립을 한 것이 많아요. AWS에는 게임데이라는 행사가 있다고 알고 있어요. 자연재해와 같은 상황에서 AWS 서비스가 살아남을 수 있느냐에 대해서 팀 전체가 게임처럼 해보는 날이라고 해요. 이게 카오스 엔지니어링의 시조로 알고 있어요.

이번에 AWS 행사에서 카오스 엔지니어링을 주제로 발표할 예정인데, 어떤 내용의 발표를 예정인가요?

카오스 엔지니어링이 소프트웨어 엔지니어 사이에서도 그렇게 잘 알려진 개념은 아니에요. 그래서 카오스 엔지니어링이 뭔지부터 설명하는 자리예요. 또 이번에 AWS FIS(Fault Injection Simulator)라고 많은 사용자들이 카오스 엔지니어링을 쉽게 할 수 있도록 하는 제품을 새로 냈거든요. 그럴 미리 써본 경험을 이야기할 예정입니다.

미리 사용해본 FIS 좋던가요?

카오스 엔지니어링을 잘 하려면 눈에 보이는 앞단의 일 이외에 뒷단의 일들이 많아요. 그런데 AWS FIS는 이런 뒷단의 프로세스를 자연스럽게 유도하더라고요.

이번 발표에서 청중에게 전하고 싶은 메시지가 있나요?

‘우리 엔지니어들은 언제나 장애에 대비하고 있어야 된다. 카오스 엔지니어링이라는 개념이 있다, 그래서 비슷한 고민들을 하고 있는 사람들이 있다. 이제 커뮤니티에 활동도 하고 하면서 좀 알아봤으면 좋겠다.’ 정도입니다.

, 알겠습니다. 인터뷰 감사합니다.

감사합니다.

글. 바이라인네트워크
<심재석 기자>shimsky@byline.network

 

 

관련 글

첫 댓글

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다