본문 바로가기
IT 자격증/정보처리기사 실기

[정보처리기사 실기] 07. 애플리케이션 테스트 관리 - 애플리케이션 성능 관리

by 가든가든 2022. 10. 11.
728x90

애플리케이션 성능 분석

애플리케이션 성능 측정 지표

- 처리량 (Throughput) : 주어진 시간에 처리할 수 있는 트랜잭션의 수

- 응답 시간 (Response Time) : 사용자 입력이 끝난 후, 애플리케이션의 응답 출력이 개시될 때까지의 시간

- 경과 시간 (Turnaround Time) : 사용자가 요구를 입력한 시점부터 트랜잭션을 처리 후 그 결과의 출력이 완료할 때까지 걸리는 시간

- 자원 사용률 (Resource Usage) : 애플리케이션이 트랜잭션을 처리하는 동안 사용하는 CPU 사용량, 메모리 사용량, 네트워크 사용량

애플리케이션 성능 저하 원인

데이터베이스 관련 성능 저하 원인

- 데이터베이스 락 (DB Lock) : 대량의 데이터 조회, 과도한 업데이트 시 발생하는 현상

- 불필요한 데이터베이스 패치 (DB Fetch) :  대량의 데이터 요청이 들어올 경우 응답시간 저하 현상 발생

- 연결 누수 (Connection Leak) : DB연결과 관련한 JDBC 객체를 사용 후 종료하지 않을 경우

- 부적절한 커넥션 풀 크기 (Connection Pool Size) : 너무 작거나 크게 설정한 경우

외부 호출(HTTP, 소켓 통신)로 인한 성능 저하 원인

- 임의의 트랜잭션이 수행되는 동안 외부 트랜잭션이 장시간 수행되거나, 타임아웃이 일어나는 경우 성능 저하 현상이 발생할 수 있음

애플리케이션 성능 개선

베드 코드

- 다른 개발자가 로직을 이해하기 어렵게 작성된 코드

(배드 코드 사례)

- 외계인 코드(Alien Code) : 아주 오래되거나 참고문서 또는 개발자가 없어 유지보수 작업이 어려운 코드

- 스파게티 코드 : 스파게티처럼 코드가 복잡하게 얽힘

- 알수 없는 변수명, 로직 중복

클린 코드

- 잘 작성되어 가독성 높고, 단순하며, 의존성을 줄이고, 중복을 최소화해 잘 정리된 코드

(작성 원칙) - 가단의 중추

- 가독성, 단순성, 의존성 최소, 중복성 제거, 추상화 

소스 코드 품질분석

- 코딩 스타일, 설정된 코딩 표준, 코드의 복잡도, 코드 내에 존재하는 메모리 누수 현황, 스레드의 결함 등을 발견하기 위한 활동

소스 코드 품질분석 도구

정적 분석도구

- pmd : 자바 및 타언어 소스 코드에 대한 버그, 데드코드 분석

- cppcheck : C/C++  코드에 대한 메모리 누수, 오버플로우 등 문제 분석

- checkstyle : 자바 코드에 대한 코딩 표준 검사 도구

동적 분석도구

- Avalanche : Valgrind, STP 기반 소프트웨어 에러 및 취약점 동적 분석 도구

- Valgrind : 자동화된 메모리 및 스레드 결함 발견 분석 도구

리팩토링 (Refactoring)

- 유지보수 생산성 향상을 목적으로 기능을 변경하지 않고, 복잡한 소스 코드를 수정, 보완해 가용성 및 가독성을 높이는 기법

728x90