320x100
320x100

애플리케이션 성능 지표

- 처리량 (Throughput)

 : 애플리케이션이 주어진 시간에 처리할 수 있는 트랜잭션의 수

 

- 응답 시간 (Response Time)

 : 사용자 입력이 끝난 후 응답 출력이 개시될때 까지의 시간

 

- 경과 시간 (Turnaround Time)

 : 사용자가 요구를 입력한 시점 부터 트랜잭션 처리후 결과 출력까지의 시간

 

- 자원 사용률 (Resource Usage)

 : 트랜잭션을 처리하는 동안의 CPU 및 메모리, 네트워크 사용량

 

 

 

애플리케이션 성능 저하

- 데이터베이스 관련

ㆍ데이터베이스 lock 

  : 과도한 업데이트 등에 의한 Lock

 

불필요한 데이터베이스 패치

  : 필요한 데이터 보다 많은 데이터 요청시 응답 시간 저하

 

연결 누수

  : DB연결과 관련한 JDBC 객체를 사용후 종료하지 않음

 

부적절한 커넥션 풀 크기

  : 너무 작거나 크게 설정한 경우 성능 저하

 

ㆍCommit 관련

  : 트랜잭션이 Commit되지 않고 커넥션 풀에 반환 될 경우

  : 불필요한 Commit의 잦은 발생

 

- 내부로직 / 외부호출 / 네트워크

 

 

 

애플리케이션 성능 테스트 수행 절차

- 성능 테스트 도구 설치

- 테스트 환경 설정

- 시나리오 생성

- 성능 테스트 실행 및 모니터링

 

 

 

애플리케이션 성능 개선

- 읽기 쉽고 변경 및 추가가 쉬운 클린 코드 작성

- 클린코드 작성원칙

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

 

 

 

베드코드

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

- 외계인 코드

 : 아주 오래되거나 문서나 개발자가 없어 유지보수가 어려운 코드

 

- 스파게티 코드

 : 소스코드가 복잡하게 얽힌 코드

 

- 알 수 없는 변수명

 : 변수나 메서드에 대한 이름 정의를 알 수 없는 코드

 

- 로직 중복

 : 동일한 로직이 중복 되는 코드

 

 

 

베드코드 유형

- 오염

 : 비즈니스 기능을 수행하지 못하는 다수의 컴포넌트 존재

 

- 문서 부족

 : 코드와 문서의 불일치

 

- 의미 없는 이름

 : 함수, 클래스, 컴포넌트의 불명확한 이름

 

- 높은 결합도

 : 클래스와 컴포넌트간 데이터와 컨트롤 흐름이 네트워크로 복잡하게 연결

 

- 아키텍쳐 침식

 : 아키텍쳐가 구별되지 않고 여러 솔루션으로 이루어진 형태

 

 

 

소스코드 품질 분석 도구

- 정적 분석 도구

 : pmd / cppcheck / SonarQube / checkstyle / ccm / cobertura

 

- 동적 분석 도구

 : Avalanche / Valgrind

 

 

 

리팩토링

- 유지보수 및 생산성 향상을 목적으로 기능을 변경하지 않고 가용성과 가독성을 높이는 기법

 : 모듈의 외부적 기능은 수정하지 않고 내부적인 구조, 관계 등을 단순화

- 목적

 : 유지보수성 향상

 : 유연한 시스템

 : 생산성 향상

 : 품질 향상

300x250
728x90