Ch7_03 애플리케이션 성능 개선

Study/정보처리기사 2020. 10. 13. 02:47

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

 

1. 애플리케이션 성능 점검 개요

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

    i. 처리량

    ii. 응답 시간

    iii. 경과 시간

    iv. 자원 사용률

  B. 유형별 성능 분석 도구

    i. 성능/부하/스트레스 점검 도구

    ii. 모니터링 도구

  C. 성능 분석 도구 유형

    i. 성능 테스트 도구

      1. JMeter : HTTP, FTP 등 다양한 프로토콜을 지원하는 안정성, 확장성, 부하, 기능 테스트 도구

      2. LoadUI : UI를 통해 HTTP, JDBC 등 주로 웹 서비스를 대상으로 서버 모니터링을 지원하는 부하 테스트 도구

      3. OpenSTA : HTTP, HTTPS 지원하는 부하테스트 및 생산품 모니터링 도구

    ii. 시스템 모니터링 도구

      1. Scouter : 단일 뷰 통합/실시간 모니터링, 튜닝에 최적화된 인프라 통합 모니터링 도구

      2. Zabbix : 웹 기반 서버, 서비스, 앱 모니터링 도구

 

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

  A. DB 관련 성능 저하 원인

    i. DB : 대량의 데이터 조회, 과도한 업데이트, 인덱스 생성 시 발생, 요청한 작업은 락 해제 시 까지 대기, 타임아웃

    ii. 불필요한 DB 패치 : 실제 필요한 데이터보다 많은 대량의 데이터 요청이 들어올 경우, 응답 시간 저하 현상 발생

    iii. 연결 누수 : DB 연결과 관련한 JDBC 객체를 사용 후 종료하지 않을 경우

    iv. 부적절한 커넥션 풀 크기 : 너무 작거나 크게 설정한 경우

    v. 확정 관련 : 트랜잭션이 확정되지 않고 커넥션 풀에 반활될 때

  B. 내부 로직으로 인한 성능 저하 원인

    i. 웹 애플리케이션의 인터넷 접속 불량

    ii. 특정 파일의 업로드, 다운로드로 인한 성능 저하

    iii. 정상적으로 처리되지 않은 오류 처리로 인한 성능 저하

  C. 외부 호출로 인한 성능 저하 원인

  D. 잘못된 환경 설정이나 네트워크 문제로 인한 성능 저하 원인

    i. 환경 설정으로 인한 성능 저하

    ii. 네트워크 장비로 인한 성능 저하

 

3. 애플리케이션 성능 테스트 프로세스

  A. 애플리케이션 성능 테스트 케이스 작성

    i. 테스트 목표 및 목표값을 설정하여 작성

    ii. 측정 항목을 기술하여 작성

    iii. 테스트 시나리오 작성

    iv. 사전 확인 사항 작성

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

    i. 성능 테스트 도구 설치

    ii. 테스트 환경 설정

    iii. 시나리오 설정

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

  C. 성능 테스트 결과 분석을 통한 성능 저하 요인 탐지

    i. 애플리케이션 성능 테스트 결과 분석

    ii. 애플리케이션의 성능 저하 요인 탐지, 분석

 

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

 

1. 소스 코드 최적화의 이해 : 읽기 쉽고 변경 및 추가가 쉬운 클린코드를 작성하는 것

  A. 나쁜 코드 : 다른 개발자가 로직을 이해하기 어렵게 작성된 코드

    i. 나쁜 코드 유형

      1. 오염

      2. 문서부족

      3. 의미 없는 이름

      4. 높은 결합도

      5. 아키텍처 침식 : 아키텍처가 구별되지 않고 여러 솔루션으로 이루어져 아키텍처상 변형들로 인해 시스템 품질이 떨어짐

  B. 클린 코드 : 잘 작성되어 가독성이 높고, 단순하며, 의존성을 줄이고, 중복을 최소화

    i. 클린 코드 특징 : 중복 코드 제거, 가독성

    ii. 클린 코드 유형

      1. 의미 있는 이름

      2. 간결하고 명확한 주석

      3. 보기 좋은 배치

      4. 작은 함수

      5. 읽기 쉬운 제어 흐름

      6. 오류 처리

    iii. 작성 원칙 : 가독성, 단순성, 의존성 최소화, 중복성 최소화

 

2. 소스 코드 품질 분석

  A. 소스 코드 품질 분석 개념 : 코딩 스타일, 설정된 코딩 표준, 복잡도 등

  B. 소스 코드 품질 분석 도구 유형

    i. 정적 분석 도구 : 작성된 소스 코드를 실행하지 않고, 코드 자체로만

    ii. 동적 분석 도구

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

    i. 정적 분석 도구 : pmd, cppcheck

    ii. 코드 복잡도 도구 : ccm, cobertura

    iii. 동적 분석 도구 : avalanche, valgrind

 

3. 애플리케이션 성능 개선 방안

  A. 소스 코드 최적화 기법 적용

  B. 아키텍처 조정을 통한 성능 개선

  C. 프로그램 호출 순서 조정 적용

  D. 소스 코드 품질분석 도구 활용

    i. 메모리 사용 최소화

    ii. 입출력 발생 최소화

    iii. System.out.println() 사용 제외

  E. 애플리케이션 성능 현황 관리

    i. 성능 현황판 작성

    ii. 성능 현황판 이용, 애플리케이션 성능 개선

TOP