-
정보처리기사[실기 핵심 정리] - 애플리케이션 성능 분석용어 정리 2024. 4. 14. 19:14
애플리케이션 성능 저하 원인
1) 데이터베이스 관련 성능 저하
- 데이터베이스 락(DB Lock)
- 대량의 데이터 조회나 과도한 업데이트 시 발생
- Lock이 헤제될 때까지 다른 트렉젝션들이 대기하게 되며, 이로 인해 타임아웃이 발생할 수 있다.
- 불필요한 패치(DB Fetch)
- 결과 세트에서 커서를 자주 옮기는 경우 발생
- 네트워크와 리소스에 불필요한 부담을 주며, 전체 시스템의 성능 저하를 초래할 수 있다.
- 연결 누수(Connection Leack)
- 데이터베이스 연결 후, 이를 제대로 반환하지 않을 때 발생
- 사용 가능한 데이터베이스 연결이 부족해져 시스템 성능 저하가 발생
2) 내부 로직으로 인한 성능 저하 원인
- 파일 관련 오류
- 대량의 파일을 업로드하거나 다운로드하는 과정에서 발생
- 시스템의 응답 시간이 증가하고, 서버의 부하가 커질 수 있다.
- 코드 오류
- 잘못된 코드 로직, 예를 들어 무한 반복 등의 문제로 발생
- 시스템의 리소스가 과도하게 사용되거나, 전체적인 성능이 저하될 수 있다.
3) 외부 호출로 인한 성능저하
- 외부 서버와의 인터페이스가 장시간 수행되거나 타임아웃이 발생
- 시스템의 응답 시간이 늘어나고 전체 성능에 영향을 줄 수 있다.
애플리케이션 성능 분석
1) 애플리케이션 성능 분석 지표
종류 설명 처리량
(Throughput)● 애플리케이션이 일정 시간 내에 처리하는 작업의 양
● 높은 처리량은 시스템의 효율성을 나타낸다.응답시간
(Response Time)● 사용자의 요청을 전송한 시점부터 애플리케이션이 첫 응답을 보내기 까지의 시간
● 빠른 응답 시간은 사용자 경험에 긍정적인 영향을 미친다.경과 시간
(Trun Around Time)● 요청이 전달된 시점부터 처리가 완료되기까지의 총 시간 자원 사용률
(Resource Usage)● 애플리케이션이 작업을 처리하는 동안 CPU, 메모리, 네트워크 등의 자원 사용량
● 효율적인 자원 사용은 시스템 성능에 중요하다.2) 성능 분석 도구
종류 설명 JMeter ● 다양한 프로토콜(HTTP, FTP 등)을 지원한는 부하 테스트 도구
● 애플리케이션의 성능과 스트레스 테스트에 적합LoadUI ● 웹 서비스의 로드 테스트에 사용되며, 테스트 형태에 따라 분산된 UI를 제공
● 동시 및 별도의 결과 보고가 가능OpenSTA ● HTTP, HTTPS 프로토콜에 대한 부하 테스트 및 성능 모니터링 도구
● 웹 애플리케이션의 스트레스 테스트에 유용하다.3) 모니터링 도구
종류 설명 Scounter ● 단일 뷰를 통한 통합 및 실시간 모니터 기능을 제공 NMon ● 리눅스 서버 자원에 대한 모니터링 도구 Zabbix ● 웹 기반의 서버, 서비스 애플리케이션 모니터링 도구
● 광범위한 네트워크와 시스템 모니터링 제공Jeniffer ● 애플리케이션에서 서버로 유입되는 트랙잭션의 양, 처리시간, 응답시간, 자원 활용률 등을 모니터링 한다. 정형 기술 검토회의(FTR, Formal Technical Review)
1) FTR 개념
- 소프트웨어 엔지어링의 일부로, 소프트웨어 품질 보증 활동이다.
- 소프트웨어 개발 과정에서 생성되는 문서나 프로그램의 문제점을 찾아내고 해결을 촉구하는 공식적인 검토 과정이다.
- 소프트웨어 개발 산출물, 오류 발견을 목적으로 한다.
2) FTR의 목적
- 산출물이 요구사항에 부합하는지 검토한다
- 소프트웨어가 설정된 기준에 따라 적절하게 표현되었는지 확인한다.
- 소프트웨어의 기능적, 논리적 오류를 식별한다.
- 프로젝트 관리가 보다 쉬워지도록 돕는다.
소드코드 품질 분석
1) 동료 검토(Peer Review)
- 2 ~ 3명의 개발자가 참여하는 리뷰 프로세스
- 코드 작성자가 코드를 설명하고, 이해관계자 들이 그설명을 들으며 결함을 발견한다.
- 코드의 품질을 개선하고, 팀 내 지식 공유를 촉진한다.
2) 워크스루(Walkthrough)
- 계획된 개발자 검토 회의
- 검토 자료를 회의 전에 배포하여 사전 검토한 후, 짧은 시간 동안 리뷰 회의를 진행한다.
- 오류 검출과 문서화를 통해 코드 품질을 향상시키고, 개발 프로세스를 검토한다
3)인스펙션(Inspection)
- 공식적 검사회의
- 작업자가 아닌 다른 전문가나 팀이 검사하여 오류를 찾아내고, 소스 코드의 품질을 높이는 기법
- 계획 -> 사전교육 -> 준비 -> 인스펙션 회의 -> 수정 -> 후속조치
소스코드 품질 분석 도구
1) 소스코드 품질 분석 도구의 개념
- 코딩 중 발생할 수 있는 다양한 문제를 해결하기 위해 사용하는 도구
- 코딩 스타일, 코딩 표준 준수 여부, 코드의 복잡도, 메모리 누수, 스레드 결함 등 소스코드로 인해 발생하는 문제들을 찾는데 사용
2) 소스 코드 품질 분석 도구 분류
- 정적 분석 도구
- 프로그램 실행 없이 소프트웨어 코드를 분석
- 코드의 결함, 버그, 보안 취약점 등을 확인
- 소스코드의 오류와 잠재적 문제점을 분석하는 데 사용
- 동적 분석 도구
- 프로그램 실행하여 코드의 메모리 누수나 스레드 결함 등을 발견
- 실행 중인 프로그램의 문제를 실시간으로 분석
애플리케이션 성능 개선하기
1) 코드 최적화의 개념
- 알고리즘 개선, 병목 현상 제거, 실행 시간 단축, 메모리 사용 최소화
- 계산 횟수 감소, 실행 시간과 기억용량 최적화, 소스코드의 가독성 향상
- 소스코드 리팩토링을 통해 '코드 스멜'을 제거하고 품질을 개선
2) 코드 스멜(Code Smell)
- 소스코드에서 발견할 수 있는 잠재적인 문제점을 지칭
- 코드 스멜 관련 용어
용어 설명 스파게티 코드
(Spaghetti Code)● 복잡하게 얽힌 소스코드 구조
● GOTO문 과다 사용, 비구조적 프로그래밍으로 발샐외계인 코드 ● 오래되어 유지보수가 어려운 코드 3) 리팩토링
- 외부 동작 변경 없이 내부 구조를 개선하는 방법
- 기능 변경 없이 소스코드의 가독성과 유지보수성을 높이기 위해 내부 구조를 변경한다.
4) 클린코드
- 클린코드의 개념
- 의존성 최소화, 명확한 가독성과 목적성을 가진 코드
- 특징 : 의존성 최소화, 단일 책임 원칙 준수, 버그 최소화, 가독성 향상, 중복 최소화, 변경 용이성, 간결함
- 클린코드 구현 방법
- 클래스명, 메서드명, 변수명에 의미 있는 명사 사용
- 불필요한 주석 제거, 의도를 명확히 기술한 주석 작성
- 리팩토링을 통해 복잡도 낮춤
- 코드는 기능별로 간단하게 작성
- 중복코드 제거
- 쉽게 읽을 수 있는 코드 작성
- 다른 모듈에 미치는 영향 최소화
- 런타임 오류 대신 예외 처리를 통한 안정적 종료 유도
- 클린코드 작성 원칙
작성 원칙 설명 가독성 ● 쉽게 읽히는 코드
● 이해하기 쉬운 용어 사용
● 적절한 들여쓰기단순성 ● 간단한 코드 작성
● 한 가지 기능만 처리
● 최소 단위로 분리의존성 배제 ● 코드 변경 시 다른 부분에 영향이 없도록 작성 중복성 최소화 ● 중복 코드 삭제 및 공통 코드 사용 추상화 ● 상위 객체에서 간략하게 기능적 특성 표현, 상세 내용은 하위 객체에서 구형 '용어 정리' 카테고리의 다른 글
정보처리기사[실기 핵심 정리] - 국제 표준 제품 품질 특성 (0) 2024.04.14 정보처리기사[실기 핵심 정리] - 소프트웨어 유지 보수 (0) 2024.04.14 정보처리기사[실기 핵심 정리] - 애플리케이션 통합테스트 (0) 2024.04.14 정보처리기사[실기 핵심 정리] - 애플리케이션 테스트케이스 설계 (0) 2024.04.13 정보처리기사[실기 핵심 정리] - 객체지향 설계 (0) 2024.04.13 - 데이터베이스 락(DB Lock)