티스토리 뷰

우리가 구축한 서비스가 견고한지, 가용성을 보장하는지, 확장성은 어떤지 등 시스템 탄력성을 테스트하기 위한 기법으로 카오스 엔지니어링이 있습니다. AWS Resilience Hub - Fault Injection Service(FIS)는 카오스 엔지니어링을 AWS에서 손쉽게 할 수 있도록 돕습니다. 이 기능을 이해하기 위해서는 aws cli로 접근하는 것보다 콘솔을 이용하시는 게 좋습니다. 어느 정도 기능을 익힌 후에는 터미널에서 마음껏 실행할 수 있을 겁니다.

FIS의 기본 콘셉트는 Experiment templates 메뉴에서 실험 템플릿을 만들고, 템플릿을 실행하는 것에서 출발합니다. 템플릿에는 특정 리소스(e.g., EC2)의 ID로 지정해서 이벤트(종료 등)를 보낼 수도 있고, tags 기반으로 설정할 수도 있습니다. 좀 더 자세한 건 아래 설정을 통해 확인해 보시죠.

우선 Experiment templates 메뉴로 진입합니다. 그리고 우측 상단에 보이는 Create experiment template를 눌러 줍니다.

FIS 서비스를 검색해서 들어가시면 됩니다

 

테스트 계정 범위를 지정할 수 있습니다. 여기서는 기본 콘셉트를 이해하기 위해 This AWS account를 선택합니다.

Account targeting 지정

 

FIS에서 흔히 사용되는 Spot 인스턴스에 interruptions를 보내는 설정을 해보겠습니다. Actions and targets에서 Action을 지정하고 Target에 연결해 주면 되는데요. 우선 Add action(+)를 클릭합니다.

 

아래와 같이 설정해 줍니다. Action type을 EC2로 하고 send-spot-instance-interruptiops을 선택합니다. Duration before interruption은 2분으로 합니다. 실제 Spot 종료 전에 인스턴스가 받게 되는 interruption 이벤트가 2분 전에 수신되므로 같은 상황을 만들어주는 겁니다.

Target 이름은 나중에 수정해도 됩니다.

 

저장을 하면 아래와 같이 Action과 Target이 연결되어 있는 것을 확인할 수 있습니다. 쉽게 표현해서 Action으로 어떤 이벤트(spot interruption 전송)를 정의한 겁니다. 그럼 그 이벤트를 누구(Target)에게 전송할지를 정해야겠죠?

action과 target이 연결된 것을 확인합니다.

 

이제 SpotInstances-Target-1을 클릭해서 대상을 수정해 줍니다. 기본 설정은 아래와 같은데 Resource ID를 지정해서 복수로 체크할 수 있습니다. 만약 5개를 체크한 상태에서 Selection mode가 All이면 5개 모두에게 Action(spot interruption)이 전송됩니다. All이 아닌 Count로 2를 지정하게 되면 5개 중에 2개를 랜덤으로 선택해서 이벤트를 전송하게됩니다.

Resource tags, filters and parameters를 통해 타겟을 지정할수도 있습니다

 

아래와 같이 인스턴스의 tags를 지정해 봅시다.

Owner tag가 caley인 것들이 대상이 됩니다.

 

이대로 저장하려고 하면 아래와 같은 경고 팝업이 출력됩니다. 종료 조건이 없기 때문인데요. CloudWatch 알람으로 종료 조건을 설정할 수 있지만 여기서는 조건 없이 해보겠습니다.

종료 조건 없이 진행합니다.

 

자, 아래와 같이 실험 템플릿이 생성되었습니다.

바로 실험하기에는 아무래도 걱정스럽습니다

 

우측 상단에 Start experiment를 누르고 싶은 마음도 있지만 설정이 정상적으로 된 것인지, 실제 실험을 시작했을 때 종료될 인스턴스는 무엇인지 dry-run 해볼 수 있다면 좋겠습니다. 다행히도 FIS에서는 어떤 타깃에 이벤트가 전달되는지 미리 볼 수 있습니다. 위에 이미지 중앙에 있는 Targets 탭으로 이동해서 Generate preview를 클릭합니다.

Generate preview를 통해 dry-run 합니다.

 

그럼 아래와 같이 어떤 인스턴스가 이벤트를 받을 것인지 확인됩니다.

Target information을 확인합니다

 

자, 확인이 끝났으면 Start experiment를 눌러줍니다. 그리고 이제 좌측 탭을 이동해서 Experiments를 통해 방금 실행시킨 템플릿의 결과를 확인할 수 있습니다.

동작이 끝나면 Completed 상태로 바뀝니다.

 

 

# 마무리

위에서 소개한 FIS를 모를 때는 카오스 몽키를 흉내내기 위해 AWS 콘솔을 누비며 부지런히 서비스를 종료시켰었습니다. 말 그대로 정말 인간 몽키였습니다(하하). 지금은 무려 매니지드 서비스인 FIS를 통해 더 스마트하게 카오스 엔지니어링을 할 수 있게 됐습니다. 혹시 아직 인간 몽키 역할을 담당하시는 분이 계시다면 이번 글이 도움이 되셨기를 바랍니다 :-) 

댓글
최근에 올라온 글
최근에 달린 댓글
글 보관함
Total
Today
Yesterday