반응형
1과목. 소프트웨어 구축
📒 18. 애플리케이션 성능 개선
계획 - 요구사항 분석 - 소프트웨어 - 구현 - 테스트 - 유지보수
1. 애플리케이션 성능 저하 원인
(1) 데이터베이스 관련 성능 저하
- a) 데이터베이스 락(DB Lock)
- 대량의 데이터 조회나 과도한 업데이트 시 발생
- Lock이 해제될 때까지 다른 트랜잭션들이 대기하며, 이로 인해 타임아웃이 발생할 수 있음 - b) 불필요한 패치(DB Fetch)
- 결과 세트에서 커서를 자주 옮기는 경우 발생 - c) 연결 누수(Connection Leack)
- 데이터베이스 연결 후, 이를 제대로 반환하지 않을 때 발생
(2) 내부 로직으로 인한 성능 저하
- a) 파일 관련 오류
- 대량의 파일을 업로드하거나 다운로드하는 과정에서 발생 - b) 코드 오류
- 잘못된 코드 로직(무한 반복) - c) 외부 호출로 인한 성능 저하
- 외부 서버와의 인터페이스가 장시간 수행되거나 타임아웃이 발생
2. 애플리케이션 성능 분석
(1) 성능 분석 지표
- a) 처리량(Throughtput)
- 애플리케이션이 일정 시간 내에 처리하는 작업의 양 - b) 응답 시간(Response Time)
- 사용자가 요청을 전송한 시점부터 애플리케이션이 첫 응답을 보내기까지의 시간 - c) 경과 시간(반환 시간, Turn Around Time)
- 요청이 전달된 시점부터 처리가 완료되기까지의 총 시간 - d) 자원 사용률(Resource Usage)
- 애플리케이션이 작업을 처리하는 동안 CPU, 메모리, 네트워크 등의 자원 사용량
(2) 성능 분석 도구
- a) JMeter
- 다양한 프로토콜을 지원하는 애플리케이션의 성능과 스트레스 테스트 도구 - b) LoadUI
- 웹 서비스의 로드 테스트에 사용되며, 테스트 형태에 따라 분산된 UI를 제공 - c) OpenSTA
- HTTP, HTTPS 프로토콜에 대한 부하 테스트 및 성능 모니터 도구
(3) 모니터링 도구
- a) Scouter
- 단일 뷰를 통한 통합 및 실시간 모니터링 도구 - b) NMon
- 리눅스 서버 자원에 대한 모니터링 도구 - c) Zabbix
- 웹 기반의 서버, 애플리케이션 모니터링 도구 - d) Jeniffer
- 애플리케이션에서 서버로 유입되는 트랜잭션의 양, 처리 시간 등을 모니터링
3. 정형 기술 검토회의(FTR, Formal Technical Review)
(1) FTR의 개념
- 소프트웨어 개발 과정에서 문제점을 찾고 해결하는 공식적인 검토 활동
(2) FTR의 목적
- 소프트웨어가 설정된 기준에 따라 적절하게 표현되었는지 확인
더보기
FTR은 전체적인 소프트웨어 관리(문서), 인스펙션은 기술적 요소에 대해 집중적으로 회의
4. 소스코드 품질 분석
(1) 동료 검토(Peer Review)
- 2~3명의 개발자가 참여하는 리뷰 프로세스
(2) 워크스루(Walkthrough)
- 계획된 개발자 검토 회의(팀 회의)
(3) 인스펙션(Inspection)
- 공식적 검사 회의로, 작업자가 아닌 다른 전문가나 팀이 검사하여 오류를 찾아내는 기법
- 계획 → 사전교육 → 준비 → 인스펙션 회의 → 수정 → 후속조치
동료 검토, 워크스루, 인스펙션을 이용해서 소스코드의 품질을 분석하고 리팩토링*을 수행
*리팩토링 : 기능은 그대로 두고 소스 코드를 수정하는 것
5. 소스 코드 품질 분석 도구
(1) 소스 코드 품질 분석 도구의 개념
- 코딩 중 발생할 수 있는 다양한 문제를 해결하기 위해 사용하는 도구
(2) 소스 코드 품질 분석 도구 분류
- a) 정적 분석 도구
- 코드의 결함 버그, 보안 취약점 등을 확인
- PMD, checkstyle, SonarQube, cppcheck, ccm, cobertura - b) 동적 분석 도구
- 메모리 누수나 스레드 결함 등을 발경
- 실행 중인 프로그램의 문제를 실시간으로 분석
- Avalanche, Valgrind
6. 애플리케이션 성능 개선하기
(1) 코드 최적화
- 소스코드의 가독성 향상, 메모리 사용 최소화, 코드 스멜 제거
(2) 코드 스멜
- 소스코드에서 발견할 수 있는 잠재적인 문제점
- 스파게티 코드, 외계인 코드
더보기
차세대 : 옛날 시스템(외계인 코드)을 현대 코드에 맞게 바꾸는 것
고도화 : 현재 있는 시스템을 확장하는 것(기능들을 대규모로 추가될 때)
(3) 리팩토링
- 기능 변경 없이 소스코드의 가독성과 유지보수성을 높이기 위해 내부 구조를 변경
(4) 클린코드
- 의존성 최소화, 명확한 가독성과 목적성을 가진 코드
- 읽기 쉬운 코드를 작성하기 위함
- 작성 원칙 : 가독성, 단순성, 의존성 배제, 중복성 최소화, 추상화(공통된 성질 묶기)
참고자료
흥달쌤, '흥!나게 합격 달성! 2024 정보처리기사 실기 클래스'
반응형
댓글