코로나: 분석은 했지만, 안전은 없었다 - STPA

by 현우민

COVID-19 팬데믹은 단순한 감염병 위기가 아니었다. 그것은 국가, 조직, 전문가, 그리고 시민이 하나의 거대한 시스템 안에서 어떻게 상호작용하는지를 전 세계가 동시에 시험받은 사건이었다. 팬데믹 기간 동안 각국 정부와 보건 기관은 이전과 비교할 수 없는 수준의 분석과 의사결정을 수행했다. 수많은 위원회와 태스크포스가 구성되었고, 시나리오 분석과 위험 평가 문서가 쏟아졌다. 그중 일부 연구와 보고서는 STPA(System-Theoretic Process Analysis)를 적용해 국가 차원의 팬데믹 대응을 분석했으며, 정부, 보건 당국, 의료 시스템, 시민 간 상호작용 속에서 230개가 넘는 Unsafe Control Action이 식별되었다고 보고했다. 표면적으로 보면 이는 시스템 안전 분석의 성공처럼 보인다. 시스템은 정의되었고, 통제 구조는 그려졌으며, 위험은 언어로 설명되었다. 그러나 현실은 전혀 다른 방향으로 흘러갔다. 공중 보건 지침은 반복적으로 바뀌었고, 정책 간 충돌은 시민의 신뢰를 빠르게 소진시켰다. 마스크, 봉쇄, 백신 정책은 과학적 통제가 아니라 정치적 메시지로 인식되기 시작했고, 시민들은 점점 공중 보건 통제 자체를 ‘꺼버리는(switching off)’ 상태로 진입했다. 이 사고는 단 한 번의 폭발이나 붕괴로 나타나지 않았다. 신뢰의 붕괴, 통제의 무력화, 사회적 피로가 누적되며 서서히 진행된 전형적인 시스템 실패였다. 여기서 한 가지 불편한 질문이 남는다. COVID-19 대응에서 STPA는 정말 실패한 것일까? 아니면 우리는 STPA를 수행했다고 믿었을 뿐, 실제로는 시스템 안전을 설계하지 않았던 것은 아닐까. 이 글은 바로 그 질문에서 출발한다.


STPA는 뭘까? (STPA는 위험을 “찾는 기법”이 아니다)

STPA는 흔히 사고를 유발할 수 있는 Unsafe Control Action을 식별하는 분석 기법으로 소개되지만, 이 설명은 STPA의 절반만을 담고 있을 뿐이며 오히려 위험한 오해를 낳기 쉽다. STPA의 핵심은 위험을 ‘찾는 것’이 아니라, 사고를 가능하게 만드는 통제 구조 자체를 이해하고 재설계하는 데 있다. STPA는 사고를 부품의 고장이나 개인의 실수로 보지 않는다. 대신 사고는 언제나 통제가 기대한 방식으로 작동하지 않았을 때 발생한다고 전제하며, 여기서 말하는 통제에는 기술적 제어뿐 아니라 인간의 판단, 조직의 규칙, 의사결정 구조, 사회적·문화적 규범까지 모두 포함된다. 따라서 STPA는 “무엇이 고장 났는가?”를 묻지 않고, “누가 무엇을 통제하고 있었는가, 그 통제는 언제 어떤 정보에 기반해 내려졌는가, 그리고 왜 그 순간에 실패했는가?”를 묻는다. 이 관점에서 안전은 특정 시점에 달성되는 상태가 아니라, 지속적으로 유지되어야 하는 제약(constraint)이며, STPA의 목적은 위험 목록을 만드는 것이 아니라 그 제약이 실제로 작동하도록 통제 구조와 의사결정 논리를 조정하는 데 있다. 즉, STPA는 개별 행위(action)를 평가하는 도구가 아니라 통제 구조(control structure)와 결정 논리(decision logic)를 분석하는 사고 체계다. 이 차이를 이해하지 못하면 STPA는 곧바로 보고서용 분석이나 사후 설명 도구로 전락하고 만다. 그리고 바로 이 지점이 COVID-19 대응에서 결정적으로 놓쳐진 부분이었다.


Note 정리.


STPA의 본질은 세 가지다

사고는 부품 고장이 아니라 통제 실패에서 발생한다

시스템은 기술 + 인간 + 조직 + 문화 + 규범의 결합체다

안전은 상태(state)가 아니라, 지속적으로 유지되어야 하는 제약(constraint)이다



왜 사고를 막지 못했는가

