Quantcast
Channel: Open API, Cloud, DevOps 와 eBook » DevOps
Viewing all articles
Browse latest Browse all 10

(kth 개발자블로그) API와 서비스를 스마트하게 모니터링 하는 방법, Safari Tour 를 소개합니다.

$
0
0

이 글은 kth 개발자 블로그에 제가 올렸던 글로, 해당 블로그가 없어지면서 제 개인 블로그로 백업하였습니다.

포스팅 일자: 2013년 2월 4일

API와 서비스를 스마트하게 모니터링 하는 방법, Safari Tour 를 소개합니다. | kth 개발자 블로그

kth DevOps

kth 에서 DevOps 팀을 조직한지 거의 1년이 되었습니다.
이전의 포스팅과 H3 2013 에서 DevOps 에 대해서 소개해 드린 바 있습니다.

DevOps 이전 포스트 보기

kth 뿐만 아니라 대 고객서비스를 하고 있는 곳에서는
기획 > 설계 > 개발 > 빌드 > 테스트 > 배포 > 모니터링
에 이르는 어플리케이션 라이프사이클에 대한 고민을 가지고 있습니다.

이 단계를 짧게 연속적으로 끊임없이 Agile 하게 수행할 수 있어야 고객이 원하는 것을 신속히 제공하여 서비스의 사용률 하락 없이 계속 발전해 나갈수 있는데요. 저희 팀에서는 각 단계별로 직접 개발하거나, 오픈소스 솔루션을 도입/개선 해서 해결하고 있습니다.

Safari Tour

이번 글에서는 어플리케이션 라이프사이클의 가장 마지막에 있는 모니터링을 위해 직접 개발한 Safari Tour 를 소개하고자 합니다. 이 이름은 Netflix 의 Chaos Monkey 에서 영감을 받아 다음의 개념들을 담을 수 있도록 하기위해 “사파리 투어 (Safari Tour)” 라고 명명하였습니다.

<Safari Tour>
jeep_safari1

(image from :  http://www.safari.com/wp-content/uploads/2010/11/jeep_safari1.jpg)

<Safari Tour Entity>
safaritour-entites1

사파리투어는 야생에서 원숭이(동물)를 데려다 훈련시키고 그것들을 우리에 넣어서 원하는 지역에 배치하고 코스를 지정하는 것이 실제 동물원에서 관람객을 받아서 관광할 수있게 하는 것과 비슷하다고 할 수 있습니다.

<Safari Tour 절차>
safaritour-sequence

Architecture

Safari Tour 는 서비스 개발자, 기획자, 사업담당자가  DevOps 팀에 별도로 요청이나 교육 없이도 쉽게 등록하여 서비스의 안정성을 높일 수 있도록 개발되었습니다. 이러한 사용성에 대한 요구와 운영의 요구를 수용하기 위해 다음과 같이 주요 요구사항들을 정리하여 그에 맞는 아키텍처를 수립하였습니다.

사파리투어 아키텍처의 요건
  1. Zookeeper 는 지역에 구애받지 않고 쉽게 배치할 수 있어야 한다.
  2. 모니터링 트래픽을 여러 Zookeeper 가 분산해서 처리해야 한다.
  3. Single point failure 를 극복하기 위해  job 을 클러스터링 할 수 있어야 한다.
  4. 모니터링 대상 프로토콜을 쉽게 확장 할 수 있어야 한다.
  5. 모니터링 등록이 쉬여야 한다.
  6. 단순확인 및 시나리오모드 모두 지원해야 한다.
  7. 이 시스템은 DevOps팀만이 아니라 모든 사용자가 주인이고 신뢰대상이므로, 생성한 오너는 생성/수정/삭제의 자유를 보장해야 한다.

<Safari Tour Architecture>
safaritour-architecture1

이 아키텍처에서는 중추적이 역할을 하는 가장 중요한 부분이 Work Message Bus 인데, 처음엔Gearman 의 Job Server 모델을 사용하려 했으나, 메시지에 대한 보안 대책이 없어, SSL 과 인증을 지원하는 RabbitMQ 를 사용하게 되었습니다. 그 다음 모니터링을 수행할 Zookeeper 는 테스트 시나리오가 XML 포멧으로 오픈되어 있어 전용 툴을 사용하지 않아도 외부에서 직접 생성하여 사용할 수 있는 SoapUI 를 채택하였습니다.

<Safari Tour 에서 사용한 오픈소스>
safaritour-architecture-opensource 

Monitoring, Alarm

Safari Tour 에서 모니터링을 등록하는 순서는 다음과 같습니다.

  1. Monkey 를 신규 생성한다.
    1. 타켓 URL 을 입력한다.
    2. http method 를 선택한다. (GET, POST, PUT, DELETE)
    3. header 가 필요하다면 입력한다.
    4. http body 에 파라미터가 필요하다면 입력한다.
    5. 성공으로 판단할 조건으로 status code, response time, response body 입력한다.
  2. Cage 를 생성한다.
    1. 모니터링을 수행할 Zoo 를 선택한다.
    2. 이미 생성된 Monkey 를 순서대로 배치한다.
    3. Monkey 에서 지원하지 않는 프로토콜 또는 좀더 복잡한 시나리오가 필요하다면 SoapUI 에서 생성한 프로젝트 xml 을 붙여넣는다.
    4. History 통계에서 묶어서 보고싶은 Tour 를 선택한다.
    5. 모니터링을 수행할 시간과 주기를 선택한다.
  3.  약 1분 후 메인화면에서 모니터링 결과를 확인할 수 있다.

<모니터링을 등록 / 확인하는 동영상>

Safari Tour 는 직접 등록한 모니터링에 대한 알람 뿐 아니라, Amazon Cloud Watch – SNS 와 연동하여 발송 할 수 있습니다.
Amazon SNS(Simple Notification Service) 는 Cloud Watch 에서 발생한 알람을 SMS, email, http/https 로 발송할 수 있는데, 운영자가 인지하는데 가장 효과적인 SMS 는 특정 지역으로 한정되어 있어 우리나라 이통사로는 발송할 수 없습니다. 이를 위해 SNS 를 https 로 받아 룰에 따라서 대상자에게 SMS 를 발송할 수 있습니다.

Open API

Safari Tour 에서 웹에서 모니터링을 등록하고 확인할 수도 있지만, Open API 를 통해서 직접 등록, 조회 할 수 있습니다.

<Open API List>
safaritour-apis

진행 예정 사항

  • 외부 서비스 오픈
    Safari Tour 는 현재 1.0 버전으로 kth 내부에서 사용되고 있으며, 2월 말 kth API Store를 통하여 외부 오픈을 시작합니다.
  • 배포 후 자동 모니터링
    개발 예정인 배포시스템과 연동하여, 배포된 시스템을 타켓으로 테스트를 수행하여 배포 즉시 배포 성공/실패 여부를 판단할 수 있도록 합니다.
  • Open API 확대
    데이터 위주에서 page 에 직접 include 할 수 있는 그래프 API 추가
  • 모니터링 추적
    모니터링이 발생해서 database 에 수집되기 까지 거쳐야 하는 단계를 실시간 추적하여 지연구간을 파악할 수 있도록 합니다.

Reference

About the author

KTH DevOps팀 팀장 김동수 입니다. 듣도 보지도 못했던 DevOps 개념을 개발과 운영에 접목하고자 사례를 수집하고 고민하고 있습니다. 뛰어난 팀원들의 능력을 믿고 일을 벌려나가고 있는 중입니다. DevOps팀원 여러분 사랑합니다.



Viewing all articles
Browse latest Browse all 10

Latest Images

Trending Articles





Latest Images