brunch

You can make anything
by writing

C.S.Lewis

by 이동인 Mar 26. 2018

와탭으로 서비스 폭주 막아내기

IT 서비스 모니터링

웹사이트를 오픈한 지 약 90분 만에 한계치에 다다른 서버가 결국 멈춰버렸다. 마이어는 서버를 늘리기 위해 보리스 드라우트만에게 근처의 프라이스 매장으로 가서 컴퓨터를 10대 더 사오라고 지시했다. 자신은 웹사이트를 원래대로 되돌려놓는 작업에 들어갔다.

폭주하는 주문 탓에 창고 안의 레이저 프린터 용지는 다 엉켜버렸고, DVD를 걸어놓는 벽면도 디스크들로 어지럽게 뒤섞여버렸다. 절반 밖에 처리하지 못한 주문서가 한쪽에 가득 쌓였고, 직원들은 주문이 밀리지 않도록 비좁은 통로를 정신없이 뛰어다녔다.

넷플릭스-스타트업의 전설 | 지나 키팅, 박종근 저


많은 유명 서비스는 사용자 폭주로 서비스가 다운되는 히스토리를 가지고 있습니다. 사용자 증가는 정말 즐거운 일이지마 사용자 폭주로 인해 서비스가 다운되는 것은 끔찍한 일입니다. 이렇게 최대치 이상의 부하가 발생하는 경우 차선책은 초과된 부하를 다른 페이지로 보내는 것입니다. 이렇게 한다면 설계된 부하만큼은 서비스를 유지할 수 있습니다. 

물론 클라우드를 사용하여 확장성 있는 서비스를 만들면 좋겠지만 레거시가 있거나 서비스 구조가 받쳐주지 못하면 결국 서비스 전체가 멈추는 일이 발생합니다.



트랜잭션 Throttling(부하량 제어)

와탭의 애플리케이션 성능 관리 서비스는 이런 최악의 상황을 막아주는 트랜잭션 쓰로틀링 기능을 제공하고 있습니다. 와탭의 APM이 제공하는 쓰로틀링 기능은 최대 사용자(트랜잭션)를 정의하고 최대 사용자를 넘어가면  초과 사용자들은 임시 페이지로 넘기는 기능입니다. 동시 접속자 1000명을 최대 사용자라고 정의하면 1001번째 사용자는 임시 페이지로 넘어가게 되는 것입니다. 

  

whatap.cof 파일 설정

와탭의 트랜잭션 부하량 제어 기능을 사용하기 위해서는 whatap.cof 파일에 아래 내용을 상황에 맞쳐서 추가하면 됩니다. 설정파일의 변경 사항은 5초마다 갱신됩니다. 

throttle_enabled = true; 
부하량 제어기능 사용 여부를 설정합니다. 

throttle_limit = 10000; 
최대 부하량을 설저합니다. 

throttle_rejected_forward =
임시 페이지 주소를 설정합니다.  

throttle_target_urls = 
사이트 전체가 아닌 부하제어 URL을 특정하고 싶은 경우 사용합니다. 복수개를 사용할 시에는 ","를 사용합니다.

throttle_passing_url =
특정 URL을 제외하고 싶은 경우 사용합니다. 복수개를 사용할 시에는 ","를 사용합니다. 

throttle_passing_url_prefix = 
특정 URL 군을 제외하고 싶은 경우 상위 URL을 입력합니다. 


사이트 전체 부하량 제어하기

트랜잭션의 부하를 제어하는 가장 쉬운 방법은 사이트 전체를 제어하는 방법입니다. 아래는 사이트 전체 트랜잭션이 10,000개 이상 발생하면 10,000개 이후의 트랜잭션은 "https://abc/temppage"로 보냅니다.  

throttle_enabled = true; 
throttle_limit = 10000; 
throttle_rejected_forward = https://abc/tempage;


일부 URL 부하량 제어하기

특정 이벤트 페이지에만 부하가 높은 경우에는 URL을 특정하여 제어해야 하는 경우도 있습니다. 이런 경우에는 "throttle_target_urls" 설정을 추가합니다. 해당 URL로 들어오는 트랜잭션을 임시 페이지로 보내게 됩니다. 복수개의 URL을 처리하는 경우는 ","를 사용하여 입력합니다. 

throttle_enabled = true; 
throttle_limit = 10000; 
throttle_rejected_forward = https://abc/tempage;
throttle_target_urls = /sales/write/employee/seoul; 


부하량 제어 중 특정 URL만  통과시키기

유명 쇼핑몰에서 50% 할인 이벤트를 열어서 서비스가 용량을 초과했다고 예를 들어 보겠습니다. 쇼핑몰까지 들어가서 의류를 선택하고 결재 버튼을 눌렀는데 서비스 용량 초과 페이지로 넘어가면 안됩니다. 이렇게 연결과정에서 무조건 실행되어야 하는 URL은 부하량이 높아도 처리되어야 합니다. 이런 경우는 "throttle_passing_url" 을 설정합니다. 

throttle_enabled = true; 
throttle_limit = 10000; 
throttle_rejected_forward = https://abc/tempage;
throttle_passing_url = /sales/write/employee/seoul; 


와탭의 APM은 SaaS 서비스이기 때문에 이런 기능들을 평소 익혀 둔다면 문제가 생겼을 경우에 하루 이틀 정도만 사용하는 것도 가능합니다. 이런 트랜잭션 쓰로틀링 기능을 제공하는 솔류션을 구매하게 되면 수백만원에서 수천만원의 비용이 들어갈 수도 있을 뿐더러 바로 도입할 수도 없습니다. 하지만 와탭의 애플리케이션 성능 분석 서비스는 SaaS 기반의 서비스이기 때문에 필요한 순간에 바로 가입하여 사용 할 수도 있습니다.


와탭으로 모니터링 하기 - 목차 바로가기

매거진의 이전글 트랜잭션 목록
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari