Performance Testing and Regular Maintenance
API 게이트웨이 성능 테스트
성능 테스트의 체크포인트
- 총 호출 수, 총 호출 성공 수, 총 호출 실패 수, 성공/실패 상태:
실제 애플리케이션에서 발생한 치명적인 오류가 아닐 수 있는 실패 수(예: 401 및 499)를 확인해야 하므로 상태 코드(성공/실패 상태)를 확인해야 합니다.
- 상위 5개 API 호출 - 바, 테이블
성능 테스트 중 주로 호출되는 API의 상태를 확인할 수 있습니다.
- 상위 5개 API 응답 지연
- API 호출 시 느린 응답 지연이 있는 API를 보여줍니다.
- 게이트웨이 응답 지연: 게이트웨이에 의해 발생한 지연
- 백엔드 응답 지연: 백엔드 애플리케이션의 응답 지연
- API 응답 지연: 게이트웨이 응답 지연과 백엔드 응답 지연의 결과
- 모든 응답 지연 값은 밀리초(ms)로 측정되므로, 100ms 지연은 0.1초에 불과하여 크게 느리지 않습니다. 일반적으로 1000ms(1초) 정도의 응답 시간이 느리다고 간주됩니다.
- Istio가 사이드카로 실행되는 사양도 확인해야 합니다.
성능 측정 방법 설명
- RPS 테스트: 초당 요청 수 측정
- 벌크 테스트: 요청 데이터 크기와 응답 데이터 크기가 구성된 조건에서의 측정.
- 지연 테스트: 지연이 강제되는 환경에서의 성능 측정
- 노화 테스트: 오랜 시간 동안 지속적인 테스트 및 메모리 누수와 저장 용량 증가 측정
Setting | Value | Note |
---|---|---|
CPU | 2 Core | 2 worker process |
Memory | 2 Gib | |
Replicas | 1 unit | 게이트웨이가 중복되는지 여부 |
Requests per second | 1000 unit | RPS |
Request data size | 100 KB | 벌크 (요청) |
Response data size | 100 KB | 벌크 (응답) |
Forced response delay | 1 second | 지연 |
테스트 시간 | 8시간 | 노화 |
복합 조건 (RPS+Bulk+Delay+Aging) 테스트 결과
- 소요 총 시간: 8시간 노화
- 총 요청 수: 28,800,000 호출
- 성공적인 요청 수: 28,800,000 호출
- 성공/실패 비율: 성공 100.0% (실패 0.0%)
- 평균 응답 시간: 15ms
정기 유지보수 체크리스트
APIM 구성 요소 정기 유지보수
- APIM 구성 요소 Pod가 정상적으로 실행되고 있는지 확인합니다.
$ kubectl get pods -n {APIM_NAMESPACE}
NAME READY STATUS ...
deploy-apim-devlopers-portal-backend 1/1 Running
deploy-apim-devlopers-portal-frontend 1/1 Running
deploy-apim-bff 1/1 Running
deploy-apim-analysis-manager 1/1 Running
deploy-apim-gateway-manager 1/1 Running
deploy-apim-tenant-manager 1/1 Running
deploy-apim-tenant-manager-console 1/1 Running
deploy-apim-policy-manager 1/1 Running
apim-mariadb-master-0 1/1 Running
statefulset-pgauth-0 1/1 Running
- APIM 구성 요소 데이터베이스 저장 용량 확인
$ kubectl exec -it apim-mariadb-master-0 bash -n {APIM_NAMESPACE}
(mariadb 컨테이너) $ df -h
...
/dev/nvme8n1 4.9G 451M 4.4G 10% /bitnami/mariadb
...
$ kubectl exec -it statefulset-pgauth-0 bash -n {APIM_NAMESPACE}
(postgresql 컨테이너) $ df -h
...
/dev/nvme10n1 4.9G 624M 4.3G 13% /pgdata
...
- 콘솔 접근
접근 URL을 확인합니다 (Ingress 정보를 사용하여 확인) - 아래 호스트 이름은 예시입니다.
$ kubectl get ingress -n {APIM_NAMESPACE}
NAME HOSTS
deploy-apim-devlopers-portal-backend apim.sk.com
deploy-apim-devlopers-portal-frontend apim-tenant.sk.com
deploy-apim-bff apim-developers.sk.com
다음 정보를 사용하여 웹 브라우저에서 제대로 접근할 수 있는지 확인하세요:
- APIM 콘솔
- 테넌트 관리자 콘솔
- 개발자 포털
API 게이트웨이 정기 유지보수
- APIM 콘솔 화면에 접근하여 게이트웨이 상태를 정상적으로 확인합니다.
- APIM 콘솔 > 게이트웨이 관리 > 게이트웨이 선택
- 헥사곤 모양이 구성된 복제본 수에 따라 완전히 채워져 있는지 확인합니다 → 문제가 있을 경우(예: 포드 대기 중) 헥사곤 모양이 회전 애니메이션을 표시합니다.
- 로깅 데이터를 통해 정상 호출을 확인합니다(API 로깅 항목 참조).
- Kibana > 대시보드 > APIM 대시보드
- 호출 수와 성공/실패 상태를 확인합니다.
- 모니터링 데이터를 통해 API 게이트웨이 리소스를 확인합니다(API 게이트웨이 모니터링 항목 참조): Grafana > 대시보드 > 탐색 > APIM 대시보드:
- API 호출 관련 대시보드
- 초당 호출 수 확인
- API 대기 시간 확인
- Grafana > 대시보드 탐색 > 컨테이너 대시보드 > Kubernetes: 배포:
- API 게이트웨이 리소스 확인
- CPU, 메모리 확인