Ⅲ-10. 성능 데이터 기반 컴퓨터 시스템 장애 위험의 정량적 평가
컴퓨터 시스템의 장애 위험을 분석하기 위해서는 장애가 발생한 이후의 원인을 조사하는 것뿐만 아니라 장애 이전에 시스템의 성능이 어떻게 변화했는지를 함께 확인해야 한다.
CPU, 메모리, 저장장치, 네트워크, 응답시간, 오류율 등의 성능 데이터를 장기간 수집하면 정상 상태와 장애 발생 전 상태의 차이를 비교할 수 있다.
이러한 데이터를 이용하면 “시스템이 불안정해 보인다”와 같은 감각적인 판단을 넘어,
얼마나 변했는가 → 언제부터 변했는가 → 얼마나 지속되었는가 → 실제 장애와 연결되었는가
를 수치와 시간축으로 확인할 수 있다.
다만 정량적 평가라고 해서 모든 장애를 하나의 숫자로 표현할 수 있는 것은 아니다.
정량화의 목적은 장애를 단순한 확률값 하나로 만드는 것이 아니라 성능 변화와 실제 장애 사이의 관계를 측정하고 비교할 수 있는 근거를 만드는 것이다.
1. 성능 데이터 기반 장애 분석의 의미
성능 데이터는 시스템이 시간에 따라 어떻게 변화했는지를 보여준다.
예를 들어 장애가 발생한 순간 CPU 사용률이 90%였다는 사실만 확인하는 것보다 장애 발생 전 수십 분 또는 수시간 동안 CPU 사용률이 어떻게 변화했는지를 확인하는 것이 더 유용할 수 있다.
다음과 같은 변화가 함께 나타났는지를 확인할 수 있기 때문이다.
CPU 증가 → 처리 대기 증가 → 응답시간 증가 → 오류 증가 → 장애
물론 모든 시스템에서 이러한 순서가 동일하게 나타나는 것은 아니다.
따라서 실제 데이터를 통해 변화의 순서와 반복성을 확인해야 한다.
2. 정량적 평가에 사용할 주요 성능 데이터
장애 위험 분석에 활용할 수 있는 주요 데이터는 다음과 같다.
- CPU 사용률
- 코어별 CPU 사용률
- 프로세스별 CPU 사용량
- 메모리 사용량과 가용량
- 저장장치 I/O
- I/O 응답시간
- Queue Depth
- 네트워크 지연시간
- 패킷 손실
- 시스템 응답시간
- 처리량
- 오류율
- 타임아웃
- 프로세스 및 스레드 상태
- 데이터베이스 처리시간
각 지표는 서로 다른 시스템 상태를 보여준다.
따라서 하나의 지표만으로 장애 위험을 계산하기보다 여러 지표를 같은 시간축에서 비교하는 것이 중요하다.
3. 정상 상태 기준선을 먼저 구축한다
정량적 평가를 시작하려면 정상 상태를 정의해야 한다.
정상 운영기간의 데이터를 충분히 확보하고 다음과 같은 조건별 성능 특성을 확인할 필요가 있다.
- 시간대
- 요일
- 사용자 수
- 요청량
- 처리량
- 정기 작업
- 서비스 종류
예를 들어 업무시간의 CPU 사용률 60%와 새벽 시간의 CPU 사용률 60%는 같은 숫자라도 의미가 다를 수 있다.
따라서 단순 평균값 하나를 정상 기준으로 사용하는 것보다 업무 조건에 따른 정상 범위를 파악하는 것이 중요하다.
이렇게 구축된 정상 기준선이 이후 이상 상태를 정량적으로 비교하는 출발점이 된다.
4. 성능 변화량과 변화율을 계산한다
성능 지표가 정상 상태에서 얼마나 달라졌는지를 수치로 표현할 수 있다.
기준값을 X₀, 현재값을 Xₜ라고 하면 일반적인 변화율은 다음과 같이 계산할 수 있다.
변화율 = (현재값 – 기준값) ÷ 기준값 × 100
예를 들어 정상 응답시간이 200ms이고 현재 응답시간이 300ms라면,
(300 – 200) ÷ 200 × 100 = 50%
이므로 기준 대비 응답시간이 50% 증가한 것이다.
이 수치는 성능 변화의 크기를 나타내는 것이며 장애 발생 확률을 의미하지 않는다.
이 둘을 구분하는 것이 정량적 분석에서 매우 중요하다.
5. 변화속도를 함께 분석해야 한다
현재값과 변화율만으로는 충분하지 않은 경우가 있다.
예를 들어 메모리 사용량이 60%에서 70%로 증가했다고 하자.
한 달에 걸쳐 천천히 증가했다면 시스템의 자연스러운 성장일 수도 있다.
반면 같은 변화가 10분 동안 발생했다면 비정상적인 프로세스나 급격한 작업량 증가를 조사할 필요가 있다.
따라서 성능 분석에서는 다음을 함께 확인하는 것이 좋다.
- 현재값
- 변화량
- 변화율
- 변화속도
- 지속시간
- 회복 여부
같은 변화량이라도 발생하는 시간이 다르면 시스템 위험에 대한 의미가 달라질 수 있다.
6. 임계값 초과 데이터를 정량화한다
정상 상태에서 설정한 성능 임계값을 초과한 횟수와 지속시간을 기록하면 이상 상태의 반복성을 확인할 수 있다.
예를 들어 CPU 사용률이 임계값을 초과한 시간이 다음과 같이 기록되었다고 하자.
| 기간 | 초과 횟수 | 평균 지속시간 |
|---|---|---|
| 1주차 | 2회 | 3분 |
| 2주차 | 5회 | 5분 |
| 3주차 | 11회 | 9분 |
| 4주차 | 18회 | 14분 |
이 자료에서는 단순히 “CPU 사용률이 높아졌다”는 것보다 임계값 초과의 빈도와 지속시간이 함께 증가하고 있다는 변화를 확인할 수 있다.
다만 이러한 변화가 실제 장애 위험 증가를 의미하는지는 응답시간과 장애 이력을 추가로 비교해야 한다.
7. 장애 발생률과 성능 변화율을 구분한다
정량적 분석에서 가장 중요한 구분 중 하나다.
예를 들어 응답시간이 정상보다 50% 증가했다면 이것은 성능 변화율이다.
반면 특정 조건에서 1,000개의 관측 구간 중 30개에서 장애가 발생했다면 관측된 장애 발생률은 3%다.
두 수치는 서로 다른 의미를 갖는다.
- 성능 변화율 → 시스템 상태가 얼마나 변했는가
- 장애 발생률 → 특정 조건에서 실제 장애가 얼마나 발생했는가
- 변화속도 → 상태가 얼마나 빠르게 변했는가
- 임계값 초과율 → 전체 관측 중 기준을 벗어난 구간이 얼마나 되는가
따라서 정량적 평가에서는 서로 다른 지표를 하나의 “위험도”로 단순 합산하기 전에 각각의 의미를 먼저 구분해야 한다.
8. 조건별 장애 발생률을 비교한다
평균값 하나만 보는 것보다 여러 성능 구간을 나누어 실제 장애 발생률을 비교하면 더 구체적인 분석이 가능하다.
예를 들어 CPU 사용률에 따라 관측 구간을 나누어 다음과 같이 비교할 수 있다.
| CPU 사용률 | 관측 구간 | 장애 구간 | 관측 장애 발생률 |
|---|---|---|---|
| 0~50% | 5,000 | 5 | 0.1% |
| 50~70% | 4,000 | 8 | 0.2% |
| 70~85% | 2,000 | 20 | 1.0% |
| 85% 이상 | 500 | 25 | 5.0% |
이런 자료에서는 높은 CPU 사용 구간에서 장애 발생률이 증가하는 패턴을 관찰할 수 있다.
그러나 이것만으로 CPU가 장애의 원인이라고 확정할 수는 없다.
높은 CPU 사용률이 많은 요청량이나 다른 병목의 결과일 가능성도 있기 때문이다.
따라서 조건별 발생률은 위험 구간을 찾는 자료로 활용하고 원인은 별도로 검증해야 한다.
9. 여러 성능 지표를 결합해서 분석한다
실제 장애는 하나의 지표만 변화하면서 발생하지 않을 수 있다.
예를 들어 다음과 같은 변화가 동시에 나타날 수 있다.
- CPU 사용률 증가
- 메모리 가용량 감소
- 저장장치 응답시간 증가
- 네트워크 지연 증가
- 애플리케이션 응답시간 증가
- 오류율 증가
이때 각 지표를 따로 보면 어느 하나도 결정적인 증거가 아닐 수 있다.
하지만 같은 시간대에 여러 지표가 일정한 순서로 변한다면 장애 직전의 시스템 상태를 보다 구체적으로 설명할 수 있다.
따라서 정량적 분석에서는 지표의 개수보다 시간적 관계와 실제 서비스 영향이 중요하다.
10. 시간적 선후관계를 분석한다
장애 위험을 정량적으로 평가할 때는 단순한 동시 발생보다 어떤 변화가 먼저 나타났는지가 중요하다.
예를 들어,
I/O 응답시간 증가 → 애플리케이션 응답시간 증가 → 타임아웃 증가 → 장애
가 여러 장애 사례에서 반복된다면 I/O 문제가 장애 발생 과정의 중요한 요인이었을 가능성을 조사할 수 있다.
반대로 장애가 먼저 발생한 후 CPU 사용률이나 응답시간이 변화했다면 해당 성능 변화는 장애의 결과일 수 있다.
따라서 상관관계가 높다는 이유만으로 원인과 결과를 확정해서는 안 된다.
11. 장애 발생 전후의 데이터를 비교한다
장애가 발생한 시점을 기준으로 전후의 성능 데이터를 나누어 비교하면 변화의 방향을 확인하기 쉽다.
예를 들어 장애 발생 60분 전부터 5분 간격으로 데이터를 확보하면 다음과 같은 변화를 확인할 수 있다.
| 시점 | CPU | I/O 지연 | 응답시간 | 오류 |
|---|---|---|---|---|
| -60분 | 40% | 5ms | 250ms | 정상 |
| -45분 | 45% | 7ms | 280ms | 정상 |
| -30분 | 52% | 12ms | 350ms | 정상 |
| -15분 | 65% | 25ms | 700ms | 증가 |
| -5분 | 72% | 45ms | 1,400ms | 증가 |
| 장애 | 75% | 60ms | Timeout | 다수 |
이 자료에서는 장애 직전으로 갈수록 여러 지표가 동시에 변하는 모습을 확인할 수 있다.
이처럼 장애 직전의 데이터를 정량적으로 비교하면 단순한 장애 시점의 스냅샷보다 훨씬 많은 정보를 얻을 수 있다.
12. 장애 전조 패턴을 반복 검증한다
과거 장애 데이터를 분석하면 특정 장애 유형에서 반복되는 성능 패턴을 찾을 수 있다.
예를 들어 세 번의 장애에서 모두 다음과 같은 순서가 나타났다고 하자.
메모리 가용량 감소 → I/O 증가 → 응답시간 증가 → 타임아웃
이 경우 이 패턴을 향후 조기탐지의 후보로 활용할 수 있다.
하지만 세 번 발생했다는 사실만으로 모든 상황에 적용되는 규칙이라고 판단해서는 안 된다.
정상 상태에서도 동일한 패턴이 얼마나 자주 발생하는지 비교하고, 이후 새로운 장애 사례에서도 반복되는지 검증해야 한다.
즉 발견 → 검증 → 재검증의 과정이 필요하다.
13. 정량적 평가에서 표본과 관측기간이 중요한 이유
장애 발생률이나 특정 조건의 위험을 계산할 때는 데이터의 양과 관측기간을 함께 고려해야 한다.
예를 들어 10개의 관측 중 2개의 장애가 발생했다면 관측 비율은 20%다.
하지만 관측 데이터가 너무 적기 때문에 이 결과만으로 해당 조건의 장애 위험이 실제로 20%라고 판단하기는 어렵다.
반면 수개월 또는 수년 동안 충분한 관측자료를 확보하고 동일한 조건에서 반복적으로 높은 장애 발생률이 나타난다면 분석의 신뢰도가 높아질 수 있다.
따라서 정량적 평가에서는 계산된 숫자 자체보다 그 숫자가 어떤 데이터에서 만들어졌는지를 함께 확인해야 한다.
14. 성능 데이터와 장애 이력을 같은 시간축으로 연결한다
정량적 분석에서 실제 장애 이력은 매우 중요한 자료다.
성능 데이터를 장애 발생 시간과 연결하면 다음을 구분할 수 있다.
- 장애 이전에 변화한 지표
- 장애 직전에 급격히 변한 지표
- 장애와 동시에 변한 지표
- 장애 이후에 변화한 지표
이 구분은 원인과 결과를 판단하는 데 중요하다.
예를 들어 장애 이후 CPU 사용률이 급격하게 증가했다면 CPU 증가가 장애의 원인이 아니라 장애 처리 과정에서 발생한 결과일 수도 있다.
따라서 장애 시점에 가까운 데이터라는 이유만으로 원인이라고 판단해서는 안 된다.
15. 정량적 평가의 결과를 실제 판단으로 연결한다
정량적 분석의 목적은 숫자를 많이 만드는 것이 아니다.
분석 결과를 실제 운영 판단으로 연결해야 한다.
예를 들어 다음과 같이 판단할 수 있다.
관측 결과
- 특정 시간대 CPU 사용률 지속 증가
- 응답시간 증가
- 타임아웃 증가
- 과거 장애에서도 동일한 패턴 반복
↓
분석 판단
해당 시간대의 CPU 포화 여부와 요청량 증가 여부를 우선 조사
↓
예방조치
업무 분산, 처리량 조정, 서버 증설 또는 애플리케이션 처리 구조 검토
↓
재검증
조치 이후 동일 조건에서 성능 변화와 장애 발생률이 감소했는지 확인
이렇게 해야 정량적 분석이 실제 장애 예방으로 이어진다.
16. 정량적 장애 위험 평가의 실제 절차
실제 시스템에서는 다음과 같은 순서로 접근할 수 있다.
1단계 — 분석 대상 정의
어떤 서비스와 장애 유형을 분석할 것인지 명확하게 정한다.
2단계 — 성능 지표 선정
CPU, 메모리, I/O, 네트워크, 응답시간, 오류율 등 필요한 지표를 선정한다.
3단계 — 정상 기준선 구축
시간대, 업무량, 사용자 수 등을 고려하여 정상 상태의 범위를 확보한다.
4단계 — 성능 변화 측정
변화량, 변화율, 변화속도, 지속시간을 계산한다.
5단계 — 임계값 초과 분석
초과 횟수와 지속시간을 확인한다.
6단계 — 장애 이력 연결
성능 데이터를 실제 장애 발생 시간과 연결한다.
7단계 — 조건별 비교
성능 구간별 장애 발생률을 비교한다.
8단계 — 선후관계 분석
장애 이전과 이후의 변화를 비교하여 원인 후보와 결과를 구분한다.
9단계 — 반복성 검증
여러 장애 사례에서 동일한 패턴이 반복되는지 확인한다.
10단계 — 새로운 데이터로 재검증
분석 결과가 이후 장애에서도 유효한지 지속적으로 확인한다.
17. 정량적 평가 결과의 활용
분석 결과는 단순한 장애 원인 조사에만 사용할 필요가 없다.
다음과 같은 분야에도 활용할 수 있다.
- 시스템 증설 계획
- 서버 용량 계획
- 저장장치 교체 시점 검토
- 네트워크 용량 계획
- 성능 임계값 조정
- 장애 조기탐지
- 예방적 유지관리
- 서비스 수준 관리
- 장애 대응 우선순위 결정
특히 성능 데이터와 장애 이력을 장기간 축적하면 현재 장애를 설명하는 것에서 미래 장애 가능성을 사전에 확인하는 방향으로 분석 범위를 확대할 수 있다.
18. 정량적 분석의 한계
성능 데이터가 많다고 해서 장애 원인을 자동으로 확정할 수 있는 것은 아니다.
예를 들어 응답시간 증가와 장애가 함께 발생했다고 하더라도 응답시간 증가가 장애의 원인인지 장애의 결과인지는 별도의 검증이 필요하다.
또한 과거 데이터에서 발견된 패턴이 향후에도 동일하게 반복된다고 보장할 수 없다.
다음과 같은 외부 요인도 영향을 줄 수 있다.
- 시스템 구성 변경
- 소프트웨어 업데이트
- 사용자 수 변화
- 업무량 변화
- 네트워크 구조 변경
- 하드웨어 교체
- 데이터 증가
따라서 정량적 결과는 로그, 구성정보, 변경 이력, 하드웨어 상태 등의 자료와 함께 검토해야 한다.
19. 성능 데이터 분석을 하나의 장애 위험 모델로 연결한다
앞에서 살펴본 CPU, 메모리, 저장장치, 네트워크, 응답시간, 자원 과부하, 성능 임계값은 각각 독립적인 지표로 사용할 수 있다.
그러나 실제 장애 분석에서는 이들을 하나의 시간 흐름으로 연결하는 것이 중요하다.
예를 들어,
메모리 가용량 감소
→ 저장장치 I/O 증가
→ I/O 응답시간 증가
→ 애플리케이션 응답시간 증가
→ 타임아웃 증가
→ 서비스 장애
와 같은 변화가 실제 장애 사례에서 반복되는지를 확인할 수 있다.
이렇게 여러 성능 데이터를 시간축으로 연결하면 단순히 “CPU가 높았다”, “I/O가 느렸다”는 수준을 넘어 장애가 발생하기 전 시스템이 어떤 방향으로 변화했는지를 분석할 수 있다.
이것이 성능 데이터 기반 정량적 평가가 갖는 가장 중요한 가치다.
20. 최종 판단 — 정량화의 목적은 장애를 숫자 하나로 만드는 것이 아니다
컴퓨터 시스템의 장애 위험을 정량적으로 평가한다는 것은 장애 가능성을 단순히 하나의 숫자로 표현하는 것이 아니다.
중요한 것은 정상 상태를 기준으로 시스템이 얼마나 변했는지, 그 변화가 얼마나 빠르게 진행되었는지, 얼마나 지속되었는지, 그리고 그 변화가 실제 장애와 반복적으로 연결되었는지를 측정하는 것이다.
따라서 정량적 평가는 다음의 흐름으로 이해할 수 있다.
정상 기준선 구축 → 성능 변화 측정 → 임계값 초과 분석 → 장애 이력 연결 → 조건별 비교 → 시간적 선후관계 확인 → 반복 패턴 검증 → 예방조치 → 재검증
여기서 가장 중요한 것은 계산 결과 자체가 아니라 그 결과가 실제 시스템의 장애 위험을 얼마나 정확하게 설명하고 예측하는가이다.
21. 핵심정리
첫째, 성능 데이터의 정량화는 현재 상태를 숫자로 표현하는 데서 끝나지 않는다.
변화량, 변화율, 변화속도, 지속시간, 반복성, 장애 발생률을 시간축으로 연결해야 의미가 생긴다.
둘째, 성능 변화와 장애 발생률은 서로 다른 개념이다.
성능이 50% 변했다고 장애 확률이 50%가 되는 것이 아니며, 특정 조건의 장애 발생률 역시 해당 데이터와 환경 안에서 해석해야 한다.
가장 중요한 것은 숫자를 많이 만드는 것이 아니라, 정상 상태에서 벗어난 변화가 실제 장애 전에 반복적으로 나타나는지를 검증하고 그 결과를 다시 예방조치와 재검증으로 연결하는 것이다.




댓글 0
첫 댓글을 남겨보세요.