자격증/2020 정보처리기사 실기

[정보처리기사 실기 2020 개정] Ⅶ.애플리케이션 테스트 관리 - 3. 애플리케이션 성능 개선

  • -
728x90

1. 애플리케이션 성능 분석

  • 애플리케이션 성능 점검 개요
    • 애플리케이션 성능 측정 지표
      • 처리량 : 애플리케이션이 주어진 시간에 처리할 수 있는 트랜잭션의 수
      • 응답 시간 : 사용자 입력이 끝난 후, 애플리케이션의 응답 출력이 개시될 때까지의 시간
      • 경과 시간 : 애플리케이션에 사용자가 요구를 입력한 시점부터 트랜잭션을 처리 후 그 결과의 출력이 완료할 때까지 걸리는 시간
      • 자원 사용률 : 애플리케이션이 트랜잭션을 처리하는 동안 사용하는 CPU, 메모리, 네트워크 사용량
    • 유형별 성능 분석 도구
      • 성능/부하/스트레스 점검 도구
      • 모니터링 도구
  • 애플리케이션 성능 저하 원인
    • 데이터베이스 관련 성능 저하 원인
      • DB Lock : 대량의 데이터 조회, 과도한 업데이트, 인덱스 생성 시 발생하는 현상
      • 불필요한 DB Fetch : 실제 필요한 데이터보다 많은 데이터 요청이 들어올 경우 응답 시간 저하 현상 발생
      • 연결 누수 : DB 연결과 관련한 JDBC 객체를 사용 후 종료하지 않을 경우 발생
      • 부적절한 커넥션 풀 크기 : 너무 작거나 크게 설정한 경우 성능 저하 현상 발생 가능성 존재
      • 확정 관련 : 트랜잭션이 확정되지 않고 커넥션 풀에 반환될 때 성능 저하 가능성 존재
    • 내부 로직으로 인한 성능 저하 원인
    • 외부 호출(HTTP, 소켓 통신)로 인한 성능 저하 원인
    • 잘못된 한경 설정이나 네트워크 문제로 인한 성능 저하 원인
  • 애플리케이션 성능 테스트 프로세스
    • 애플리케이션 성능 테스트 수행 절차
      • 성능 테스트 도구 설치
      • 테스트 환경 설정
      • 시나리오 생성
      • 성능 테스트 실행 및 모니터링
    • 성능 테스트 결과 분석을 통한 성능 저하 요인 탐지

 

 

2. 애플리케이션 성능 개선

  • 나쁜 코드
    • 오염 : 비즈니스 기능을 수행하지 못하는 많은 컴포넌트들이 존재
    • 문서부족 : 현재 코드와 문서가 일치하지 않고 수정과 변경을 위한 도메인 지식은 크게 증가하지만 개발자의 지식부족 초래
    • 의미 없는 이름 : 함수, 클래스, 컴포넌트 이름들이 명확한 의미를 갖지 못하거나 실제 작동과 불일치
    • 높은 결합도 : 클래스와 컴포넌트 간에 데이터와 컨트롤 흐름이 네트워크로 복잡하게 연결
    • 아키텍처 침식 : 아키텍처가 더 이상 구별되지 않고 여러 솔루션으로 이루어져 아키텍처상 변형들로 인해 시스템 품질 떨어짐  
  • 클린 코드
    • 의미 있는 이름 : 의도가 분명한 이름 사용
    • 간결하고 명확한 주석
    • 보기 좋은 배치
    • 작은 함수
    • 읽기 쉬운 제어 흐름
    • 오류 처리
  • 소스 코드 품질 분석
    • 소스 코드 품질 분석 도구 유형
      • 정적 분석 도구 : 작성된 소스코드를 실행시키지 않고, 코드 자체만으로 코딩 표준 준수 여부, 코딩 스타일 적정 여부, 잔존 결함 발견 여부를 확인
      • 동적 분석 도구 : 애플리케이션을 실행하여 코드에 존재하는 메모리 누수 현황을 발견하고, 발생한 스레드의 결함 등을 분석하기 위한 도구
    • 소스 코드 품질 분석 도구
      • 정적 분석 도구 : pmd, cppcheck, SonarQube, checkstyle
      • 코드 복잡도 도구 : ccm, cobertura
      • 동적 분석 도구 : Avalanche, Valgrind
  • 애플리케이션 성능 개선 방안
    • 소스 코드 최적화 기법 적용
    • 아키텍처 조정을 통한 성능 개선
    • 프로그램 호출 순서 조정 적용
    • 소스 코드 품질분석 도구 활용
      • 메모리 사용 최소화 적용
      • 입출력 발생 최소화 적용
      • System.out.println()을 사용 제외
    • 애플리케이션 성능 현황 관리

 

 

728x90
300x250
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.