연습 - 상태, 메트릭 및 임계값 정의

완료됨

이 연습에서는 이전에 만든 상태 모델 구조를 계속 진행합니다. 작업은 예제 애플리케이션에 대한 개별 구성 요소의 상태를 정량화하는 것입니다.

상태 모델 구조에서 먼저 사용자 흐름을 사용하여 맨 위에서 시작하는 계층을 평가하고 하위 계층으로 진행합니다.

사용자 흐름 상태

지금까지 카탈로그 항목 나열주석 추가라는 두 가지 사용자 흐름을 확인했습니다. 각 흐름의 상태를 확인하려면 다음과 같은 질문을 합니다.

  • 사용자 흐름은 언제 정상으로 간주되나요?
  • 성능이 저하된 상태에서 작동할 수 있나요?

구현 및 기능 요구 사항에 따라 사용자 흐름에 참여하는 애플리케이션 구성 요소를 식별합니다. 구성 요소는 아키텍처 구성 요소 예제에 설명되어 있습니다.

사용자 흐름 구성 요소
카탈로그 항목 나열 프런트 엔드 내부 웹 애플리케이션, 카탈로그 API
주석 추가 프런트 엔드 내부 웹 애플리케이션, 카탈로그 API, 백그라운드 프로세서

이러한 구성 요소 중 하나라도 비정상이 되면 사용자 흐름이 비정상 상태가 될 것으로 예상됩니다.

참고

일부 애플리케이션은 특수 성능 저하 모드에서 작동할 수 있습니다. 예를 들어 Contoso Shoes가 로컬 브라우저 캐싱을 구현하는 경우 웹 애플리케이션을 사용하는 직원은 주석을 작성할 수 있지만 주석을 보낼 수 없으며 카탈로그 API가 정상 상태가 될 때까지 고객 보기가 업데이트되지 않으므로 브라우저에서 지속적으로 확인할 수 있습니다.

애플리케이션 구성 요소 상태

구성 요소의 상태에 영향을 주는 메트릭을 결정합니다. 이 단계에서는 구성 요소의 기능을 알아야 합니다. 다음과 같은 질문을 합니다.

  • 좋은 사용자 환경을 유지하기 위해 API에서 허용되는 처리 시간은 얼마인가요?
  • 예상되는 오류가 있나요? "정상" 오류 비율은 무엇인가요?
  • "정상" 처리 시간은 얼마인가요? 처리 시간이 정상보다 높은 경우 무엇을 의미하나요?
  • Azure Cosmos DB에 연결할 수 없는 경우 쓰기 작업은 어떻게 되나요?

이러한 질문을 통해 주요 메트릭에 대한 구체적이고 측정 가능한 임계값을 확인할 수 있습니다. 예를 들어 카탈로그 API 구성 요소에 대해 이러한 임계값을 고려할 수 있습니다.

메트릭 및 임계값 성능 상태
응답 시간 < 150ms
실패한 요청 수 < 10
정상
응답 시간 < 300ms
실패한 요청 수 < 50
성능 저하됨
응답 시간 > 300ms
실패한 요청 수 > 50
비정상

Application Insights와 같은 애플리케이션 모니터링 솔루션에서 값을 가져올 수 있습니다.

Azure 리소스 상태

Azure 서비스 상태는 특정 리소스를 기반으로 합니다. 예를 들어 Azure Cosmos DB는 DTU 사용률을 보고하고 Azure App Services는 CPU 사용률에 대한 정보를 제공합니다.

리소스 종류별 메트릭에 대한 자세한 내용은 Azure Monitor에서 지원되는 메트릭을 참조하세요.

상태 및 임계값

애플리케이션의 모든 계층을 평가한 후에는 구성 요소 목록과 이 예제와 유사한 상태 정의가 있어야 합니다.

구성 요소 표시기/메트릭 정상 성능 저하됨 비정상
카탈로그 항목 나열 사용자 흐름 기본 상태 프런트 엔드 정상 및 카탈로그 API 정상
주석 추가 사용자 흐름 기본 상태 프런트 엔드 정상, 카탈로그 API 정상 및 백그라운드 프로세서 정상
프런트 엔드 웹 애플리케이션 20x가 아닌 HTTP 응답 수/분 0 1-10 > 10
Catalog API 예외 수/초 < 10 10-50 > 10
평균 처리 시간(ms) < 150 150-500 > 500
백그라운드 프로세서 큐의 평균 시간(ms) < 200 200-1,000 > 1,000
평균 처리 시간(ms) < 100 100-200 > 200
오류 수 < 3 3-10 > 10
Azure Cosmos DB DTU 사용률 < 70% 70%-90% > 90%
Azure Key Vault 오류 수 < 3 3-10 > 10
Azure Event Hubs 백로그 길이 처리(발신/수신 메시지) < 3 3-20 > 20
Azure Blob Storage 평균 대기 시간(밀리초) < 100 100-200 > 200

이 예제에서는 프런트 엔드 웹 애플리케이션 및 카탈로그 API에 대한 오류 허용 오차가 다릅니다. 이러한 차이는 애플리케이션에 대한 기술적 이해와 관련이 있습니다. 모든 프런트 엔드 오류는 클라이언트 쪽에서 처리되어야 하므로 임계값이 0입니다. 그러나 API 계층에서는 사용자로 인한 오류를 설명하기 위해 10개의 예외가 허용됩니다. 예를 들어 404 - 찾을 수 없음과 같은 오류가 반드시 상태 문제를 나타내는 것은 아닙니다.