[정보처리기사 필기] SW 개발 : 애플리케이션 성능
정보처리기사 필기 2과목 - 소프트웨어 개발 : 애플리케이션 성능
[1] 애플리케이션 성능 분석
- 애플리케이션 성능 : 사용자의 요구 기능을 해당 애플리케이션이 최소의 자원을 사용하면서 얼마나 빨리, 많은 기능을 수행하는가를 육안 또는 도구를 통하여 점검하는 것
1. 애플리케이션 성능 측정 지표 ⭐⭐
처리량 (Throughput) |
- 애플리케이션이 주어진 시간에 처리할 수 있는 트랜잭션의 수 (= 일정 시간 내 애플리케이션이 처리하는 일의 양) - 웹 애플리케이션의 경우 시간당 페이지 수로 표현하기도 함 |
응답 시간 (Response Time) |
- 사용자 입력이 끝난 후 애플리케이션의 응답 출력이 개시될 때까지의 시간 (= 애플리케이션에 요청을 전달한 시간부터 응답이 도착할 때까지 걸린 시간) - 웹 애플리케이션의 경우 메뉴 클릭 시 해당 메뉴가 나타나기까지 걸리는 시간 의미 |
경과 시간 (Turnaround Time) |
- 애플리케이션에 사용자가 요구를 입력한 시점부터 트랜잭션 처리 후 그 결과의 출력이 완료할 때까지 걸리는 시간 (= 애플리케이션에 작업을 의뢰한 시간부터 처리가 완료될 때까지 걸린 시간) |
자원 사용률 (Resource Usage) |
- 애플리케이션 트랜잭션(애플리케이션이 의뢰한 작업)을 처리하는 동안 사용하는 CPU 사용량, 메모리 사용량, 네트워크 사용량 등 자원 사용률 |
2. 애플리케이션 성능 저하 원인 분석 P.326
- 크게 DB 연결 및 쿼리 실행, 내부적인 요인과 외부적인 요인, 그리고 기타 환경 설정, 네트워크 등의 문제로 구분될 수 있음
1) DB에 필요 이상의 많은 데이터를 요청한 경우
2) 커넥션 풀(Connection Pool)의 크기를 너무 작거나 크게 설정한 경우
3) JDBC나 ODBC 같은 미들웨어를 사용한 후 종료하지 않아 연결 누수가 발생한 경우
4) 대량의 파일을 업로드하거나 다운로드해 처리 시간이 길어진 경우
[2] 애플리케이션 성능 개선
1. 소스코드 최적화
- 소스코드 최적화는 읽기 쉽고 변경 및 추가가 쉬운 클린 코드를 작성하는 것
- 소스코드 품질을 위해 기본적으로 지켜야 할 원칙과 기준을 정의
2. 클린 코드 작성 원칙
가독성 | - 이해하기 쉬운 용어 사용 - 코드 작성 시 들여쓰기 기능 사용 |
단순성 | - 한 번에 한 가지 처리만 수행 - 클래스 / 메소드 / 함수를 최소 단위로 분리 |
중복성 | - 중복된 코드 제거, 공통된 코드 사용 = 중복 최소화 |
의존성 | - 영향도(의존도)를 최소화 (코드의 변경이 다른 부분에 영향이 없게 작성) |
추상화 | - 클래스 / 메소드 / 함수에 대해 동일한 수준의 추상화를 함 - 상세 내용은 하위 클래스 / 메소드 / 함수에서 구현 * 추상화? 시스템의 복잡도를 단순화하여 인식하기 쉽게 만드는 개념화 작업 |
3. 소스코드 품질 분석 도구 ⭐
- 소스코드에 대한 코딩 스타일, 설정된 코딩 표준, 코드의 복잡도, 코드 내에 존재하는 메모리 누수 현황, 스레드의 결함 등을 발견하기 위해 사용하는 분석도구
- 정적 분석도구 / 동적 분석 도구 P.330
1) 정적 분석 도구
- 작성된 소스코드를 실행시키지 않고, 코드 자체만으로 코딩 표준 준수 여부, 코딩 스타일 적정 여부, 잔존 결함 발견 여부를 확인하는 코드 분석 도구
ex. pmd / cppcheck / SonarQube / checkstyle / ccm / cobertura 등
2) 동적 분석 도구
- 애플리케이션을 실행하여 코드에 존재하는 메모리 누수 현황을 발견하고, 발생한 스레드의 결함 등을 분석하기 위한 도구
ex. Avalanche / Valgrind 등