본문으로 건너뛰기

Performance Testing and Regular Maintenance

API 게이트웨이 성능 테스트

성능 테스트의 체크포인트

  • 총 호출 수, 총 호출 성공 수, 총 호출 실패 수, 성공/실패 상태:

실제 애플리케이션에서 발생한 치명적인 오류가 아닐 수 있는 실패 수(예: 401 및 499)를 확인해야 하므로 상태 코드(성공/실패 상태)를 확인해야 합니다.

  • 상위 5개 API 호출 - 바, 테이블

성능 테스트 중 주로 호출되는 API의 상태를 확인할 수 있습니다.

  • 상위 5개 API 응답 지연
    • API 호출 시 느린 응답 지연이 있는 API를 보여줍니다.
    • 게이트웨이 응답 지연: 게이트웨이에 의해 발생한 지연
    • 백엔드 응답 지연: 백엔드 애플리케이션의 응답 지연
    • API 응답 지연: 게이트웨이 응답 지연과 백엔드 응답 지연의 결과
    • 모든 응답 지연 값은 밀리초(ms)로 측정되므로, 100ms 지연은 0.1초에 불과하여 크게 느리지 않습니다. 일반적으로 1000ms(1초) 정도의 응답 시간이 느리다고 간주됩니다.
  • Istio가 사이드카로 실행되는 사양도 확인해야 합니다.

성능 측정 방법 설명

  • RPS 테스트: 초당 요청 수 측정
  • 벌크 테스트: 요청 데이터 크기와 응답 데이터 크기가 구성된 조건에서의 측정.
  • 지연 테스트: 지연이 강제되는 환경에서의 성능 측정
  • 노화 테스트: 오랜 시간 동안 지속적인 테스트 및 메모리 누수와 저장 용량 증가 측정
SettingValueNote
CPU2 Core2 worker process
Memory2 Gib
Replicas1 unit게이트웨이가 중복되는지 여부
Requests per second1000 unitRPS
Request data size100 KB벌크 (요청)
Response data size100 KB벌크 (응답)
Forced response delay1 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, 메모리 확인