애플리케이션 성능 지표
- 처리량 (Throughput)
: 애플리케이션이 주어진 시간에 처리할 수 있는 트랜잭션의 수
- 응답 시간 (Response Time)
: 사용자 입력이 끝난 후 응답 출력이 개시될때 까지의 시간
- 경과 시간 (Turnaround Time)
: 사용자가 요구를 입력한 시점 부터 트랜잭션 처리후 결과 출력까지의 시간
- 자원 사용률 (Resource Usage)
: 트랜잭션을 처리하는 동안의 CPU 및 메모리, 네트워크 사용량
애플리케이션 성능 저하
- 데이터베이스 관련
ㆍ데이터베이스 lock
: 과도한 업데이트 등에 의한 Lock
ㆍ불필요한 데이터베이스 패치
: 필요한 데이터 보다 많은 데이터 요청시 응답 시간 저하
ㆍ연결 누수
: DB연결과 관련한 JDBC 객체를 사용후 종료하지 않음
ㆍ부적절한 커넥션 풀 크기
: 너무 작거나 크게 설정한 경우 성능 저하
ㆍCommit 관련
: 트랜잭션이 Commit되지 않고 커넥션 풀에 반환 될 경우
: 불필요한 Commit의 잦은 발생
- 내부로직 / 외부호출 / 네트워크
애플리케이션 성능 테스트 수행 절차
- 성능 테스트 도구 설치
- 테스트 환경 설정
- 시나리오 생성
- 성능 테스트 실행 및 모니터링
애플리케이션 성능 개선
- 읽기 쉽고 변경 및 추가가 쉬운 클린 코드 작성
- 클린코드 작성원칙
: 가독성 / 단순성 / 의존성 최소 / 중복성 제거 / 추상화
베드코드
- 다른 개발자가 로직을 이해하기 어렵게 작성된 코드
- 외계인 코드
: 아주 오래되거나 문서나 개발자가 없어 유지보수가 어려운 코드
- 스파게티 코드
: 소스코드가 복잡하게 얽힌 코드
- 알 수 없는 변수명
: 변수나 메서드에 대한 이름 정의를 알 수 없는 코드
- 로직 중복
: 동일한 로직이 중복 되는 코드
베드코드 유형
- 오염
: 비즈니스 기능을 수행하지 못하는 다수의 컴포넌트 존재
- 문서 부족
: 코드와 문서의 불일치
- 의미 없는 이름
: 함수, 클래스, 컴포넌트의 불명확한 이름
- 높은 결합도
: 클래스와 컴포넌트간 데이터와 컨트롤 흐름이 네트워크로 복잡하게 연결
- 아키텍쳐 침식
: 아키텍쳐가 구별되지 않고 여러 솔루션으로 이루어진 형태
소스코드 품질 분석 도구
- 정적 분석 도구
: pmd / cppcheck / SonarQube / checkstyle / ccm / cobertura
- 동적 분석 도구
: Avalanche / Valgrind
리팩토링
- 유지보수 및 생산성 향상을 목적으로 기능을 변경하지 않고 가용성과 가독성을 높이는 기법
: 모듈의 외부적 기능은 수정하지 않고 내부적인 구조, 관계 등을 단순화
- 목적
: 유지보수성 향상
: 유연한 시스템
: 생산성 향상
: 품질 향상
'Certification > 정보처리기사' 카테고리의 다른 글
가상화 (Virtualization)와 클라우드 컴퓨팅 (0) | 2021.04.13 |
---|---|
운영체제 (0) | 2021.04.13 |
애플리케이션 통합 테스트 (0) | 2021.04.12 |
애플리케이션 테스트 케이스 설계 (0) | 2021.04.12 |
소프트웨어 개발 보안 구현 (0) | 2021.04.12 |