Skip to content

Latest commit

 

History

History
61 lines (48 loc) · 4.27 KB

5uhwann.md

File metadata and controls

61 lines (48 loc) · 4.27 KB

성능 테스트 패턴 및 안티패턴

성능 테스트 기획 Tip

  • 테스트로 확인하고 싶은 정략적 질문 리스트와 그 테스트가 대상 어플리케이션 입장에서 중요한 이유를 작성해보기

성능 테스트 종류

  • 지연테스트(Latency Test) - 종단 트랜잭션에 걸리는 시간은?

    • 가장 일반적인 성능 테스트
    • 유저 경험을 직접적으로 개선하기 위해 지연 튜닝 시행
    • 단순 측정 평균값은 어플리케이션의 요청 응답성을 측정하는 지표로는 효용서이 없음
  • 처리율 테스트(Throughput test) - 현재 시스템이 처리 가능한 동시 트랜잭션 개수는?

    • 지연 테스트 수행 시 진행 중인 동시 트랜잭션을 반드시 명시, 제어 헤야 한다.
    • 지연을 모니터링 하면서 테스트
    • 지연 분포가 갑자기 변하는 변곡점이 시스템의 '최대 처리율'
    • 시스템 성능이 급락하기 직전, 최대 처리율 수치를 측정하는 것이 목표
  • 부하 테스트(Load test) - 특정 부하를 시스템이 감당할 수 있는가?

    • 시스템이 특정 부하를 견딜 수 있는지 yes or no를 확인하는 테스트
    • 예상되는 트래픽을 대비하기 위해 테스트 수행
  • 스트레스 테스트(Stress test) - 이 시스템의 한계점(breaking point)은 어디까지인가?

    • 시스템의 여력이 어느 정도인지 확인하는 수단
    • 일정 수준의 트랜잭션(최대 처리율)을 시스템에 계속 부여, 시스템 성능이 저하되는 시점 바로 직전을 최대 처리율로 확인
  • 내구성 테스트(Endurance test) - 시스템을 장시간 실행할 경우 성능 이상 증상이 나타나는가?

    • 메모리 누수, 캐시 오염, 메모리 단편화 등 시간이 지나고 나서야 드러나는 문제를 감지하기 위한 테스트
    • 평균 사용률로 시스템에 일정 부하를 주어 모니터링하여 갑자기 리소스가 고갈되거나 시스템이 깨지는 지점 확인
    • 빠른 응답을 요구하는(지연이 낮은) 시스템에서 주로 사용
  • 용량 계획 테스트(Capacity planning test) - 리소스를 추가한 만큼 시스템이 확장되는가?

    • 업그레이드한 시스템이 어느 정도 부하를 감당할 수 있을지 미리 확인
    • 특정 이벤트나 위협 요소에 대응하는 것이 아닌, 예정된 계획의 일부로 시행
  • 저하 테스트(Degradation) - 시스템이 부분적으로 실패할 경우 어떤 일이 벌어지는가?

    • 부분 실패 테스트라고도 한다.
    • 트랜잭션 지연 분포와 처리율을 눈여겨 보아야 함
    • 카오스 멍키: 복원성 있는 아키텍처는 어느 한 컴포넌트에 문제가 생기더라도 다른 컴포넌트까지 연쇄적으로 문제를 전파해 시스템에 부정적 영향을 끼쳐서는 안된다.
    • 운영 환경에 떠있는 라이브 프로세스를 하나씩 랜덤하게 죽이면서 검증
    • 조직 차원에서 시스템 위성, 서비스 설계, 운영 탁월성을 최고 수준으로 확보해야 함

성능 테스트 기본 베스트 프랙티스

성능 튜닝 시 지켜야 할 3가지 원칙

  1. 나의 관심사가 무엇인지 식별하고 그 측정 방법을 고민
  2. 최적화하기 용이한 부분이 아니라, 중요한 부분을 최적화
  3. 중요한 관심사를 먼저 다룬다.

하향식 성능(전체 어플리케이션 성능 부터 확인)

  • 자바 어플리케이션은 대규모 벤치마킹이 작은 코드 섹션 별 수치 확인보다 쉬움
  • 테스트 환경을 구축하여 무엇을 측정하고 무엇을 최적화 할지, 전체 소프트웨어 개발 주기에 어떻게 병행할지 명확히 이해해야 함

테스트 환경 구축

  • 가급적 모든 면에서 운영환경과 똑같이 복제
    • 어플리케이션 서버 뿐만 아니라 웹 서버, DB, 로드 밸랜서, 네트워크 방어벽 등

성능 요건 식별

  • 성능을 평가하는 지표는 코드 관점에선 생각하는 것이 아니라 시스템을 전체적으로 바라보고 고객과 경영진에게 중요한 측정값을 제공해야 한다.
  • 이해관계자들의 논의가 필요

성능 안티패턴

성능 튜닝은 항상 초기 기획 단계부터 구체적으로 목표를 정해놓고 시작해야 한다.