클래스팅, Cloud AutoScaling 환경에서실시간모니터링을통해빠른대응력을확보하다. 클래스팅 클래스팅개발팀윤요한과장작성제니퍼소프트엮음
클래스팅기업정보 산업분야 교육플랫폼 왜 제니퍼인가? : 주요성능지표 인기교육앱 1 위 전체인기앱 3 위 회원증가추이 150,000+ 280,000+,000,000+ 교사회원수개설클래스수전체회원수 클래스팅은서버로요청되는트래픽의양을파악하기위해기본적으로 Nginx에서제공되는로그와서버설치형모니터링도구인 AWStats 등을사용하고있으며클라이언트에서구글분석기, 앱크래시수집툴인 Crashlytics 를통해자체로그수집도구를 제니퍼를사용하게되면서서비스장애문제해결을위해파악해야하는대부분의정보를제니퍼 PHP 한곳에서모니터링할수있어서매우효율적이었다. 제니퍼의여러기능중하나인실시간모니터링을통해트래픽대응속도를올릴수있었으며, 장애의 INTRO 일평균동접자만명이상 2012 2013 201 2015 2016 2017 1 사용하여트래픽의양을파악하고있다. 그러나이러한방식으로는월 / 일별로의전체트래픽의양은파악할수있으나, 매순간서버로요청되는트래픽의양을파악하기가매우어려웠다. 원인이되는여러요소를파악하여빠르게문제를해결할수있었다. 지인의소개로알게되었지만정말많은도움을받았다. 클래스팅은더나은학교를꿈꾸는서비스로주로모바일앱 ( 안드로이드, 아이폰 ) 과웹으로도 서비스가제공되고있다. 학교교사의만족과자발적인확산으로가장많은사용자가사용하는 국내최대교육플랫폼으로성장하였다. 특히, 구글분석기의경우실시간으로사용중인사용자의수등에대한기본적인정보는알수있었지만어느부분에서서비스에병목이있는지, 어느부분에서문제가발생하는지등과같은서비스장애에대한 - 교육앱다운로드순위 1 위, 전체앱다운로드순위 3 위 (2017 년 3 월 / 구글플레이스토어기준 ) 원인을파악할수없었다. - 전체사용자,000,000+, 이용교사수 150,000+, 이용학교수 1,500+ (2017 년 6 월기준 ) - 일평균동접자수만명이상 ( 구글분석기, 오후 2 시 ~3 시기준 ) 제니퍼사용시작일 2015 년 9 월부터 무엇을모니터링했는가? PHP 서버를모니터링했다. 2 3
주요 클래스팅 제니퍼의 개선된점은 모니터링대상 구체적인사용방법과 무엇인가 : 서비스 : 제니퍼를통해해결된사항 : 서버 API 에서발생하는문제의원인을쉽게찾아해 클래스팅서비스의경우 Amazon Web Service 클래스팅은소셜네트워크서비스의특징을가지고있다. 이러한이유로일반 RDB 뿐만아니라 No-SQL DB 도 결할수있었다. 특히, 문제의원인과관련된클래스, (AWS) 를통해서서비스를운영하고있으며, 서버는 사용하고있다. 그중에서 AWS 의 Dynamo DB 를뉴스피드 Post 등에사용하고있다. AWS 의 Dynamo DB 함수등이잘표현되어있어해결이큰도움이되었다. 사용량에따라그개수가조절되고있다. 는 write/read capacity 을설정하여야하고설정된양에따라비용을산정하고있다. 2 또한, 제니퍼를통해서순간적으로발생하는트래픽에대한대응속도가매우빨라졌다. 개선점을정리하자면다음과같다. 제니퍼를통해서현재서비스중인서버의개수, 각서버의상태, 서비스정상동작여부, 요청에대한응답시간등을파악하고있다. - 3 1 클래스팅은문제가발생하게되면매번시스템로깅이나인바운드체크등을위해콘솔접속을하여 CPU 사용량, 메모리사용량등을확인했었는데, 문제해결을위해파악해야하는대부분의정보를제니퍼 PHP 한곳에서모니터링할수있어서무척효율적이었다. 또한, 모바일앱클라이언트의경우로그수집 이되지않아서파악이어려웠던부분들도파악할수 있게되었다. 2 특히AWS에서는 Auto scaling 기능을사용하여사용량에따라서버의개수가조절이되고있으며 [ 클래스팅모니터링화면 ] 이와관련하여 AWS CloudWatch 로정상적인동작 서비스비용절감을위해서는사용자의사용량에따 하여대규모모바일알림과같은상황에서간헐적으로 여부를모니터링하고있다. 그러나, 서비스의특성 른 write/read capacity 에자동조절이필수적이며 Dynamo DB write/read capacity 가부족하게되어 상순간적인트래픽이매우많이발생하는데, AWS AWS 에서도 CloudWatch 등을통한 auto scaling 서비스처리속도가느려지는문제가발생하게되었다. CloudWatch 는이를실시간이아닌 1~2 분정도늦게 기능을제공하고있다. 그러나, 활성사용자의대부 이러한경우에는상황을빠르게인지하고수 리포팅해주기때문에트래픽을관리하는것이매우 분이모바일로접속하고있고이로인해활성사용 동으로 write/read capacity 를증가시켜줘야하지 어려웠다. 그러나제니퍼는실시간으로리포팅할수 자의사용량은매우빠르지만 AWS 에서제공하는 만다른여러모니터링툴로는이러한부분을실시간 있어서장애를빠르게대응할수있었다. CloudWatch 는실제사용량을따라가지못하고상 으로감지하기어려웠다. 하지만제니퍼의실시간모 대적으로느리게반영되는한계가있었다. 니터링기능을통해서빠른대응이가능했다. 5
1 다이나믹프로파일 (Dynamic Profile) 기능을 2 외부서비스호출지연현상파악 사용하여처리시간이느린메소드콜확인 클래스팅은여러개의프레임워크로다양한서비스 대부분빠른시간에안에서버요청에대한응답이이 가운영되고있으며그중에서모두가가장잘알고 루어졌으나, 간혹매우오랜시간동안응답하지않는 있는클래스팅서비스는 PHP 로구현되어있다. 서버요청이있었다. 이러한문제를 Dynamic Profile 기능을통해확인할수있었는데, 관련한문제가서버프로그램의문제가아닌 DB에서응답이지연된다는사실을확인할수있었다. 또한, 장애의원인으로추정되는클래스의목록을제니퍼 PHP를통해프로파일링하였고, 장애원인이되는메소드콜과함수인자를확인하여어떠한 DB 요청시지연이발생하는 기존에는클래스팅서버요청에서응답시간이느린요청의원인이 PHP의문제인지또는클래스팅내의다른서비스의문제인지판단하기어려웠다. 제니퍼를이용하여해당문제의원인이 PHP 서버의문제가아닌다른서비스의문제라는것을확인할수있었고, 이를통해서문제를해결할수있었다. 지문제를확인하여이를해결할수있었다. [ 그림 1 : 다이나믹프로파일 (Dynamic Profile) 기능을사용하여처리시간이느린메소드콜확인 ] [ 그림 2 : 외부서비스호출지연현상파악 ] 6 7
3 PHP 외부 extension 에서발생하는 Segmenta- 성능브라우저 (Performance Browser) 를통해 AWS tion Fault 문제파악및수정 Dynamo DB 서비스 read/write threshold 를설정 클래스팅서버를업데이트한후특정요청이결과 클래스팅은여러 AWS 서비스를이용하고있다. 그중 값을사용자에게반환하지못하는상황이발생했다. 에서 Dynamo DB 서비스의 read/write 의적절한 제니퍼를모니터링하면서문제확인결과, 원인이 threshold 설정이매우필요했다. ( 현재는 AWS Dy- PHP 외부 extension 모듈에있다는것을 ERROR 상 namo 에서 auto scaling 을위한서비스제공한다 ) 세화면을통해확인할수있었다. 이를통해서문제의 이를효율적으로설정하고관리하기위해서는매시 원인이된해당 extension모듈을적절한버전으로새롭게설치함으로써해당문제를해결할수있었다. 간당서비스 capacity를달리설정해사용해야한다. 이값을설정하기위해제니퍼성능브라우저의 TPS Metric 그래프를활용하였는데시간당 TPS를모니터링하면서적절한 threshold 값을설정할수있었다. 5 실시간모니터링기능활용클래스팅은 Auto scaling을사용하여서버의개수가조 절되기때문에모든서버를항상실시간으로관리해야 한다. 제니퍼에서제공하는제니퍼대시보드는서버자원 (CPU, 메모리등 ) 사용률, 병목상황, TPS 등기본적 인정보를한번에보여주기때문에매우효율적이다. 클래스팅은이를지속적으로모니터링하고있다. [ 그림 : 성능브라우저 (Performance Browser) ] [ 그림 3 : PHP 외부 extension 에서발생하는 Segmentation Fault 문제파악및수정 ] [ 그림 5 실시간모니터링대시보드 ] 8 9
제니퍼를통한 향후활용계획 : 제니퍼는다음의장점을가지고있다. - 외부서비스연동에있어서문제발생시해결이용이하다. - 로그수집없이도기본적인정보파악을할수있다. 5 클래스팅개발자윤요한 - 성능브라우저를통한서비스이용파악이가능하다. - 서버의실시간방문자수를한눈에파악할수있다. - 서버트래픽이한눈에파악할수있어서버증설타임을결정하는데도움이된다. Application Performance 서비스장애문제해결을위해파악해야하는대부분의정보를제니퍼한곳에서모니터링할수있다는것은매우효율적이다. 다른여러모니터링툴로는이러한부분을실시간으로모니터링하고감지하기어렵기때문이다. 서비스증설이나이벤트에도효과적이다. 클래스팅은제니퍼를지속적으로사용하려고한다. 10
2017 SOFT,INC. All rights reserved. All trademarks, trade names, service mark and logos referenced herein belong to their respective companies. This document is for your informational purposes only. To the extent permitted by applicable law. 이문서는제니퍼를사용하고있는기업을대상으로설문하였던내용을 제니퍼소프트에서편집하여발행한리포트입니다.