728x90
성능 테스트 및 모니터링
강의 목표:
- API의 성능을 테스트하는 도구를 사용해 FastAPI 애플리케이션의 성능을 분석하는 방법을 학습한다.
- Kubernetes 환경에서 애플리케이션 모니터링 도구를 사용해 실시간 상태를 감시하는 방법을 실습한다.
강의 세부 내용:
1. 성능 테스트의 중요성
- API 성능 테스트는 애플리케이션이 실제 트래픽 하에서 얼마나 빠르게 요청을 처리하는지 측정하는 데 중요한 역할을 합니다.
- 성능 테스트는 대량의 요청에 대한 애플리케이션의 응답 시간, 처리량, 동시성 처리 능력을 분석합니다.
2. 성능 테스트 도구 소개
- Locust: Python 기반의 오픈소스 성능 테스트 도구로, 다수의 동시 요청을 통해 API 성능을 테스트할 수 있습니다.
- k6: 대규모 부하 테스트를 위한 오픈소스 도구로, 고성능의 JavaScript 기반 로드 테스트를 지원합니다.
3. 실습: Locust를 사용한 성능 테스트
Step 1: Locust 설치
pip install locust
Step 2: Locust 테스트 스크립트 작성
- FastAPI 애플리케이션에 다수의 요청을 보내 성능을 측정하는 Locust 스크립트를 작성합니다.
# locustfile.py from locust import HttpUser, task, between class LoadTestUser(HttpUser): wait_time = between(1, 5) @task def test_root(self): self.client.get("/") @task def test_summary(self): self.client.get("/summary")
- HttpUser: Locust에서 HTTP 요청을 보내는 사용자 역할을 하는 클래스입니다.
- @task: 특정 엔드포인트로 요청을 보내는 작업을 정의합니다.
- wait_time: 각 요청 사이에 1초에서 5초 사이의 대기 시간을 설정합니다.
Step 3: Locust 서버 실행
- Locust를 실행하여 성능 테스트 웹 인터페이스를 시작합니다.
locust -f locustfile.py
- 브라우저에서 http://localhost:8089로 접속하여 테스트할 사용자 수와 초당 요청 수를 설정할 수 있습니다.
Step 4: 성능 테스트 실행
- Number of users: 테스트할 사용자 수(예: 50명).
- Spawn rate: 초당 생성할 사용자 수(예: 10).
- Host: 테스트할 FastAPI 서버 주소(예: http://127.0.0.1:8000).
테스트가 실행되면 요청 처리 속도, 실패율, 응답 시간 등의 성능 데이터를 실시간으로 확인할 수 있습니다.
Step 5: 테스트 결과 분석
- Locust 대시보드에서 각 요청의 평균 응답 시간, 90% 응답 시간, 초당 처리량 등의 결과를 확인할 수 있습니다.
- 성능 병목 구간을 확인하여 애플리케이션의 최적화가 필요한 부분을 파악할 수 있습니다.
4. Kubernetes 환경에서 모니터링
Step 1: Kubernetes 모니터링 도구
- Prometheus: Kubernetes 클러스터의 메트릭 데이터를 수집하고, 실시간 모니터링을 제공합니다.
- Grafana: Prometheus 데이터를 시각화하여, 애플리케이션 상태를 모니터링할 수 있습니다.
Step 2: Prometheus와 Grafana 설치
- Helm 설치: Kubernetes에 Prometheus와 Grafana를 설치하기 위한 Helm 차트 설치.
brew install helm
- Prometheus와 Grafana 배포:
helm repo add prometheus-community https://prometheus-community.github.io/helm-charts helm repo update helm install prometheus prometheus-community/kube-prometheus-stack
- Prometheus 대시보드 접속:
- Prometheus가 실행되고 있는 Pod를 확인한 후, Kubernetes 대시보드를 통해 접속할 수 있습니다.
kubectl get pods -n default
- Prometheus가 실행되고 있는 Pod를 확인한 후, Kubernetes 대시보드를 통해 접속할 수 있습니다.
- Grafana 대시보드 설정:
- Grafana에서 기본적으로 제공되는 Kubernetes 모니터링 대시보드를 사용하여 클러스터 상태를 실시간으로 감시합니다.
- Grafana 접속:
kubectl port-forward <grafana-pod-name> 3000
- 브라우저에서 http://localhost:3000에 접속하여 대시보드를 확인합니다.
Step 3: Kubernetes 애플리케이션 메트릭 모니터링
- Prometheus가 수집하는 메트릭에는 CPU 사용량, 메모리 사용량, 네트워크 I/O, 애플리케이션 처리량 등이 포함됩니다.
- Grafana 대시보드에서 각 메트릭을 시각화하여 애플리케이션 상태를 실시간으로 모니터링할 수 있습니다.
5. 애플리케이션 최적화
Step 4: 성능 최적화
- 비동기 처리: 성능 테스트 결과에서 발견된 병목 현상은 비동기 처리를 통해 최적화할 수 있습니다.
- 리소스 할당 조정: Kubernetes에서 각 Pod에 할당된 CPU와 메모리 리소스를 조정하여 성능을 개선할 수 있습니다.
resources: limits: cpu: "500m" memory: "512Mi" requests: cpu: "250m" memory: "256Mi"
마무리 및 추가 학습
- 이번 강의에서는 Locust를 사용해 FastAPI 애플리케이션의 성능 테스트를 진행하고, Kubernetes 환경에서 Prometheus와 Grafana로 애플리케이션을 모니터링하는 방법을 배웠습니다.
- 성능 테스트와 모니터링 결과를 바탕으로 애플리케이션의 병목 구간을 분석하고, 최적화를 진행하는 방법을 학습했습니다.
728x90
'FastAPI' 카테고리의 다른 글
FastAPI 강좌 7강: Kubernetes를 활용한 애플리케이션 배포 (0) | 2024.10.09 |
---|---|
FastAPI 강좌 6강: 도커를 사용한 FastAPI 애플리케이션 컨테이너화 (0) | 2024.10.09 |
FastAPI 강좌 5강: 비동기 처리와 성능 최적화 (1) | 2024.10.09 |
FastAPI 강좌 4강: 데이터 분석 결과 API 구현 (0) | 2024.10.09 |
FastAPI 강좌 3강: 데이터 처리와 Pandas 연동 (4) | 2024.10.09 |