모니터링

성능 최적화는 일반적으로 지연 시간 및 처리량과 관련된 주요 측정항목을 식별하는 것에서 시작됩니다. 이러한 측정항목을 캡처하고 추적하기 위해 모니터링을 추가하면 애플리케이션의 약점이 노출됩니다. 측정항목을 사용하면 최적화를 통해 성능 측정항목을 개선할 수 있습니다.

또한 여러 모니터링 도구를 사용하면 측정항목에 대한 알림을 설정하여 특정 기준이 충족되면 알림을 받을 수 있습니다. 예를 들어 실패한 요청 비율이 정상 수준의 x% 이상 증가할 때 알림을 보내도록 설정할 수 있습니다. 모니터링 도구를 사용하면 정상 성능을 파악하고 지연 시간, 오류 수량, 기타 주요 측정항목의 비정상적으로 급증하는 부분을 파악할 수 있습니다. 이러한 측정항목을 모니터링하는 기능은 특히 비즈니스와 관련해 중요도가 높은 기간 또는 새 코드가 프로덕션에 푸시된 후에 중요합니다.

지연 시간 측정항목 식별

UI의 반응성을 최대한으로 유지해야 합니다. 사용자는 모바일 앱에서 훨씬 더 높은 표준을 기대한다는 점에 유의합니다. 백엔드 서비스의 지연 시간도 측정하고 추적해야 합니다. 지연 시간을 확인하지 않으면 처리량 문제가 발생할 수 있기 때문입니다.

추적할 추천 측정항목은 다음과 같습니다.

  • 요청 기간
  • 하위 시스템 수준의 요청 기간 (예: API 호출)
  • 작업 기간

처리량 측정항목 식별

처리량은 특정 기간 동안 제공된 총 요청 수를 측정한 것입니다. 처리량은 하위 시스템의 지연 시간에 영향을 받을 수 있으므로 처리량을 개선하려면 지연 시간에 맞게 최적화해야 할 수 있습니다.

다음은 추적해야 할 몇 가지 추천 측정항목입니다.

  • 초당 쿼리 수
  • 초당 전송되는 데이터 크기
  • 초당 I/O 작업 수
  • 리소스 사용률(예: CPU 또는 메모리 사용량)
  • 처리 백로그 크기(예: Pub/Sub 또는 스레드 수)

악의를 가진 피해자

성능을 측정할 때 흔히 범하는 실수는 평균 사례만 살펴보는 것입니다. 이는 유용하지만 지연 시간 분포에 대한 정보는 제공하지 않습니다. 추적하기에 더 좋은 측정항목은 성능 백분위수입니다(예: 측정항목의 50번째/75번째/90번째/99번째 백분위수).

일반적으로 최적화는 두 단계로 수행할 수 있습니다. 첫째, 90번째 백분위수 지연 시간에 맞게 최적화합니다. 그런 다음 요청을 완료하는 데 훨씬 더 오래 걸리는 99번째 백분위수(꼬리 지연 시간이라고도 함)를 고려합니다.

자세한 결과를 위한 서버 측 모니터링

서버 측 프로파일링은 일반적으로 측정항목 추적에 선호됩니다. 서버 측에서는 일반적으로 계측하기가 훨씬 쉽고, 더욱 세분화된 데이터에 액세스할 수 있으며, 연결 문제로 인한 변동의 영향을 덜 받습니다.

엔드 투 엔드 가시성을 위한 브라우저 모니터링

브라우저 프로파일링은 최종 사용자 환경에 대한 추가 정보를 제공할 수 있습니다. 속도가 느린 페이지를 표시할 수 있으며, 이를 서버 측 모니터링과 연결하여 추가 분석을 수행할 수 있습니다.

Google 애널리틱스페이지 시간 보고서를 통해 페이지 로드 시간을 즉시 모니터링할 수 있습니다. 이렇게 하면 사이트의 사용자 환경을 이해하는 데 특히 다음과 같은 여러 유용한 뷰를 얻을 수 있습니다.

  • 페이지 로드 시간
  • 리디렉션 로드 시간
  • 서버 응답 시간

클라우드에서 모니터링

애플리케이션의 성능 측정항목을 캡처하고 모니터링하는 데 사용할 수 있는 다양한 도구가 있습니다. 예를 들어 Google Cloud Logging을 사용하여 성능 측정항목을 Google Cloud 프로젝트에 로깅한 다음 Google Cloud Monitoring에서 대시보드를 설정하여 로깅된 측정항목을 모니터링하고 분류할 수 있습니다.

Python 클라이언트 라이브러리의 커스텀 인터셉터에서 Google Cloud Logging에 로깅하는 예시Logging 가이드를 참조하세요. Google Cloud에서 사용할 수 있는 데이터를 사용하면 로깅된 데이터 위에 측정항목을 빌드하여 Google Cloud Monitoring을 통해 애플리케이션에 대한 가시성을 확보할 수 있습니다. Google Cloud Logging으로 전송된 로그를 사용하여 측정항목을 빌드하려면 사용자 정의 로그 기반 측정항목에 대한 가이드를 따르세요.

또는 Monitoring 클라이언트 라이브러리를 사용하여 코드에서 측정항목을 정의하고 이를 로그와 별도로 Monitoring에 직접 전송할 수 있습니다.

로그 기반 측정항목 예시

애플리케이션의 오류율을 더 잘 이해하기 위해 is_fault 값을 모니터링한다고 가정해 보겠습니다. 로그에서 is_fault 값을 새로운 카운터 측정항목ErrorCount로 추출할 수 있습니다.

측정항목 구성

측정항목의 필터 및 라벨

Cloud Logging에서 라벨을 사용하면 로그의 다른 데이터를 기반으로 측정항목을 카테고리로 그룹화할 수 있습니다. Google Ads API 메서드로 오류 수가 어떻게 분류되는지 보기 위해 Cloud Logging으로 전송된 method 필드의 라벨을 구성할 수 있습니다.

ErrorCount 측정항목과 Method 라벨을 구성하면 Monitoring 대시보드에 새 차트를 만들어 Method별로 그룹화된 ErrorCount를 모니터링할 수 있습니다.

ErrorCount 대시보드

알림

Cloud Monitoring 및 기타 도구에서 측정항목에 의해 알림이 트리거되는 시점과 방법을 지정하는 알림 정책을 구성할 수 있습니다. Cloud Monitoring 알림 설정에 대한 안내는 알림 가이드를 참조하세요.