이용자관점 + @
클라우드성능측정안
손영수
L4 WEB WAS DB
문제 인지 인지+분석 분석
APM으로 Code Level로 분석
비정상 정상
응답시간 응답시간
처리 량처리 량
Infra Monitoring Application Monitoring
Infrastruture Monitoring로 문제되는 자원 판단
부하발생및 모니터링 프로세스
부하발생
사용자 입장에서 느끼는 서비스는 응답시간
API Testing / Monitoring
L4 WEB WAS DB
문제 인지 인지+분석 분석
APM으로 Code Level로 분석
응답시간처리 량
Infra Monitoring Application Monitoring
Infrastruture Monitoring로 문제되는 자원 판단
적합한 도구란 ?(클라우드 제공자 성능 + IaaS/SaaS 사용자 평가)
부하발생
사용자 입장에서 느끼는 서비스는 응답시간
API Testing / Monitoring
응답간의편차의원인은?
어떻게 측정해야 하나?
Application Monitoring
APIMonitoring
InfrastructureMonitoring
1 API모니터링소개
API 시대의도래 (드디어???)
• - ) > , > ,(
• , � �
클라우드 환경의변화
•
Monolithic -> Micro Service 로..
API 모니터링전에준비할것.
어디까지할래?
• 단위테스트 : 개별 API 연산의기능을테스트합니다.
• 기능테스트 : 더넓은시나리오의기능을테스트하기위해. 유닛테스트의그룹하여블록으로테스트하여결과를도출합니다.
• 런타임 / 오류감지 : 응용프로그램을모니터링하여예외및리소스누수같은문제를식별합니다.
• UI 테스트 : 사용자인터페이스의모든측면이예상대로작동하는지
확인하기위해종단(화면부터 ~ DB까지)간통합테스트의일환으로
수행됩니다.
여러 지역에서 여러 통신사를 통하여 여러 플랫폼으로 접근해 올 것입니다. 그러나 기존의APM으로는 실 사용자단에서 일어난 문제를 전혀 알 수 없으며 기존의 API Monitoring은 단지 해당
서비스가죽어있는지살아있는지만확인할수있을뿐입니다.
대구지역
망에서문제가
발생!
기존의 APM기존의 API
Monitoring
서버에는
문제가
없는데요.
서비스는살아
있습니다.
기존의서비스들은문제점을진단하지
못한다!
API Monitoring 도입해야하는이유 1
QA및 비개발자들도 쉽게 테스트 케이스를 제작할 수 있으며 테스트 케이스를 일일히 직접 손으로 만들지 않고 SDK를삽입하여자동으로테스트케이스를생성해줍니다.또한생성된테스트케이스는블럭을사용하여쉽고직관적이게수정할수있습니다.
• 블럭을사용해서테스트케이스를직관적이고쉽게제작가능
• 기존의일일히수작업을거쳐야했던 Test Case를 SDK를이용하여간단한코드삽입으로자동생성가능
• Test Case를자동생성한후조금의블럭수정으로여러종류의테스트케이스생성가능
• 쉽게 여러종류의부하테스트가능
쉬운시나리오기반의 API 모니터링제공
API Monitoring
기존의 API Monitoring서비스는단지서비스가죽었는지살았는지만판별가능할뿐입니다.그러나 REDSTOP의 API Monitoring은지역별로, ISP(통신사)별로, 플랫폼별로세밀하게확인할수있습니다.
• 체크포인트를추가하여여러가지환경에서 API Monitoring가능
• 다양한 PC환경및모바일환경에서의상태를진단가능
• 특정지역에서 API의상태를진단가능
• ISP(통신사)별로 API의상태를진단가능
• 장애발생시유의미한결과레포트를제공
• 대시보드를통하여현재어떠한 API에서문제가많이발생하고문제가발생가능성이높은
API인지확인가능
Mobile PC
모바일 및 PC에 체크
포인트 설치
솔루션 개요
기존API Monitoring
• 특정 API의 연결 여부를 확인 가능
• 여러가지 상황에서의 API 연결 여부 확인 불가능
제공되는API Monitoring
• 지역별로 특정 API의 연결 여부를 확인 가능
• ISP(통신사)에서의 특정 API의 연결 여부를 확인 가능
• 다양한 플랫폼 별(PC나 모바일등)로 특정 API의 연결 여부를 확인 가능
• 쉬운 체크 포인트 서버 추가 가능.
API Monitoring 차별점
제공드리는 API 모니터링의장점
1 2
3 4
데이터수집을통한Test�Case�자동 추출
TC를매번작성하거나데이터를변경하는
번거로움없앰
Block을 통한쉬운테스트
비개발자도쉽게
수정/테스트할수있음
누구나할수있는쉬운부하테스트
다양한부하타입템플릿을통해
성능지표를모르는비전문가도쉽게
HOST를 직접설치지원상세한 API�모니터링
직접HOST를지정함으로써비용절감
지역별,�ISP별,�플랫폼별지표로상세하게
서비스전체흐름도
Block으로 쉽게
API 테스트 & 시나리오 구성
HTTP Request 후킹으로
테스트 케이스 자동 생성
부하 테스트 성능 레포트
Swagger에서
API Import
원하는 환경에서
언제든 쉽게 테스트
서비스전체흐름도
Block으로 쉽게
API 테스트 & 시나리오 구
성
HTTP Request 후킹으
로
테스트 케이스 자동 생
성 부하 테스트 성능 레포트
Swagger에서
API Import
원하는 환경에서
언제든 쉽게 테스트
Point1
주요기능1. HTTP Request 후킹으로 API Test Case 자동생성
Our Solution
Pain Point
사용자의코드내에삽입하여 Real 데이터를수집
이를기반으로테스트케이스도출
테스트케이스를직접만드는수고를덜어줌
1. 초기테스트케이스생성2. 신규서비스출시, 버전업데이트등잦은 API 변경매번 API Test Case 재작성및변경
너무번거로워 ! 많은시간소요 !
Objective C Swift
AFNetworking Alamofire
Cocoa Framework - URLProtocol
Kernel and Device Drivers
iOS
Application
개발원리
iOS
주요기능1. HTTP Request 후킹으로 API Test Case 자동생성
동작원리
Collect Server RDBMS Data Anaysis & Parsing Server 자동생성된Test Case 제공
사용자가타겟서비스
실제처럼사용
개발자가
코드에삽입
Request 후킹
Auto Collect로
Test Case 자동생성
주요기능1. HTTP Request 후킹으로 API Test Case 자동생성
Step1-1. Hooking으로 API Test Case 자동생성사용자는 평소와 같이 타겟 서비스(웹/앱)을 사용합니다. 이때 발생하는 HTTP Request/Response를 미리 심어놓은코드를통해 REDSTOP서버에서수집합니다.
iOS에서 Intercept 성공
android에서 Intercept 성공
Step1-1. Hooking으로 API Test Case 자동생성‘Start’버튼을누르면,미리지정된시간동안발생하는 HTTP Request/Response를 REDSTOP서버에서수집을시작합니다.
Test�Case� Test�Case�
Step1-1. Hooking으로 API Test Case 자동생성REDSTOP 서버에 수집된 데이터를 기반으로 사용자에게 Test Case Set을 자동으로 생성하여 제공합니다. 사용자는이 Test Set을수정하여사용할수있습니다.
Step1-2. Swagger에서 Import미리정의된 Swagger Specification에서정의해놓은 API정보를가져올수있습니다. Base URL주소를복사합니다.
Copy!
Step1-2. Swagger에서 ImportREDSTOP에서 Base URL을붙여넣습니다.
Step1-2. Swagger에서 ImportAPI명세연동완료!
Step1-2. Swagger에서 Import프로젝트메인화면에서다시확인해보면 Test Case가추가된모습을볼수있습니다.
Before After
서비스전체흐름도
Block으로 쉽게
API 테스트 & 시나리오 구
성
HTTP Request 후킹으
로
테스트 케이스 자동 생
성 부하 테스트 성능 레포트
Swagger에서
API Import
고객용 앱으로
원하는 환경에서
언제든 쉽게 테스트
주요기능2. Block으로쉽게 API 테스트 & 시나리오구성
Our Solution
Pain Point
비개발자 QA/Tester에게테스트자동화? 스크립트?는너무어려워!
테스트시나리오구성도복잡해...
Block 조립방식으로비개발자도쉽게 Test 할수있는인터페이스언제든쉽게, 원하는대로테스트시나리오구성
주요기능2. Block으로쉽게 API 테스트 & 시나리오구성
동작원리
사용자가 Block으로
Test Case 생성 /수정 / 삭제블록 XML 데이터파싱 DB에연동, 저장
Google ‘Blockly’
Parsing!
블록단위로테스트
Step2. Block으로쉽게 API 테스트 & 시나리오구성블록을드래그해서 API Test를생성,추가할수있습니다.블록들을조합해서테스트시나리오를구성합니다.
Step2. Block으로쉽게 API 테스트 & 시나리오구성지정한단위별로,시나리오별로한꺼번에여러개의 API를호출하여테스트할수있습니다.
Step2. Block으로쉽게 API 테스트 & 시나리오구성지정한단위별로,시나리오별로한꺼번에여러개의 API를호출하여테스트할수있습니다.
Step2. Block으로쉽게 API 테스트 & 시나리오구성지정한단위별로,시나리오별로한꺼번에여러개의 API를호출하여테스트할수있습니다.
서비스전체흐름도
Block으로 쉽게
API 테스트 & 시나리오 구
성
HTTP Request 후킹으
로
테스트 케이스 자동 생
성 부하 테스트 성능 레포트
Swagger에서
API Import
고객용 앱으로
원하는 환경에서
언제든 쉽게 테스트
주요기능3. 부하테스트
Our Solution
Pain Point
개발자조차도쓰기가너무어려워서, 제대로부하테스트를할줄아는엔지니어가극히일부이다.
성능테스트환경을한번구축하는데너무오래걸리고, 많은비용이든다.
부하/성능을잘몰라도부하테스트를쉽게하고싶다.
성능지표를몰라도 GUI기반으로누구나부하테스트를할수있게하자
- 블록으로쉽게 Setup한시나리오그대로부하를- 실제같은, 다양한상황별부하타입템플릿제공 (Stress,Warm up, Soak ...)
주요기능3. 부하테스트
동작원리
Worker
(Queueing)
Time-Series DB
Collect Server
Data Analysis Server
Load Server
Target ServiceRequest
Response
API ServerRDBMS
Step3. 부하테스트만든블록을그대로가져와서테스트시나리오를만들수있습니다
Step3. 부하테스트실제같은,다양한 상황별 부하 타입과 그에 맞는 Parameter를 제공하여 성능 지표를 모르는 비전문가도 쉽게 부하테스트를할수있습니다.
Step3. 부하테스트서비스의특정시나리오, API의성능테스트결과를레포트로확인할수있습니다.
서비스전체흐름도
Block으로 쉽게
API 테스트 & 시나리오 구
성
HTTP Request 후킹으
로
테스트 케이스 자동 생
성 부하 테스트 성능 레포트
Swagger에서
API Import
고객용 앱으로
원하는 환경에서
언제든 쉽게 테스트
Point4
주요기능4. 원하는환경에서, 언제든쉽게테스트
Our Solution
Pain Point
1. API 테스트를 PC말고내가원할때한손으로간편하게할수는없을까?
2. 사용자환경은천차만별인데… 단일환경이아닌,다양한 User Condition(지역, 망, 플랫폼)에서테스트하고싶어
3. 클라우드서버에서대신 Call을보내기때문에, URL 갯수, Call 주기를늘릴때마다그비용매우증가, 고스란히고객부담이된다
1. 고객용앱을제공하여, REDSTOP의웹애플리케이션에서만든 Test Case를모바일에서도실행가능!
2. 고객이원할때손쉽게, 원하는환경에서테스트가능!
3. 일반적인 클라우드 서버에서 API Call을 보내는 방법에 비해 고객이 부담하게 되는테스트서버비용절감
동작원리
Worker
(Queueing)
Time-Series DB
Collect Server
Monitoring Server
Check Point 설치
Target ServerRequest
Response
API ServerRDBMS
주요기능4. 원하는환경에서, 언제든쉽게테스트
사용자별 id와 password(또는 Project키)로모바일앱/웹에로그인하면,해당프로젝트에서생성했던 API Test Set데
이터를서버에서불러옵니다.
Step4. 원하는환경에서언제든쉽게테스트
Step4. 원하는환경에서언제든쉽게테스트미리지정한주기대로앱/웹에서주기적으로,또는 Play버튼으로원할때마다 API Call을보낼수있습니다.이때타겟서버로부터받는모든 Response를 REDSTOP서버에수집합니다.
대시보드와커스텀체크포인트
1
2
3
4 5
6
7
- 앞서생성한 Test Set을 5분주기로호출하여각각의 API를모니터링합니다.
- API Call을보낼Checkpoint를나의 PC, Mobile Phone으로지정할수있습니다.
1
2
3
4
5
6
7
Summary : 현재모니터링중인프로젝트에대한전반적인
상황을요약해서보여줍니다. 전체API 개수, 가용성, 평균응답시간, Check Point 정보를각각나타냅니다.
Heavy Latency : 최근가장높은지연율을보인 API를
분석하여나타냅니다.
Regional Analysis : 지역별로 API의응답상황을보여줍니다.
Error : 최근에러가발생했던 API를보여줍니다
Problem Issue : 문제가되는, 주목할만한성능이슈가있는
API를분석해서보여줍니다.
Availabilty : 현재모니터링중인프로젝트의시간에따른
가용성변화를실시간그래프로나타냅니다.
Response Time : API의응답시간을변화를시간대별
히트맵형태로나타냅니다.
Desktop에서운영체제별로설치후실행
Mobile
앱스토어에서설치
Export시
받은프로젝트
코드를
입력하고,
제공된
모바일앱실행
REDSTOP API Monitoring주요기능
각각의 API에대한모니터링
- ISP, Platform, 지역별로데이터를수집하여, 다양한지표로모니터링이가능합니다.
- 위험알림을받을기준(Policy)를직접지정할수있습니다. (에러율, 응답시간)
1
2
3 4
5
6
7
1
2
3
4
5
6
7
API 이름, Method, URL
지역선택자 : 지역별데이터를볼수있습니다.
Platform 선택자 :
웹에서는 IE, Chrome, Firefox등브라우저별로,
모바일은 Android, iOS 등의플랫폼별로모니터링합니다.
Summary : 현재선택한조건에따라, 한 API의
응답시간에대한상황을요약해서보여줍니다. 평균
응답시간, 최대응답시간, 중간값, 응답시간편차,
가용성을분석합니다.
Policy : 현재 API에대해, 응답시간, 에러율에대한위험
알림을받을기준을선택및추가할수있습니다.
초기에는기본값이지정되어있습니다.
Test Result :
현재선택한조건에해당하는테스트결과를보여줍니다.
ISP 선택자 : ISP 별데이터를볼수있습니다.
예) KT, SKTelecom, LG U+, Olleh Giga 등
REDSTOP API Monitoring주요기능
프로젝트전체 API상황을한눈에볼수있는대시보드
- 프로젝트를구성하는전체 API에대한상황을한눈에모니터링할수있습니다.
- 에러가발생한 API는붉은색,지연율이높은 API는주황색으로나타냅니다.
- 해당 API와인접한 API역시문제가발생할가능성이높은것으로판단하여조치를취할수있습니다.
1
2
3
4
1
2
3
날짜선택 : 1일, 3일, 7일단위로날짜선택이가능합니다
정상적인 API를의미합니다.
에러가발생한 API를의미합니다.
4 지연율이높은 API를의미합니다.
REDSTOP API Monitoring주요기능
2 APM 이란..
�
52
UserTransaction
SQL SQL
Http
File Resource`
APM 모니터링의 핵심은 웹 애플리케이션의 개별 트랜잭션을 모니터링 하는 것입니다. 얼마나 쉽고 빠르게 성능 이슈를
감지하고 분석할 수 있는지가 가장 중요합니다.
� )(
elastic apm – 웹트랜잭션별로측정가능
개별트랜잭션안에상세단계별로측정가능
3 서버모니터링
�.
.
.
P > Q
,. D 25 �- � 0 O S L O
I ,.
) �A
.�( ,� ?!
) �A
.�( ,� ?!
?. ? � ?
/?
P U S T L QI
§ .01§ - D �2 �/ : � � � 6§ 1 � 6 � � O
§ 86 8 ( ( ) C D : :6
Zabbix
WhaTap서버모니터링
서버모니터링어떻게하지?
• 쉽게하자. 복잡하면지표가어려워진다.
• Netflix 에서간단하게제안한 Use 메소드
http://www.brendangregg.com/usemethod.html#Intro
메트릭실례
만약시스템이복잡해진다면.
• Netflix 여러안중종합적으로논의 (https://bit.ly/2DS7PEm)
• PRE (Performance and Reliability Engineering)
• PRE Triage Checklist (문제인지대시보드 – 알럿성)
• Predash (PRE Dashboard)
• Perfvitals (Service Dashboard)
• Cloud App Perf Dashboard
• Bad Instance Dashboard
4 정리
L4 WEB WAS DB
문제 인지 인지+분석 분석
APM으로 Code Level로 분석
응답시간처리 량
Infra Monitoring Application Monitoring
Infrastruture Monitoring로 문제되는 자원 판단
부하발생
사용자 입장에서 느끼는 서비스는 응답시간
API Testing / Monitoring
- 75 -
감사합니다.Thank you for your interesting.
어니컴 주식회사 | 서울시 중구 세종대로 21길 22, 태성빌딩 4층 | TEL : 02-541-0080
손영수상무 (총괄)