[정보처리기사] 실기 정리 - 7과목 (3)

inbdni·2020년 10월 14일
3

정보처리기사

목록 보기
21/34
post-thumbnail

🧀 애플리케이션 성능


1. 성능 측정 지표

(1) 처리량

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

(2) 응답 시간

사용자 입력이 끝난 후, 애플리케이션의 응답 출력이 개시될 때까지의 시간
메뉴 클릭 시 해당 메뉴가 나타나기까지 걸리는 시간

(3) 경과 시간

애플리케이션에 사용자가 요구를 입력한 시점부터 트랜잭션을 처리 후 그 결과의 출력이 완료될 때까지 걸리는 시간

(4) 자원 사용률

애플리케이션이 트랜잭션을 처리하는 동안 사용하는 CPU 사용량, 메모리 사용량, 네트워크 사용량


2. 성능 분석 도구

(1) 성능/부하/스트레스 점검 도구

가상의 사용자를 점검 도구 상에서 인위적으로 생성한 뒤, 시스템의 부하나 스트레스를 통해 성능 측정 지표인 처리량, 응답 시간, 경과 시간 등을 점검하기 위한 도구
ex. JMeter, LoadUI, OpenSTA

(2) 모니터링 도구

애플리케이션 실행 시 자원 사용량을 확인하고 분석하기 위한 도구
ex. Scouter, Zabbix


3. 성능 저하 원인

(1) 데이터베이스 관련 저하

  • DB Lock
    대량의 데이터 조회, 과도한 업데이트, 인덱스 생성 시 발생

  • DB Fetch
    실제 필요한 데이터보다 많은 양의 데이터 요청이 들어올 경우 응답 시간 저하

  • Connection Leak
    DB 연결과 관련한 JDBC 객체를 사용 후 종료하지 않을 경우 발생

  • Connection Pool Size
    너무 작거나 크게 설정한 경우 성능 저하 발생

  • Commit
    트랜잭션이 커밋되지 않고 커넥션 풀에 반환될 때 성능 저하 발생

(2) 내부 로직으로 인한 저하

  • 웹 애플리케이션의 인터넷 접속 불량
    인터넷 접속 불량으로 서버 소켓 쓰기는 지속되지만 클라이언트에서 정상적 읽기가 수행되지 않는 경우

  • 특정 파일의 업로드 및 다운로드
    대량의 파일을 업로드하거나 다운로드할 경우 처리시간이 길어져서 성능 저하 발생

  • 정상적으로 처리되지 않은 오류 처리
    오류 처리 로직과 실제 처리 로직 부분을 분리하지 않고 코딩하거나 예외를 제대로 처리하지 않아 행이 걸리는 경우

(3) 외부 호출로 인한 저하

임의의 트랜잭션이 수행되는 동안 외부 트랜잭션이 장시간 수행되거나 타임아웃이 일어나는 경우 성능 저하

(4) 잘못된 환경 설정으로 인한 저하

스레드 풀, 힙 메모리의 크기를 너무 작게 설정하면 memory full 현상 발생 시 성능 저하

(5) 네트워크 장비로 인한 저하

라우터나 스위치 등의 네트워크 장비 간 데이터 전송 실패 또는 전송 지연에 따른 데이터 손실 발생 시 성능 저하



🧀 성능 테스트 프로세스


1. 성능 테스트 케이스 작성

  • 테스트 목표 및 목푯값을 설정하여 작성
  • 측정 항목을 기술하여 작성
  • 테스트 시나리오 작성
  • 사전 확인 사항 작성

2. 성능 테스트 수행

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

3. 성능 테스트 결과 분석

(1) 결과 분석

  • 사용자 수 증가에 따른 트랜잭션 성공 비율 추이 분석
  • TPS, 응답 시간 분석
  • 시스템 자원 사용률 분석

(2) 성능 저하 요인 분석

  • 애플리케이션 성능 부하 테스트 분석
  • 응답 시간 측정 및 분석
  • 시스템 장애 분석



🧀 성능 개선


1. 소스 코드 최적화

읽기 쉽고 변경 및 추가가 쉬운 클린 코드를 작성하는 것

(1) 클린 코드 (Clean Code)

잘 작성되어 가독성이 높고, 단순하며, 의존성을 줄이고, 중복을 최소화하여 깔끔하게 잘 정리된 코드

  • 의미 있는 이름
  • 작은 함수
  • 보기 좋은 배치
  • 간결하고 명확한 주석
  • 읽기 쉬운 제어 흐름
  • 오류 처리

(2) 나쁜 코드 (Bad Code)

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

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

2. 소스 코드 품질 분석

소스 코드에 대한 코딩 스타일, 설정된 코딩 표준, 코드의 복잡도, 코드 내 존재하는 메모리 누수 현황, 스레드의 결함 등을 발견하기 위한 활동

(1) 정적 분석 도구

작성된 코드를 실행시키지 않고 분석하는 도구

  • pmd
  • cppcheck
  • SonarQube
  • ckeckstyle

(2) 동적 분석 도구

애플리케이션을 실행시켜서 분석하는 도구

  • Avalanche
  • Valgrind

(3) 코드 복잡도 도구

  • ccm
  • cobertura

3. 성능 개선 방안

  • 소스 코드 최적화 기법 적용

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

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

  • 소스 코드 품질 분석 도구 활용
    • 메모리 사용 최소화 적용
    • 입출력 발생 최소화 적용
    • System.out.println() 사용 제외
  • 애플리케이션 성능 현황 관리
    • 성능 현황판 작성 및 활용




🐭 참고문헌

  • NCS 정보처리기술사 연구회. (2020). 수제비 정보처리기사 실기 (2판). 건기원.

0개의 댓글