트러블슈팅 오라클 퍼포먼스 2판 (2017년)
성능 계획의 필요성 0 0 48,905

by 구루비스터디 성능계획 SLA [2023.09.08]


성능 계획의 필요성

  • 애플리케이션 개발 필수 단계 (각 단계에서 성능 검토 필요)
    • 요구사항 분석 > 분석 설계 > 코딩 단위 테스트 > 통합 인수 테스트


요구사항 분석

  • 요구 되는 성능 수치 정의 필수
  • 기능별 사용자 규모, 사용 빈도, 사용 방법

응답시간

  • 시스템(기능) 요청이 접수된 시점에서 반환한 시점 간격
  • 응답시간(Response Time) = 서비스 시간(Service Time) + 대기 시간(Wait Time)
  • 사용자 응답시간(User Response Time) = 시스템 응답시간(System Response Time) + 외부 구간 소요 시간 (예: ISP)


JPetStore 성능 요구 사항 (p.6)
  • 최대 응답 시간 구분 : 90%, 99.99%
    • 모든 요청(100%)의 성능 보장은 불가능(지나친 비용 발생)
  • 분당 최대 트랜잭션 구분 : 00시~07시, 08시~23시
    • 시스템 부하는 시간대에 따라 다름


SLA(Service Level Agreements)

  • 서비스 제공자/사용자 간의 관계를 명확히 하는 계약
    • 서비스 항목, 가용성, 응답시간, 고객지원 레벨, 계약 위반시 불이익 등이 정의 됨
  • KPI(Key Performance Indicators) : 위의 목표와 관련된 측정 가능한 성능 수치
    • 목표 충족 여부의 기준, 용량 계획의 근거
  • 성능 수치 측정
    • 계측 값 기록 코드를 어플리케이션에 삽입
    • 응답 시간 모니터링 도구 사용


분석과 설계

  • 높은 부하 처리용 애플리케이션은 요구사항을 만족할 수 있는 설계 필요
    • 병렬 처리, 분산 처리, 결과 재활용 기법 고려
    • 병목 발생 지점 예측 및 해결책 고려 (필요시 프로토타입 개발)
  • 명확한 요구사항(성능수치)이 합리적인 의사 결정 도출 (최소 투자로 요구사항 지원)


코딩과 단위 테스트

  • 코드 요구 사항 (우선 순위를 정하고, 예산 내에서 합리적 선택)
    • 견고성(Robustness) : 예측치 못한 상황에 대처 - 단위 테스트 필수 (범위를 벗어난 파라미터 처리 등)
    • 유지보수성(Maintainability) : 구조화, 문서화 및 높은 가독성 (유지보수 비용 감소)
    • 속도(Speed) : 빠른 수행을 위한 최적화, 트랜젝션 증가를 고려한 확장성
    • 적절한 자원 사용(Shrewd resource utilization) : 가용 자원의 적절한 사용 (필요시 병렬 처리)
    • 보안(Security) : 데이터 기밀성/무결성, 사용자 인증/권한, 부인 방지용 전자 서명
    • 계측(Instrumented) : 기능/성능 문제의 쉬운 분석, 성능 정보 코드 추가


성급한 최적화(Premature Optimization)

  • "성급한 최적화는 모든 악의 근원이다" (Donald Knuth)
    • 사소한(지엽적인) 97%는 잊고, 중요한(전역적인) 3% 핵심 코드를 최적화 해야 한다. (O)
    • 코드 작성 시 최적화 신경 쓸 필요 없다. (X)


통합 및 인수 테스트

  • 통합 및 인수 테스트 목적
    • 애플리케이션의 안정성, 기능 요구사항, 성능 요구사항 확인
  • 명확한 성능 요구사항 정의의 부재
    • 체계적 부하 테스트 불가 → 예상 부하 처리 가능 여부 미확인 상태로 운영 시작
    • 인수 가/부 결정(합의) 어려움
  • 통합 및 인수 테스트 수행 과제
    • 실제 상황과 가장 유사한 부하 테스트
    • 실제와 최대한 비슷한 데이터 확보
    • 실제 환경과 동일한 테스트 환경
  • 순차적 생명주기 모델 에서도 코딩 및 단위 테스트 단계에서도 성능 검증 필요 (리스크의 빠른 식별)
"데이터베이스 스터디모임" 에서 2017년에 "전문가를 위한 트러블슈팅 오라클 퍼포먼스(Second Edition) " 도서를 스터디하면서 정리한 내용 입니다.

- 강좌 URL : http://www.gurubee.net/lecture/4329

- 구루비 강좌는 개인의 학습용으로만 사용 할 수 있으며, 다른 웹 페이지에 게재할 경우에는 출처를 꼭 밝혀 주시면 고맙겠습니다.~^^

- 구루비 강좌는 서비스 제공을 위한 목적이나, 학원 홍보, 수익을 얻기 위한 용도로 사용 할 수 없습니다.

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입