본문 바로가기
정보처리기사/10. 애플리케이션 테스트 관리

Chapter 03. 애플리케이션 성능 개선

by HoPpangg 2021. 9. 29.
SMALL

1. 애플리케이션 성능 측정 지표 (처응경자)

  • 처리량 (Throughput)
    • 애플리케이션이 주어진 시간에 처리할 수 있는 트랜잭션의 수
    • 웹 애플리케이션의 경우 시간당 페이지 수로 표현
  • 응답 시간 (Response Time)
    • 사용자 입력이 끝난 후, 애플리케이션의 응답 출력이 개시될 때까지의 시간
    • 애플리케이션의 경우 메뉴 클릭 시 해당 메뉴가 나타나기까지 걸리는 시간
  • 경과시간 (Turnaround Time)
    • 애플리케이션이 사용자가 요구를 입력한 시점부터 트랜잭션을처리 후 그 결과를 출력이 완료할 때까지 걸리는 시간
  • 자원 사용률 (Resource Usage)
    • 애플리케이션이 트랜잭션을 처리하는 동안 사용하는 CPU 사용량, 메모리 사용량, 네트워크 사용량

2. 데이터베이스 관련 성능 저하 원인 (락페릭사커)

  • 데이터베이스 락(DB Lock)
    • 대량의 데이터 조회, 과도한 업데이트, 인덱스 생성 시 발생하는 현상
    • 요청한 작업은 Lock의 해제 시까지 대기하거나 타임 아웃됨
  • 불필요한 데이터베이스 패치 (DB Fetch)
    • 실제 필요한 데이터보다 많으 ㄴ대량의 데이터 요청이 들어올 경우 응답 시간 저하 현상 발생
    • 결과 세트에서 마지막 위치로 커서를 옮기는 작업이 빈번한 경우 응답 시간 저하 현상 발생
  • 연결 누수 (Connection Leak)
    • DB 연결과 관련한 JDBC 객체를 사용 후 종료하지 않을 경우 발생
  • 부적절한 커넥션 풀 크기 (Connection Pool Size)
    • 너무 작거나 크게 설정한 경우 성능 저하 현상 발생할 가능성 존재
  • 확정 (Commit) 관련
    • 트랜잭션이 확정되지 않고 커넥션 풀에 반환될 때 성능 저하 가능성 존재
    • 잘못 작성된 코드로 인해 불필요한 확정이 자주 발생하는 경우 성능저하 가능성 존재

3. 애플리케이션 성능 테스트 수행 절차 (도환시성)

  • 성능테스트 도구 설치
  • 테스트 환경 설정
  • 시나리오 생성
  • 성능 테스트 실행 및 모니터링

4. 베드 코드

  • 다른 개발자가 로직을 이해하기 어렵게 작성된 코드
  • 스파게티 코드 : 처리 로직의 제어가 정제되지 않고 서로 얽혀 있는 코드
  • 변수나 메서드에 대한 이름 정의를 알 수 없는 코드
  • 동일한 처리 로직이 중복되게 작성된 코드
  • 외계인 코드 : 아주 오래되거나 참고 문서 또는 개발자가 없어 유지보수 작업이 아주 어려운 코드
  • 로직 중복 : 동일한 처리 로직이 중복되게 작성된 코드

5. 베드 코드 유형 (오문이 결침)

  • 오염
  • 문서부족
  • 의미 없는 이름
  • 높은 결합도
  • 아키텍처 침식

6. 클린 코드

  • 잘 작성되어 가독성이 높고, 단순하며, 의존성을 줄이고, 중복을 최소화하여 깔끔하게 잘 정리된 코드
  • 중복 코드 제거로 애플리케이션의 설계가 개선됨
  • 가독성이 높으므로 애플리케이션의 기능에 대해 쉽게 이해할 수 있음
  • 버그를 찾기 쉽고 프로그래밍 속도가 빨라짐

7. 클린코드 작성 원칙 (가단의 중추)

  • 가독성 : 이해하기 쉬운 용어를 사용, 코드 작성 시 들여쓰기 기능 사용
  • 단순성 : 한 번에 한가지 처리만 수행, 클래스 / 메서드 / 함수를 최소 단위로 분리
  • 의존성 최소 : 영향도를 최소화, 코드의 변경이 다른 부분에 영향이 없게작성
  • 중복성 제거 : 중복된 코드 제거, 공통된 코드 사용
  • 추상화 : 클래스 / 메서드 / 함수에 대해 동일한 수준의 추상화 구현, 상세 내용은 하위 클래스 / 메서드 / 함수에서 구현

8. 클린 코드 유형

  • 의미 있는 이름
  • 간결하고 명확한 주석
  • 보기 좋은 배치
  • 작은 함수
  • 읽기 쉬운 제어 흐름
  • 오류 처리
  • 클래스 분할 배치
  • 느슨한 결합(Loosely Coupled)기법 적용
  • 코딩 형식 기법 적용

9. 소스 코드 품질 분석 도구

  • 정적 분석 도구
    • pmd : 자바 및 타 언어 소스 코드에 대한 버그, 데드 코드 분석
    • cppcheck : C / C++ 코드에 대한 메모리 누수, 오버플로우 등 문제 분석
    • SonarQube : 소스 코드 품질 통합 플랫폼, 플러그인 확장 가능
    • checksytle : 자바 코드에 대한 코딩 표준 검사 도구
    • ccm : 다양한 언어의 코드 복잡도 분석 도구, 리눅수, 맥 환경 CLI 형태 지원
    • cobertura : jcoverage 기반의 테스트 커버리지 측정 도구
  • 동적 분석 도구
    • Avalanche : Valgrind 프레임워크 및 STP 기반 소프트웨어 에러 및 취약점 동적 분석 도구
    • Valgrind : 자동화된 메모리 및 스레드 결함 발견 분석 도구

 

10. 리팩토링 (Refactoring)

  • 유지보수 생산성 향상을 목적으로 기능을 변경하지 않고, 복잡한 소스 코드를 수정, 보완하여 가용성 및 가독성을 높이는 기법
  • 소프트웨어 모듈의 외부적 기능은 수정하지 않고 내부적 구조, 관계 등을 단순화하여 소프트웨어의 유지보수성을 향상시키는 기법

11. 리팩토링 목적

  • 유지보수성 향상
  • 유연한 시스템
  • 생산성 향상
  • 품질 향상
728x90
LIST

댓글