비투엔 기술기고

[기고] 정보시스템 성능 관리 이야기

알 수 없는 사용자 2017. 7. 6. 13:47





1. 정보시스템 성능 관리의 필요성

정보시스템은 다양한 정보의 제공, 비즈니스 업무 처리 등의 기능을 온라인 상에 제공하여 사용자들이 언제, 어디서든 손쉽게 사용할 수 있는 역할을 담당해왔습니다. 정보시스템을 통한 정보 습득, 업무 처리가 일상화되면서 정보시스템의 예상치 못한 기능 오류나 성능 저하가 발생할 경우 내부적으로는 업무의 진행 지연 및 업무 효율성이 저하되는 결과를 나타낼 수 있고, 외부적으로는 기업 신뢰도 하락, 기업의 매출 감소 등 심각한 영향을 끼칠 수 있습니다.


정보시스템의 성능의 관리는 단순 시스템의 성능 향상뿐 아니라, 비즈니스 성능, 비즈니스 경쟁력 향상은 물론, 고객에게 최상의 서비스 경험을 체험하게 하여 기업의 이미지를 형성시키는 활동으로써 성능 관리를 통해 

1. 미래에 발생할 수 있는 문제점을 파악하여 선제적 대응

2. 시스템 구간 별 병목 현상을 해결하여 자원의 활용도를 향상

3. 운영되는 시스템의 적정 응답시간을 보장하는 사용자 수 도출 등의 현황 파악을 통해 장기적 계획 마련

등을 수행할 수 있어서 성능 테스트, 진단, 튜닝의 필요성이 높아지고 있습니다.




2. 성능지표

정보시스템의 성능 관리를 위한 대표적인 성능지표에는 응답시간, 시간당 처리량, 자원사용량이 있습니다.


1. 응답 시간(response time) : 작업 처리를 요청한 시간으로부터 이를 시스템이 처리하여 결과를 보여줄 때까지 소요된 시간

정보시스템 사용자가 가장 직접적으로 체감할 수 있는 성능지표로써 흔히 시스템의 성능을 이야기 할 때 가장 많이 사용하는 수치입니다. 시스템 구축 프로젝트의 RFP의 성능 요구사항에도 응답속도는 3초 이내로 되어야 한다라는 등의 성능 목표를 요구하기도 합니다. 정보시스템의 부하에 따라 응답시간은 달라지기 때문에 정확한 성능 목표를 설정하기 위해서는 특정 부하 기준의 응답시간이 성능 목표가 되어야 합니다.  


2. 시간당 처리량(TPS) : 시스템이 성공적으로 처리한 단위 시간당 요청(트랜잭션) 처리 건수

일반적으로 시스템을 운영하는 담당자나 부서에서 관리하고 있는 지표로써 일반 사용자들이 체감하는 성능과는 다를 수 있습니다. 단순 정보 소개 페이지, 데이터베이스를 조회한 값을 보여주는 페이지, 많은 정보들을 입력하여 저장하는 페이지 등 성격에 따라 시간당 처리량은 다르게 산출됩니다. 시간당 처리량을 성능 지표로 사용하기 위해서는 실제 사용자들이 사용하는 패턴 분석 및 기능 별 특성을 고려하여 성능테스트 시나리오를 구성 후 시간당 처리량을 측정하여야 합니다.  

[그림1. 가상 사용자 수 증가에 따른 응답시간과 처리량과의 관계]


3. 자원 사용량(utilization) : 시스템 자원(CPU, 메모리 등)들의 용량 중 실제 사용하고 있는 값의 비율

CPU, MEMORY, WAS의 ThreadPool, JDBC Connect Pool 의 사용율을 파악하고, 각각의 자원 사용량 패턴을 종합적으로 분석하여 정보시스템의 병목 구간 파악 및 서버의 설정 값들을 조정합니다. 또한 heap memory, garbage collection 등을 파악하여 시스템이 누수없이 동작하고 있는지도 분석합니다.

 

[그림2. 자원 사용량 분석 예시]


이외에도. 활성사용자수(Active User), 동시사용자수(Concurrent User) 등을 성능 지표로 활용할 수 있습니다.




3. 성능테스트 절차

성능테스트는 부하테스트툴을 사용하여 정보시스템의 최대 시간당 처리량(TPS)을 산출합니다. 성능테스트는 다음과 같은 절차로 진행됩니다.


1. 성능테스트 시나리오 작성 : 현황 분석을 통해 실 사용과 가장 유사한 테스트 시나리오를 구성합니다. 시나리오를 구성하는 대표적인 방법에는 현황분석 인터뷰나 web server의 accesslog를 활용하는 것이 있습니다.

2. 부하모델 설계 : 가상 사용자수, 부하발생방법(부하 증가 패턴), 부하발생지속시간, think time 등을 정의하여 테스트 스크립트를 작성합니다.

3. 성능테스트 실행 : 부하테스트툴을 실행시켜 트랜젝션을 발생합니다.

4. 성능테스트 분석 : 서버 자원 사용율 측정, 테스트 시나리오 별 응답시간 측정, 시나리오 별 시간당 처리량을 측정하여 어플리케이션 성능, 서버 성능을 점검하고, 각 구간별(WEB/WAS/DB)별 성능 검증 및 구간과 구간 사이의 비효율 요소 분석합니다.

5. 결과분석 및 개선 : 어플리케이션 오류 수정, 비효율 요소 튜닝, 서버 파라미터 조정

6. 성능테스트 반복 수행





4. 지속적 품질 향상을 위한 성능 관리 환경 구성

성능 관리측면에서 각각의 정보시스템은 고유의 업무 특성과 구현 기술의 특성을 가지고 있고, 성능테스트 시나리오 구성에 따라 도출되는 시간당 처리량(TSP)이 다르기 때문에 유사한 시스템과의 객관적인 성능 지표의 비교가 어렵습니다. 따라서 정보시스템의 특성을 이해하고, 기능 별 구성방식, 동작 방식을 고려한 성능 목표의 설정 및 지속적인 성능테스트 수행 프로세스가 필요합니다. 


주기적인 성능테스트를 수행 환경 구성을 통하여

1. 주요 어플리케이션 변경 및 신규 컴포넌트 추가 등 다양한 변화에 대응할 수 있는 환경을 구축

2. 기 작성된 테스트 시나리오를 활용하여 주요 기능에 대한 회귀 테스트(Regresstion test) 수행

3. 테스트 자동화를 통하여 지속적 품질향상 체계 마련

등을 수행할 수 있어 사용자들에게 더 좋은 품질의 서비스를 제공할 수 있는 기반을 마련할 수 있습니다.