[정보처리기사실기] 애플리케이션 성능 개선

    반응형

    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 정보처리기사 실기 클래스'
     

    1억뷰 N잡

    [1회 연장 포함] 흥!나게 합격 달성! 2024 정보처리기사 실기 클래스

    www.njobler.net

    반응형

    댓글