정보처리기사

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

nayeonee__ 2023. 4. 5. 08:26

https://www.njobler.net/product/lecture/show/prod/10810

 

1억뷰 N잡

[연장 미포함] 흥나게 합격달성! 정보처리기사 실기

www.njobler.net

본 강의를 듣고 내용을 정리하며 적은 게시글 입니다. 

 

 

 

 

 

  • 애플리케이션 성능 저하 원인
    • 데이터베이스 관련 성능 저하
      • 데이터베이스 락
        • 대량의 데이터 조회, 과도한 업데이트 시 발생, 락 해재 시까지 대기하거나 타임아웃 됨
      • 불필요한 패치
        • 결과 세트에서 커서를 옮기는 작업이 빈번할 때 발생한다.
      • 연결 누수
        • DB Connection 사용 후 반환하지 않을 경우 발생
        • Connection Pool 크기가 너무 작거나 크게 설정된 경우 발생한다.
    • 내부 로직으로 인한 성능 저하
      • 파일관련오류
      • 코드 오류
    • 외부 호출로 인한 성능 저하
      • 외부 서버와 인터페이스 시 장시간 수행되거나 타임 아웃이 일어나 성능 저하 발생
  • 애플리케이션 성능 분석
    • 애플리케이션 성능 분석 지표
      • 처리량
      • 응답시간
      • 경과시간
      • 자원사용률
    • 성능 분석 도구
      • JMeter
        • 부하테스트 도구
      • LoadUI
        • 웹서비스의 로드 테스트
      • OpenSTA
        • 부하테스트민 생산품 모니터링 도구
    • 모니터링 도구
      • Scouter
      • NMon
      • Zabbix
      • Jeniffer
  • 정형 기술 검토 회의 (FTR, Fomal TEchnical Review)
    • 개념
      • 소프트웨어 엔지니어가 수행하는 소프트웨어 품질보증활동
      • S/W 개발 산출물을 대상으로 오류를 발견하기 위한 공식적인 활동
    • 목적
      • 산출물 요구사항 일치여부
      • 등등
    • 검토 지침
      • 등등
  • 소스코드 품질분석
    • 동료검토
      • 2~3명이 진행하는 리뷰의 형태
      • 작성자가 코드를 설명하고 이해 관계자들이 설명을 들으면서 결함을 발견하는 형태로 진행하는 기법
    • 워크스루
      • 계획된 개발자 검토회의
      • 검토자료를 회의전에 비표해서 사전검토한후 짧은 시간동안 회의를 진행
      • 리뷰를 통해 오류를 검출하고 문서화
    • 인스펙션
      • 공식적 검사회의
      • 작업자 외 다른 전문가가 검사하는 가장 공식적인 리뷰 기법
      • 계획 → 사전교육 → 준비 → 인스펙션 회의 → 수정 → 후속조치
  • 소스코드 품질 분석 도구
    • 소스코드 품질 분석 도구의 개념
      • 코딩을 하면서 발생하는 문제를 해결하기 위해 사용하는 도구
    • 소스코드 품질 분석도구 분류
      • 정적 분석 도구
        • 프로그램을 실행하지 않고 소프트웨어를 분석하는 방법
        • 등등
      • 동적 분석 도구
        • 프로그램을 실행하여 코드에 존재하는 메모리 누수나 스레드의 결함 등을 발견
    • 소스코드 품질 분석 도구 종류
      • 정적 분석 도구
        • PMD
        • checkstyle
        • SonarQube
        • cppcheck
        • ccm
        • cobertura
      • 동적 분석 도구
        • Avalanche
        • Valgrind
  • 애플리케이션 성능 개선하기
    • 코드 최적화의 개념
      • 알고리즘을 개선하거나 병목 현상을 제거
      • 유지 운영을 위해 소스코드를 다른 사람들이 읽기 쉽게 작성
    • 코드 스멜
      • 컴퓨터 프로그래밍 코드에서 더 심각한 문제를 일으킬 가능성이있는 프로그램 소스코드
      • 종류
        • 중복된 코드
        • 긴 메서드
        • 큰 클래스
        • 클래스 동시 수정
      • 관련 용어
        • 스파게티 코드
        • 외계인 코드
    • 리팩토링
      • 외부 동작을 바꾸지 않으면서 내부 구조를 개선하는 방법
      • 기능의 변경없이 내부 구조를 변경한다.
      • 주요 리팩토링 기법으로는 메서드 정리, 객체 간 기능 이동, 이름 변경, 추측성 일반화가 있다.
    • 클린 코드
      • 개념
        • 의존성을 최소로 하고 사람이 이해할 수 있는 가독성, 목적성이 뛰어난 명확한 코드
      • 구현 방법
        • 클래스명, 메서드명, 변수명은 명사를 사용하여 의미가 있는 이름을 짓는다.
        • 등등
      • 작성 원칙
        • 가독성
        • 단순성
        • 의존성 배제
        • 중복성 최소화
        • 추상화