IT STUDY LOG

[성능 테스트] 03. 병목 찾기 본문

devops bootcamp 4/DevOps 인프라 관리

[성능 테스트] 03. 병목 찾기

roheerumi 2023. 6. 6. 14:37

# 학습 목표

  • 시스템의 가용성과 확장성을 평가할 수 있다.
  • 부하 테스트의 목적을 이해할 수 있다.
  • Throughput과 Latency의 개념을 이해할 수 있다.
  • 시스템의 병목이 발생하는 주요 원인과 대책을 이해할 수 있다.
  • SLO를 설정하고, 이를 기반으로 부하 테스트를 진행하고, 달성 여부를 파악할 수 있다.

# 학습 내용

1.  병목 구간의 확인과 개선 기본 지식

Throughput 개선

- 만일 하위 시스템 A-B-C 구간에서 A-B 구간의 처리량이 1000건이고, B-C 구간의 처리량이 200건일 경우 최소값을 개선하는 것으로 병목 해결

- 병묵이 아닌 구간을 개선하는 것은 전체 throughput을 개선하는데 도움이 되지 않음

- throughput 개선을 위해서는 병목 구간이 어디인가를 먼저 파악하는 것이 중요

 

Latency 개선

애플리케이션 개선

- Latency의 개선은 개발된 애플리케이션을 개선하는 것으로 시작

- 애플리케이션 성능 최적화는 현상을 파악(APM, Application Performance Monitoring)으로 시작해, 알고리즘 개선, I/O 최소화 등의 개선 방안이 뒤따름

- DevOps가 이를 모니터링할 수는 있으나, 결국 개발자가 APM 도구와 프로파일러 등을 이용해 이를 개선해야 함

(애플리케이션 성능 향상을 위한) 하위 시스템의 확장

- througput 개선 예시와 같이 Throughput의 개선이 Latency의 개선으로 이어짐

- 즉 "대기 시간"에 문제가 있다는 의미이므로, 만일 애플리케이션이 실행 환경(하위 시스템)의 성능을 최대한 활용할 수 있다면, 하위 시스템의 확장에 따라 Throughput도 개선되며, 대기 시간도 줄어듦

- 즉 많은 경우 Throughput이 개선되면 Latency도 개선됨

 

2. 응답 성능의 병목 원인과 대책

응답 성능의 병목 원인과 대책

- 서비스를 시작한 후 발생할 수 있는 문제 시나리오는 다양하며 이러한 문제는 응답 성능의 병목 발생

- 아래 제시된 시나리오는 매우 일반적이며, 부하 테스트를 통해 응답 성능을 예측 가능

- 애플리케이션 수준에서의 대책을 온전히 이해하기는 어렵지만, 주요 키워드를 학습하여 개발자에게 솔루션을 제공할 수 있어야 함

  1. 많은 사용자의 서비스 등록
  2. 많은 데이터의 저장
    • 1,2번과 같은 경우 DB에 데이터가 증가하므로 secondary 복제본 등을 이용해 읽기/쓰기를 분리하거나, 검색에 최적화된 인덱스 사용을 고려
  3. 단기간 동안의 사용자 요청 증가(peak traffic)
    • Auto Scaling이 해결책이 될 수 있으나 버스트 성능에 대해 이해해야 함
  4. 배치 작업을 진행하는 데이터베이스
    • DB가 주기적으로 스냅샷을 만들거나, 데이터 일관성을 위해 레플리카와의 sync 과정을 진행하는 등의 배치 작업이 이루어질 경우, primary DB는 성능 저하가 발생할 수 있으며 이때 사용자들의 요청과 맞물려 서비스 수준을 맞추기 어려울 수 있음
  5. 많은 양의 로그 수집 처리
    • 애플리케이션이 잘 작동할 때에는 로그를 많이 남기지 않지만, 애플리케이션에 문제가 발생하면 추적을 위해 많은 로그를 남기게 됨. 만일 이러한 상황이 반복적으로 진행될 경우, 에러 로그 수집 그 자체가 애플리케이션 병목을 일으킬 수 있음
  6. 시스템 재시작 후의 캐시 초기화
    • 큰 문제를 발생시키는 것은 아니지만, 캐시가 초기화되면서 시스템으로 직접적인 요청 횟수가 증가할 수 있음

 

주요 병목 구간과 부하 테스트 시 고려해야 할 부분

- 병목 구간을 확인하는 것은 부하테스트의 주요 목적이며, 좋은 부하 테스트를 만드는 기본

시스템에 문제가 발생할 수 있는 부분을 다이어그램으로 표현한 예시

출처 : 코드스테이츠 데브옵스 부트캠프 과정
 

 

# references

https://docs.aws.amazon.com/ko_kr/AWSEC2/latest/UserGuide/burstable-credits-baseline-concepts.html

 

버스트 가능 성능 인스턴스에 대한 주요 개념 및 정의 - Amazon Elastic Compute Cloud

버스트 가능 성능 인스턴스에 대한 주요 개념 및 정의 기존 Amazon EC2 인스턴스 유형은 고정된 CPU 리소스를 제공하는 반면, 성능 순간 확장 가능 인스턴스는 기본 수준의 CPU 사용률을 제공하면서

docs.aws.amazon.com

 

Comments