방구석 상상코딩

28. 애플리케이션 성능 개선 본문

정보처리기사 실기

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

구석탱 2022. 2. 6. 19:08

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

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

성능 분석 도구 유형

1. 성능 테스트 도구

  • JMeter : HTTP, FTP, LDAP 등 다양한 프로토콜을 지원하는 안전성, 확장성, 부하, 기능 테스트 도구
  • LoadUI : UI를 통해 HTTP, JDBC 등 주로 웹 서비스를 대상으로 서버 모니터링을 지원하는 부하 테스트 도 구
  • OpenSTA : HTTP, HTTPS 지원하는 부하 테스트 및 생산품 모니터링 도구

2. 시스템 모니터링 도구

  • Scouter : 단일 뷰 통합/실시간 모니터링, 튜닝에 최적화된 인프라 통합 모니터링 도구
  • Zabbix : 웹 기반 서버, 서비스, 애플리케이션 모니터링 도구

베드 코드 사례

베드 코드 사례 설명
외계인 코드
(Alien Code)
아주 오래되거나 참고문서 또는 개발자가 없어 유지보수 작업이 아주 어려운 코드
스파게티 코드
(Spaghetti Code)
컴퓨터 프로그램의 소스 코드가 복잡하게 얽힌 모습을 스파게티의 면발에 비유한 표현
작동은 정상적으로 하지만, 사람이 코드를 읽으면서 그 코드의 작동을 파악하기는 어려움
알 수 없는 변수명 변수나 메서드에 대한 이름 정의를 알 수 없는 코드
로직 중복 동일한 처리 로직이 중복되게 작성된 코드

클린 코드 작성 원칙

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

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

  • 정적 분석 도구 : 작성된 소스 코드를 실행시키지 않고, 코드 자체만으로 코딩 표준 준수 여부, 코딩 스타일 적정 여부, 잔존 결함 발견 여부를 확인하는 코드 분석 도구
  • 동적 분석 도구 : 애플리케이션을 실행하여 코드에 존재하는 메모리 누수 현황을 발견하고, 발생한 스레드의 결함 등을 분석하기 위한 도구

리펙토링

유지보수 생산성 향상을 목적으로 기능을 변경하지 않고, 복잡한 소스 코드를 수정, 보완하여 가용성 및 가독성을 높이는 기법

 

리펙토링의 목적

  • 유지보수성 향상 : 복잡한 코드의 단순화, 소스의 가독성 향상
  • 유연한 시스템 : 소프트웨어 요구사항 변경에 유연한 대응
  • 생산성 향상 : 정제 및 최적화된 소스의 재사용
  • 품질향상 : 소프트웨어 오류 발견이 용이하여 품질향상