부끄러운 고백부터 하겠습니다. 저는 한동안 "우리 시스템은 잘 굴러간다"는 말을 안전하다는 뜻으로 들었습니다. 출결도 자동으로 찍히고, 결제도 안 밀리고, 상담 예약도 빠짐없이 들어오니까요. 석 달, 여섯 달, 별 사고가 없으면 그게 곧 잘 만든 시스템의 증거라고 믿었습니다. 그러다 한 학원에서 일이 터졌습니다. 형제 할인이 걸린 학생이 동시에 두 반을 옮기면서, 한 명분 수강료가 몇 달째 0원으로 찍히고 있었던 겁니다. 아무도 몰랐습니다. 시스템은 그동안 단 한 번도 "오류"를 내지 않았거든요. 그저 아무도 그 조합을 시험해보지 않았을 뿐이었습니다.
제가 이 책을 펼친 건 그 일 때문이 아니었습니다. 솔직히 학원 얘기를 들으려던 것도 아니었습니다. 요즘 자율주행차나 AI 진단기 같은 걸 두고 "이걸 정말 믿고 도로에 풀어도 되나" 하는 질문이 자꾸 머릿속을 맴돌았거든요. 사람 목숨이 걸린 기계를, 출시 전에 도대체 어떻게 "괜찮다"고 판정하는지 그 절차가 궁금했습니다. 그런데 첫 장을 넘기는 순간 후회했습니다. 페이지마다 수식과 줄리아(Julia)라는 프로그래밍 언어 코드가 박혀 있어서, 비전공자가 펼칠 책이 아니라고 느꼈거든요. 그런데 제가 거기서 발견한 건 코드가 아니라, 제가 그 형제 할인 사고에서 뒤늦게 배운 바로 그 교훈이었습니다.
『Algorithms for Validation』은 스탠퍼드의 마이클 코헨더퍼 연구진이 쓴, 2025년에 나온 무료 공개 교과서입니다. 자율주행차·항공 충돌회피·의료기기처럼 사람 목숨이 걸린 자율 시스템을 "실제로 배포하기 전에 의도대로 작동할지 어떻게 검증하는가"만 떼어내 한 권에 정리했습니다. 그런데 이 책이 흔한 '소프트웨어 테스트' 책과 갈라서는 결정적 지점이 첫 장에 있습니다. 보통의 점검 책이 "이런 항목을 빠짐없이 확인하라"는 점검표를 줍니다. 이 책은 정반대 태도에서 출발합니다. 잘 작동한다는 걸 확인하려 들지 말고, 깨질 자리를 일부러 찾아 나서라는 겁니다. 저자들은 이걸 위조(falsification), 그러니까 '시스템이 실패하는 입력을 사냥하는 일'이라 부르고, 책의 한가운데를 거기에 내줍니다.
저자들이 1장에서 단어 세 개를 가르는 대목에서 저는 한참 멈췄습니다. 우리가 뭉뚱그려 쓰는 '검증', '확인', '테스트'가 사실은 다른 일이라는 겁니다. 테스트는 몇 개의 사례를 골라 돌려보는 것이고, 확인은 명세에 대해 정확하다고 보증하는 것이고, 검증(validation)은 그보다 훨씬 넓은, "실제 환경에서 의도대로 작동하리라는 확신을 쌓는 과정 전체"입니다. 여기서 핵심은 이겁니다. 테스트를 몇 번 통과했다는 건 검증의 아주 작은 한 조각일 뿐, 안전의 증명이 아니라는 것. 제 형제 할인 사고가 바로 이거였습니다. 시스템은 수천 번의 정상 결제를 "통과"했지만, 아무도 그 희귀한 조합 하나를 테스트하지 않았기에, 통과의 기록이 곧 위험의 은폐였던 겁니다.
여기서 저자들이 든 두 장면이 오래 남습니다. 하나는 1996년 아리안5 로켓입니다. 숫자를 담는 그릇의 크기가 안 맞아 넘쳐버리는 사소한 버그 하나로 발사 37초 만에 폭발했고, 3억 7천만 달러가 공중에서 사라졌습니다. 다른 하나는 더 무겁습니다. 2002년 독일 위벌링겐 상공에서 두 비행기가 충돌해 71명이 숨졌습니다. 충돌회피 장치는 "올라가라"고 했는데 관제탑은 "내려가라"고 했고, 조종사가 관제탑을 따른 겁니다. 각각의 부품은 다 정상이었습니다. 다만 그 둘이 동시에 부딪치는 상황을, 아무도 미리 깨뜨려보지 않았던 거죠. 저자들이 못 박는 한 문장이 제 가슴을 쳤습니다. 버그는 늦게 발견될수록 고치는 비용이 수십 배로 불어난다는 것. 사고가 난 뒤에 아는 건, 가장 비싼 방식으로 검증하는 셈입니다.
그래서 원장님께 렌즈 하나를 바꿔 드리고 싶습니다. 우리는 점검을 늘 "잘 되고 있는지 확인하는 일"이라고 정의합니다. 이상 없으면 안심하고, 이상 있으면 고치고. 그런데 이 책의 눈으로 보면, 그건 절반짜리 점검입니다. 진짜 검증은 잘 되는 걸 확인하는 게 아니라, 깨지는 자리를 일부러 사냥하는 일입니다. "우리 환불 규정에 빈틈은 없나"가 아니라 "어떤 학부모가, 어떤 순서로 요청하면 우리 규정이 무너지지?"를 묻는 겁니다. "우리 강사 인수인계는 잘 되나"가 아니라 "에이스 강사가 다음 주에 갑자기 그만두면 어느 반이 가장 먼저 무너지지?"를 묻는 겁니다. 확인하려 들면 안 보이던 구멍이, 깨뜨리려 들면 비로소 보입니다. 잘 굴러간다는 건 아직 깨질 자리를 못 찾았다는 뜻이지, 안전하다는 뜻이 아닙니다.
그런데 이 책이 정말로 제 생각을 바꿔놓은 건 그다음 한 수였습니다. 저자들은 "그렇다고 점검 하나를 기막히게 잘 만들면 되느냐"는 기대를 단호히 거절합니다. 단일 검증으로는 절대 안전을 보장할 수 없다는 겁니다. 여기서 등장하는 비유가 스위스 치즈 모델입니다. 구멍 뚫린 치즈 슬라이스를 떠올려 보십시오. 한 장만 놓으면 구멍으로 그대로 통과됩니다. 그런데 구멍 위치가 다른 슬라이스를 여러 장 겹치면, 한 장의 구멍을 다른 장이 막아줍니다. 어떤 검증 기법도 구멍 뚫린 치즈 한 장입니다. 실패 사냥, 형식 보증, 설명, 실시간 감시 — 이 여러 장을 겹쳐야 비로소 '안전 논증'이 섭니다. 완벽한 한 겹은 없다는 것, 그게 이 책의 가장 어른스러운 고백이었습니다.
이 대목에서 저는 제 다짐 하나가 얼마나 허약했는지 깨달았습니다. 저는 사고가 날 때마다 "다음엔 내가 더 꼼꼼히 챙기겠다"고 다짐하곤 했습니다. 의지로 막겠다는 거였죠. 그런데 의지는 정확히 치즈 한 장입니다. 제가 피곤한 날, 정신없는 신학기, 마음먹은 그 다짐의 구멍으로 사고는 또 빠져나갑니다. 한 겹으로는 못 막습니다. 막는 건 의지가 아니라 겹친 구조입니다. 자동 알림이 한 장, 월말 교차 점검이 한 장, 다른 직원의 확인이 또 한 장. 각각은 다 구멍이 있지만, 구멍의 위치가 다르기에 겹치면 메워집니다. 현장에서 제가 본 진실 하나를 보태면, 사고를 가장 자주 내는 학원은 게으른 학원이 아닙니다. 성실한 원장 한 분이 모든 걸 혼자 머릿속으로 챙기는 학원입니다. 슬라이스가 딱 한 장이거든요.
물론 이 책을 모든 원장님께 권하지는 않겠습니다. 이건 분명히 공학도와 연구자를 위한 396쪽짜리 교과서입니다. 수식과 코드를 건너뛸 각오가 없다면 1장을 넘기기 전에 덮게 됩니다. 그리고 저는 이 책을 끝까지 읽지 못했습니다. 정직하게 말씀드리면 서문과 1장만 제대로 읽었고, 실패 분포를 추정하는 법이며 도달가능 집합을 증명하는 법이며 하는, 이름만 들어도 묵직한 열한 개 장은 아직 목차로만 확인했습니다. 그러니 이 글은 두꺼운 교과서의 문 앞에서 적은 사색 노트에 가깝습니다. 그 점은 숨기지 않겠습니다. 다만 이 책의 매력은, 첫 장만으로도 '점검'이라는 단어를 다시 쓰게 만든다는 데 있었습니다. 11장에서 AI가 자기 판단을 설명하는 법을 다룬다는데, 거기까지 읽으면 또 다른 글이 나올 것 같습니다. 그건 다음으로 미뤄둡니다.
마지막으로 한 가지는 풀어드리고 싶습니다. 깨질 자리를 사냥하라는 말이, 늘 최악만 상상하며 불안에 떨라는 뜻은 아닙니다. 오히려 반대입니다. 막연한 불안은 "혹시 뭔가 잘못되면 어쩌지"에서 멈추지만, 이 책의 위조는 "정확히 어떤 입력에서, 어떻게 깨지는가"를 손에 잡히게 찾아냅니다. 불안을 한 번 구체적인 시나리오로 바꿔 적어두면, 그건 더 이상 두려움이 아니라 점검 항목이 됩니다. 그래서 이 책을 덮고 저는 습관 하나를 바꿨습니다. 새 규정이나 새 시스템을 들일 때, "잘 되나 확인"하기 전에 종이 한 장을 꺼내 "이걸 어떻게 하면 깨뜨릴 수 있을까"를 먼저 적습니다. 거창한 게 아닙니다. 가장 얄미운 학부모, 가장 운 나쁜 타이밍, 가장 희귀한 조합을 상상해 한 줄씩 적어보는 것뿐입니다. 그런데 신기하게도, 깨뜨릴 방법을 먼저 적기 시작하니 시스템이 비로소 단단해졌습니다. 원장님이 흔들리는 건 시스템이 부실해서가 아닙니다. 그 시스템을 아무도 일부러 깨뜨려본 적이 없어서입니다.
| Algorithms for Validation |
|---|
| Mykel J. Kochenderfer · Sydney M. Katz · Anthony L. Corso · Robert J. Moss 저 |
| Stanford / 무료 공개 교과서 · 2025 |
"잘 굴러간다는 건 아직 깨질 자리를 못 찾았다는 뜻이지, 안전하다는 뜻이 아닙니다."