COVID-19 대응에서 STPA가 실패했다고 말하는 이유는 Unsafe Control Action을 충분히 식별하지 못했기 때문이 아니다. 오히려 그 반대다. 230개라는 숫자는 분석의 정교함처럼 보이지만, 시스템 안전 엔지니어의 관점에서 보면 이는 통제 구조가 지나치게 추상적으로 정의되었고, 무엇이 핵심 통제 실패인지에 대한 우선순위가 설정되지 않았다는 경고 신호에 가깝다. 실제로 팬데믹 대응 과정에서 드러난 문제들은 새로운 발견이 아니었다. 중앙정부와 지방정부의 지침은 충돌했고, 보건 당국의 권고는 정치적 판단에 의해 쉽게 예외가 만들어졌으며, 과학적 불확실성은 인정되지 않은 채 확정적인 메시지만 반복되었다. 정책은 바뀌었지만 왜 바뀌었는지는 설명되지 않았고, 시민은 다음 조치를 예측할 수 없었다. 이 모든 상황은 STPA 관점에서 명백한 Unsafe Control Action이었고, 분석 단계에서 이미 식별되었다. 그러나 문제는 그 이후였다. 이 UCA들은 통제 구조의 재설계로 이어지지 않았고, 의사결정자의 정보 가용성이나 통제 실패 시 완화 메커니즘 역시 설계되지 않았다. STPA는 시스템 정의와 UCA 식별 단계에서 멈췄을 뿐, 시스템을 실제로 바꾸는 단계로 나아가지 못했다. 그 결과 가장 치명적인 통제 실패가 발생했다. 시민이 통제 시스템에서 이탈한 것이다. 이는 단순한 비협조가 아니라 전형적인 통제 루프 붕괴였다. 정부와 보건 기관은 명령을 내렸지만, 감염률이나 순응도 같은 피드백은 의사결정에 제대로 반영되지 않았고, 반영되었더라도 시민에게 설명되지 않았다. 결국 시민은 “어차피 계속 바뀐다”, “지켜도 소용없다”, “이건 과학이 아니라 정치다”라고 판단했고, 그 순간 통제는 제약이 아니라 소음이 되었다. STPA가 경고했던 실패는 이미 분석 문서에 존재했지만, 통제가 설계되지 않았기 때문에 현실에서 그대로 재현되었다. 이는 STPA의 한계가 아니라, STPA를 시스템 설계 도구가 아닌 사후 설명용 분석으로 격하시킨 우리의 실패였다.


정리:


1. 문제는 UCA의 수가 아니었다

230개의 Unsafe Control Action이 식별되었다는 사실은 인상적이다. 그러나 이 숫자는 오히려 경고 신호다. 이유는 너무 많은 UCA는 우선순위가 없다는 뜻이며, 통제 구조가 추상적이라는 증거이기 때문이다.


실제 COVID-19 대응에서 식별된 대표적인 UCA 유형을 보자.

정부 A는 봉쇄를 명령하지만, 정부 B는 이동을 허용한다

보건 당국은 마스크 착용을 권고하지만, 정치 지도자는 예외를 만든다

과학적 불확실성을 인정하지 않은 채 “확정적 메시지”를 반복한다

정책 변경의 조건이 명시되지 않아 시민이 예측할 수 없다


이 모든 것은 이미 “알려진 문제”였다. 그러나 문제는 이것이다. 이 UCA들이 실제로 통제 구조를 바꿨는가?

대답은 “아니오”다.

2. STPA는 분석되었지만, 통제는 설계되지 않았다

COVID-19 대응에서 STPA는 대부분 다음 단계에서 멈췄다.

시스템 정의

고수준 사고 및 손실 정의

Unsafe Control Action 식별

그러나 가장 중요한 단계는 제대로 수행되지 않았다.

Control Structure의 재설계

Decision Maker의 정보 가용성 개선

통제 실패 시 시스템이 멈추거나 완화되는 메커니즘 설계

즉, STPA는 보고서로 존재했을 뿐, 시스템 설계 도구로 사용되지 않았다. 이건 STPA 실패가 아니라, STPA를 “사후 분석 도구”로 격하시킨 실패다.

3. “Switching Off” — 가장 치명적인 통제 실패

COVID-19에서 가장 심각한 사고 메커니즘은 바이러스 자체가 아니었다.

시민이 통제 시스템에서 이탈한 것

이 현상은 전형적인 Control Loop 붕괴다.

통제자: 정부 및 보건 기관

제어 대상: 시민 행동

피드백: 감염률, 병상 수, 순응도


문제는 피드백이 의사결정에 반영되지 않았거나,
반영되었더라도 시민에게 설명되지 않았다는 점이다.

결과적으로 시민은 이렇게 판단한다.

“어차피 계속 바뀐다”

“지금 지키나 안 지키나 같다”

“이건 과학이 아니라 정치다”


이 순간, 통제는 더 이상 통제가 아니다. 그저 소음(noise)이 된다. 그렇기에 STPA 관점에서 보면, 이는 명백한 실패다.

통제는 존재했지만, 효과적인 제약으로 작동하지 않았다.


COVID-19에 대해 우리가 했어야 할 STPA 분석

COVID-19 대응에서 진짜 STPA는 훨씬 앞선 지점에서 시작되었어야 했다. 사고를 단순히 사망자 수나 확진자 증가로 정의하는 순간, 문제는 의료 영역으로 축소되고 시스템 실패의 본질은 보이지 않게 된다. 시스템 관점에서의 진짜 손실은 공중 보건에 대한 신뢰 붕괴, 의료 시스템의 만성적 피로, 그리고 정책 순응도의 구조적 하락이었다. 이 손실을 전제로 통제 구조를 다시 바라보면, 정치 지도자, 보건 당국, 지방정부, 의료 기관, 미디어, 시민은 서로 분리된 주체가 아니라 하나의 통제 루프 안에서 상호 의존하는 구성 요소였지만, 실제 대응에서는 권한과 책임이 중첩되고 의사결정 논리는 명확히 드러나지 않았다. STPA 관점에서 이는 이미 위험한 설계였다. 따라서 우리는 230개의 Unsafe Control Action을 나열하는 대신, 정책 변경 조건의 부재, 예외 규칙의 남용, 과학적 불확실성의 은폐, 시민에게 공유되지 않은 피드백 지표, 그리고 통제 실패 시 멈춤 조건의 부재라는 소수의 핵심 통제 실패에 집중했어야 한다. STPA가 제대로 적용되었다면 정책은 일회성 결정이 아니라 상태 머신처럼 설계되었을 것이며, 변경 조건은 사전에 수치와 함께 공개되고, 예외는 정치적 판단이 아니라 통제 논리로 관리되었을 것이다. 무엇보다 시민은 단순한 통제 대상이 아니라 통제 루프의 일부로 포함되었어야 한다. 이것이 STPA가 요구하는 분석 이후의 설계이며, COVID-19 대응에서 끝내 이루어지지 못한 단계였다.


이제 진짜 STPA를 해보자. “보고서용 STPA”가 아니라, 설계 중심 STPA다.

Step 1: 사고와 손실의 재정의

COVID-19에서 사고는 단순히 “사망자 증가”가 아니다.

공중 보건 신뢰 붕괴

의료 시스템의 만성적 피로

정책 순응도의 구조적 하락

이것이 진짜 손실이다.

Step 2: 통제 구조의 명확화

실제 통제 구조는 이렇게 생겼다.

정치 지도자

보건 당국

지방 정부

의료 기관

미디어

시민

문제는 통제 권한과 책임이 겹쳐 있었다는 것이다. STPA 관점에서 이는 이미 위험한 설계다.

Step 3: 핵심 UCA의 재정렬

우리는 230개를 나열할 필요가 없었다.
다음 5개만 제대로 통제했어도 결과는 달라졌을 것이다.

정책 변경 조건이 명시되지 않음

예외 규칙이 통제 논리를 붕괴시킴

과학적 불확실성이 숨겨짐

피드백 지표가 시민에게 공유되지 않음

통제 실패 시 멈춤 조건이 없음

Step 4: 우리가 설계했어야 할 변화

정책은 “결정”이 아니라 상태 머신(state machine)으로 설계되었어야 한다

변경 조건은 수치와 함께 사전에 공개되었어야 한다

예외는 정치가 아니라 통제 논리로 관리되었어야 한다

시민은 제어 대상이 아니라 통제 루프의 일부로 포함되었어야 한다

이게 STPA의 진짜 목적이다.




결론

COVID-19 대응에서 STPA는 분명히 사용되었다. 그러나 작동하지는 않았다. 그 이유는 STPA의 이론이나 기법이 미흡했기 때문이 아니라,

우리가 그것을 위험을 설명하는 언어로만 소비하고 시스템을 바꾸는 도구로 사용하지 않았기 때문이다.

시스템 안전 엔지니어의 관점에서 STPA는 사고를 예측해주는 분석 기법이 아니다. 오히려 “이 통제를 실제로 설계할 것인가”, “이 책임과 권한을 지금 다시 그릴 준비가 되어 있는가”를 묻는 불편한 질문이다. STPA는 문제를 깔끔하게 정리해주는 대신, 기존의 의사결정 구조와 권력 배분을 흔들며 설계자의 결단을 요구한다.

우리의 대답은 침묵이었다. 그리고 시스템은, 언제나 그렇듯, 침묵을 사고로 번역했다.

따라서 COVID-19는 STPA의 실패 사례가 아니다. 그것은 시스템 안전을 형식과 보고서로만 소비하고, 통제를 실제로 설계할 책임을 회피한 사회의 실패 사례다. 다음 위기에서 필요한 것은 더 정교한 분석이나 더 많은 UCA 목록이 아니다. 분석 이후에도 시스템을 바꾸겠다는 의지, 그리고 통제를 설계할 용기다. STPA는 이미 그 역할을 할 준비가 되어 있다. 문제는 언제나 기술이 아니라, 그것을 사용하는 사람과 조직이다.



화요일 연재
이전 11화이론과 현실의 경계에서 안전을 다시 묻다 - STPA