
우리는 더 빠른 항공 승무원 솔버를 만들었다. 그저 더 빠르게 실패했을 뿐이다.
실제 연쇄 장애가 벌어지던 항공사 운항통제센터에 처음 앉아 있던 그때는 새벽 3시가 막 지난 시각이었고, 몇 시간 전 겨울 폭풍이 핵심 공항 한 곳을 폐쇄시킨 상태였다. 방 앞쪽을 가득 채운 비디오 월은 붉은색으로 물들어 가고 있었다 — 결항에 결항이 이어졌다 — 그리고 내가 가장 또렷이 기억하는 것은, 항공사가 수백만 달러를 들여 도입한 승무원 스케줄링 솔버를 아무도 쓰지 않고 있었다는 사실이다. 디스패처들은 키보드를 밀쳐두고, 스프레드시트와 화이트보드 위에서 깨진 승무원 페어링을 손으로 처리하고 있었다. 바로 그 소프트웨어가 제 몫을 해내야 할 그 순간에 말이다.
그 장면이 결국 우리가 무언가를 만들도록 이끌었다 — IROPS 회복을 위한 항공 승무원 스케줄링 AI — 하지만 내가 예상한 방식은 아니었고, 잘못된 해법에 베팅했다가 그것이 실패하는 것을 지켜본 뒤였다. IROPS는, 겪어본 적이 없다면, 업계가 다음을 부르는 말이다: 불규칙 운항(irregular operations): 폭풍, 공항 폐쇄, 스케줄이 무너질 때 연쇄적으로 번지는 혼란. 이것은 항공 업계에 연간 다음과 같은 비용을 치르게 한다고 추정된다: 연 600억 달러, IATA에 따르면 이는 전 세계 항공사 매출의 약 8%에 해당한다. 전 세계 항공편 다섯 편 중 약 한 편이 이 영향을 받는다. 그리고 그날 밤 내가 배운 불편한 비밀은, 항공에서 가장 정교한 최적화 소프트웨어가 사실상 비용이 가장 큰 바로 그 사건들에서 무용지물이 되도록 설계되어 있다는 것이다.
솔버는 더 이상 존재하지 않는 항공사를 최적화하고 있었다

레거시 승무원 솔버가 실제로 무엇을 하는지 아는 것이 도움이 된다. 이들은 열 생성(column generation)을 실행한다 — 알려진 스케줄에 인력을 배치하는 가장 저렴한 합법적 방법을 찾아내는 데 진정으로 탁월한 분기 정가(branch-and-price) 최적화 기법이다. 함정은 다음 단어에 있다: 알려진(known). 솔버는 네트워크의 스냅샷을 찍고, 시간을 얼린 다음, 그 얼어붙은 세계에 대한 최적의 승무원 배정을 계산한다. 이것은 배치 주기로 실행되며, 대개 30분에서 60분마다 돌아간다.
정상 운항 중에는 그것으로 충분하다. 주기와 주기 사이에 세계는 거의 움직이지 않는다. 하지만 연쇄 장애 중에는 네트워크 상태가 몇 분마다 바뀐다. 승무원이 이동한다. 연결편이 끊어진다. 항공기가 발이 묶인다. 솔버가 해답을 내놓을 즈음이면, 그것에 주어졌던 입력값은 이미 틀린 것이 되어 있다 — 그래서 그 답은 더 이상 존재하지 않는 항공사를 위한 완벽한 계획이다.
나는 이것을 다음과 같이 부르기 시작했다: 최적화-실행 간극(Optimization-Execution Gap): 솔버가 가정한 세계와 실제로 램프 위에 펼쳐져 있는 세계 사이의 거리. 이 간극은 고립된 지연 상황에서는 무해하다. 연쇄 장애 중에는 치명적인데, 솔버가 다음을 위해 만들어졌기 때문이다: 효율성(efficiency) — 알려진 세계에서 가장 저렴한 스케줄 — 그리고 새벽 3시에 당신이 절박하게 필요로 하는 것은 다음이다: 회복탄력성(resilience): 알 수 없는 세계에서 살아남을 수 있는 스케줄.
레거시 승무원 솔버의 가장 잔인한 점은, 붕괴가 벌어지는 와중에도 그것이 계속 작동한다는 것이다 — 그것이 계산하는 동안 이미 무너져 버린 네트워크를 위한 흠잡을 데 없는 계획을 태연하게 건네주면서.
왜 우리는 그냥 솔버를 더 빠르게 만들지 못했을까?
이 부분은 내가 자랑스럽게 여기지 않는 부분이고, 실제로 중요한 부분이다.
우리 팀이 이 문제를 처음 들여다봤을 때, 우리의 진단은 뻔한 엔지니어의 진단이었다: 솔버가 너무 느리다. 세계는 5분마다 바뀌는데 옵티마이저는 30분에서 한 시간이 걸리니, 간극을 좁히자 — 더 빠르게 만들자. 우리는 증명 가능한 최적해를 기다리는 대신, 운영 의사결정 창 안에서 실행 가능한 답을 얻기 위해 더 저렴한 휴리스틱에 의존하며, 더 빠른 회복 엔진을 구축하는 데 실제로 상당한 시간을 들였다.
그리고 그것은, 답을 더 빨리 내놓았다는 좁은 의미에서, 작동했다. 그런 다음 우리는 그것을 실제 혼란 데이터로 시험했고, 나는 그것이 이미 무효가 된 회복 계획을, 다만 더 빨리, 자신 있게 만들어내는 것을 지켜봤다. 우리는 유령 항공사를 더 높은 속도로 최적화하는 기계를 만들었던 것이다.
실수는 속도를 병목으로 취급한 것이었다. 병목은 그것이 아니었다. 병목은 다음이 허구였다는 것이다: 입력값(inputs). 솔버는 — 우리 것을 포함해서 — 확실한 사실을 필요로 한다: "스미스 기장은 덴버의 B7 게이트에 있다." 하지만 연쇄 장애 중에 스미스 기장은 호텔에 있을 수도, 직원 셔틀에 있을 수도, 차를 렌트해 콜로라도 스프링스로 반쯤 가고 있을 수도 있다. 세계의 정직한 상태는 "아마 덴버에 있음"이고, 열 생성 솔버는 다음으로는 아무것도 할 수 없다: 아마(probably). 우리는 데이터가 쓰레기인 질문에 대한 답을 정교하게 다듬고 있었던 것이다.
그 실패가 바로 이 제품이 존재하는 이유다. 만약 우리가 그 빠른 솔버를 출시했더라면, 우리는 항공사들에게 똑같은 값비싼 실수를 저지르는 더 빠른 방법을 팔았을 것이다.
12억 달러짜리 데이터 블랙홀
이 실패를 온전한 규모로 보고 싶다면, 2022년 12월 사우스웨스트에 무슨 일이 일어났는지 보라. 그 붕괴는 항공사에 대략 다음의 비용을 치르게 했다: 12억 달러, 약 다음을 결항시켰다: 16,900편, 그리고 연말연시 동안 거의 2백만 명의 승객을 발이 묶이게 했다.
널리 알려진 이야기는 "낡은 소프트웨어"다. 진짜 이야기는 더 구체적이고 더 유용하다. 사우스웨스트의 승무원 스케줄링 시스템 SkySolver는 계산으로 뚫고 나갈 수 없는 조합 폭발에 부딪혔다. 하지만 그 밑바닥에서, 항공사는 자기 조종사와 승무원이 물리적으로 어디에 있는지 파악하지 못했다. 승무원 위치 보고는 대체로 전화를 통해 이루어졌다 — 외곽 공항에 발이 묶인 승무원들이 대기 시간이 몇 시간까지 치솟는 스케줄링 센터에 전화를 걸었다. 그 지연이 내가 데이터 블랙홀이라고 여기는 것을 만들어냈다: 시스템은 자신이 있다고 생각하는 곳에 있지 않은 승무원들을 위한 스케줄을 생성하고 있었다. 그것은 유령 네트워크를 최적화하고 있었고, 지점 간(point-to-point) 노선 구조는 승무원과 항공기가 자연스럽게 다시 모이는 허브 "재생성 지점"이 없다는 것을 의미했으니, 피해 반경은 공항에서 공항으로 계속 번져 나가기만 했다.
이것은 모두가 그 이후로 고쳐놓은 먼 옛날 이야기가 아니다. 2024년 7월, 스피릿의 스케줄링 시스템은 충돌하는 배정을 만들어냈다, 다음의 대상에: 가용 항공 승무원의 43%, 5천만~1억 달러 규모로 추정되는 사건이었는데, 시스템이 혼란 중에 승무원을 깔끔하게 재배정할 유연성이 없었기 때문이다. 이 패턴이 반복되는 것은 근저의 아키텍처 — 얼어붙은 스냅샷을 최적화하고, 확실한 입력값을 요구한다 — 가 업계 전반에서 동일하기 때문이다.
사우스웨스트는, 그 점은 인정해야 하는데, 지출로 대응했다: 약 다음을 썼다 2024년 기술에 17억 달러 를, 더 큰 다년 프로그램의 일환으로, 데이터센터 규모를 극적으로 줄인 AWS 마이그레이션, 그리고 약 30% 더 빠른 스케줄링 알고리즘. 그것은 옳은 본능이다. 하지만 동일한 아키텍처의 더 빠른 버전은 — 이것이 바로 우리 자신도 하마터면 빠질 뻔했던 함정인데 — 다음 간극을 좁히면서 속도(speed) 다음 간극을 활짝 열어둔다 데이터 확실성(data certainty) 을.
지연이 세 시간을 넘어서면 이제 무슨 일이 벌어지는가?

항공 역사의 대부분 기간 동안, 느린 회복은 당신에게 호의(goodwill)를 잃게 하는 정도였다. 화난 승객, 나쁜 언론 보도, 약간의 바우처. 그 셈법이 2024년 10월 28일에 바뀌었다.
그날 미국 교통부(DOT)의 자동 환불 규정이 발효되었다 — 사상 최초의 의무적 자동 환불 요건이다. 이제 세 시간을 넘는 모든 국내 지연(국제선은 여섯 시간)은 영업일 기준 7일 이내에 지급되는 현금 환불을 촉발한다, 다음 상태로: 승객이 요청하지 않아도. 바우처가 아니다. 재예약이 아니다. 현금이다.
하루 300편을 출발시키는 중형 항공사에 대해 산술을 돌려보라. 정말로 나쁜 날에, 그중 6분의 1만이라도 — 50편 — 이 세 시간 기준을 넘겨 미끄러진다면, 평균 항공권 가치 280달러에 편당 승객 150명이면, 당신이 마주하는 것은 대략 다음이다: 단 하루에서 발생하는 210만 달러의 의무 환불 노출. 느린 IROPS 회복은 예전에는 평판 문제였다. 이제 그것은 같은 주 안에 타격을 주는 비용 항목이다.
이제 당신의 회복이 뒤처지는 매 시간마다 미터기가 돌아가고 있고, 지난 10월 이후로 그것은 자신이 건드리는 모든 승객에게 현금으로, 자동으로, 지급된다.
이것이 나에게 대화 전체의 틀을 다시 짠 부분이다. 최적화-실행 간극의 비용은 더 이상 추상적이지 않다. 그것은, 달러로, 폭풍이 시작된 순간부터 돌기 시작한 시계를 상대로 복리로 불어난다.
솔버를 대체하지 말고, 증강하라

여기 우리의 접근을 정의하는 결정이 있고, 그것은 의도적으로 매력 없는 결정이다: 우리는 당신의 솔버를 대체하지 않는다.
기존 솔버들은 수십 년에 걸친 항공사별 도메인 지식을 내장하고 있고, 그것들을 둘러싼 분야는 붕괴하는 것이 아니라 통합되고 있다. Jeppesen은 — 백 곳이 넘는 항공사 고객을 둔 업계 표준 — 다음의 가격에 Boeing에서 Thoma Bravo로 매각되었다 105억 5천만 달러 에, 2025년 4월에, 항공우주 역사상 가장 큰 기술 부문 매각 중 하나였고, 그 이후 예측적 혼란 관리를 위한 AI 계층인 Stratosphere를 출시했다. IBS Software의 iFlight 플랫폼은 현대적이고 클라우드 네이티브한 도입을 따내고 있다 — 대한항공이 2026년 초에 가동에 들어갔고, Aeroitalia와 Groupe Dubreuil 계열 항공사 같은 항공사들도 그 위로 옮겨가고 있으며 — AWS와의 공동 엔지니어링 협약이 이를 뒷받침한다. Optym의 CrewSolver는 계획 단계에서 문서화된 3~7%의 승무원 비용 절감을 제공한다.
그 어느 것도 적이 아니다. 하지만 그것들이 각각 무엇에 강한지 주목하라: 계획 단계 최적화와 예측 분석 — 알려진 세계를, 아름답게 계산해내는 것. 실시간의, 불확실한 입력값의 회복 문제는 여전히 열려 있는 간극이다. 전면적인 플랫폼 교체는 또한 12개월에서 18개월짜리 프로젝트이며, 어떤 운영 책임자도 1년에 350일 작동하는 시스템을 뜯어내어 작동하지 않는 15일을 고치고 싶어 하지 않는다. 실제로 계약서에 서명하는 CIO에게는, 그 셈법이 달력보다 더 나쁘다: 수십 년치 항공사별 CBA 로직이 인코딩된 시스템을 뜯어내는 것은 — 바로 Jeppesen 자신의 소유권이 105억 5천만 달러에 막 손바뀜한 데다 그 장기 로드맵이 미결의 문제로 남은 이 순간에 — 대부분의 기술 조직이 걸지 않을 도박이다. 기존 설치본 옆에 자리 잡고, 그 스키마를 대체하는 대신 그 피드를 소비하는 것이, 그들이 승인할 유일한 통합이다.
그래서 우리는 ML 기반 IROPS 회복 엔진을 구축했다, 다음에 자리 잡는 나란히(alongside) 기존 Jeppesen이나 IBS 설치본과, 그리고 핵심 솔버가 할 수 없는 것을 처리하는: 불확실한 승무원 위치를 동반한 연쇄 혼란, 네트워크 전역 피해 반경 분석, 그리고 수동 회복이 통상 걸리는 4~12시간이 아니라 몇 분 안에 산출되는 회복 계획. 지역별 사례 데이터는 자동화가 그 회복 시간을 약 78% 줄일 수 있음을 시사한다. 요점은 기존 업체보다 더 똑똑해지는 것이 아니다. 요점은 기존 업체가 결코 대비하도록 설계되지 않았던 바로 그 조건에서 유용해지는 것이다.
"아마 덴버에 있음"을 다루도록 모델을 가르치기
솔버를 더 빠르게 만들려는 시도를 멈추자, 진짜 엔지니어링 문제가 또렷이 초점에 들어왔다: 불확실성에 숨 막히는 대신 그 위에서 번성하는 무언가를 만드는 것.
첫 번째 조각은 승무원 위치 인텔리전스다. 확실한 위치를 요구하는 대신, 우리는 모델에 확률적 위치를 공급한다 — 존재하는 온갖 실시간 신호를 과거 행동과 융합함으로써, 시스템이 다음에 대해 추론하도록 한다: 승무원이 있을 법한 곳, 대기 큐에 네 시간째 깊이 빠져 있는 전화를 기다리는 대신에. 그 단 하나의 전환 — "확실하거나 아니면 아무것도 없거나"에서 "확률 분포"로 — 이 바로 회복 계획이 실제 연쇄 장애와의 접촉에서 살아남게 하는 것이다.
두 번째 조각은 네트워크를 그래프로 취급하고, 장애가 발생하기 전에 그것이 어디로 전파될지를 분석하는 것이다 — 피해 반경을, 이 특정 항공사의 노선 구조에 매핑하여, 어떤 공항 폐쇄가 두 시간 뒤 하류의 여섯 편을 조용히 결항시키는지 볼 수 있도록.
세 번째 조각은 시나리오 시뮬레이터로, 사실상 운영의 디지털 트윈이며, 이를 통해 운영 팀은 실제 폭풍도 실제 시계도 없을 때 겨울 폭풍 시나리오를 미리 예행 연습하고 회복 전략을 시험할 수 있다. 항공은 데이터가 풍부한 곳에서 이미 디지털 트윈을 신뢰한다 — Lufthansa의 AVIATAR 플랫폼은 34개 항공사 통합에 걸쳐 하루 23.7테라바이트를 수집하고 정비 고장 예측에서 93.6%의 정확도를 달성한다. 승무원 및 스케줄링 트윈은 여전히 초기 단계이며, 그것이 바로 기회가 있는 지점이다.
그리고 그 모든 것을 관통하며 흐르는 것이 제약 조건 엔진이다. 모든 권고안은 FAA Part 117 피로 규정 — 8~9시간의 비행 시간 제한, 9~14시간의 근무 시간 — 아래에서, 그리고 규정보다 자주 다음한 항공사의 노조 계약 아래에서 합법적이어야 한다: 더(more) 제한적인. 대부분의 업체는 그 규칙들을 "구성(configuration)"으로 취급한다. 우리는 항공사의 특정 단체 교섭 협약을, 기종별로 그리고 기지별로 인코딩하는 것을 핵심 엔지니어링으로 취급하는데, CBA 조항을 위반하는 회복 계획은 계획이 아니라 — 고충 제기(grievance)이기 때문이다.
왜 우리는 먼저 섀도우 모드로 실행하는가
이 업계 사람들이 새벽 3시에 조종사를 어떻게 움직일지 말해주는 블랙박스를 불신하는 것은 정당하다. 그래서 나는 내가 가장 자주 듣는 반론을 당신에게 말해주겠다, 나 자신도 그것을 품었기 때문이다.
한 운영 부사장이 초기에 우리에게, 대략, 자기들은 방금 기존 업체로부터 AI 혼란 애드온을 라이선스했으며 왜 우리가 필요한지 모르겠다고 말했다. 일리 있다. 그런 다음 다음 폭풍이 왔고, 그 애드온은 그들에게 예측을 주었지 실행 가능한 승무원 회복은 주지 못했으며, 디스패처들은 다시 화이트보드로 돌아갔다. 그 대화가 나에게 가르쳐준 구별: 다음 사이에는 세계만큼의 차이가 있다는 것 승객 대면 채팅을 위한 에이전틱 AI — 2026년 컨퍼런스 순회의 유행어 — 와 승무원 및 항공기에 대한 운영상의 의사결정을 내리는 AI. 승객을 재수용하는 챗봇은 좋은 것이다. 그것은 네트워크를 회복시키는 것과 같은 엔지니어링 문제가 아니다.
그것이 바로 어떤 항공사든 우리 엔진을 처음 실행할 때, 그것이 운영을 건드리지 않는 이유다. 그것은 다음으로 실행된다 섀도우 모드(shadow mode): 우리 모델의 권고안이 인간 디스패처의 실제 결정 옆에 자리하고, 우리는 그 간극을, 날마다, 항공사 자신의 혼란을 대상으로 측정한다. 신뢰는 영업 자료에서 주장되는 것이 아니다. 그것은 비교표 위에서, 운영상의 위험 없이, 운영 팀이 스스로 그 권고안이 화이트보드보다 낫다고 판단할 때까지, 얻어지는 것이다.
당신은 벤치마크로 누군가의 조종사를 재배치할 권리를 얻지 못한다. 당신은 몇 주 동안, 인간 옆에서, 조용히, 옳음으로써, 누군가가 당신을 믿어야 하기 전에, 그것을 얻는다.
정직한 진실은, 섀도우 모드를 지켜보던 그때가 바로 우리가 실제로 무엇을 팔고 있는지 내가 이해한 때라는 것이다. 옵티마이저가 아니다. 속도가 아니다. 우리는 운영 책임자가 자기 인생 최악의 밤에 기계를 믿을 수 있는 방법을 팔고 있었다 — 그리고 믿음은 폭풍이 오는 도중이 아니라 그 전에 쌓아 올려져야 한다.
그 15일은 실제로 얼마의 가치가 있는가
당신이 중형 항공사의 운영을 맡고 있다면, 당신의 승무원 솔버는 1년에 350일 잘 작동한다. 나는 그렇지 않다고 주장하러 온 것이 아니다. 문제는 그것이 작동하지 않는 15일에 무슨 일이 벌어지느냐다 — 그리고 그 날들이 바로 수십억 달러짜리 헤드라인, 승무원의 43%가 잘못 배정되었다는 감사, 그리고 이제 지난 10월 이후로, 시간 단위로 미터링되는 자동 현금 환불을 만들어내는 날들이다.
업계 전체가 계속 저지르는 실수 — 나 자신의 더 빠른 솔버로 내가 먼저 저지른 실수 — 는 그 15일을 더 열심히 계산해서 풀어야 할 속도 문제로 취급하는 것이다. 그것들은 그렇지 않다. 그것들은 다음 문제다 확실성(certainty) 문제이고, 당신은 확실성 문제를 능동적으로 무너져 가고 있는 세계로부터 더 많은 확실성을 요구함으로써 풀지 못한다. 당신은 그것을, 불확실성 아래에서 추론하고, 재난이 도래하기 전에 그것을 예행 연습하며, 빛 속에서 신뢰받기 전에 그림자 속에서 스스로를 증명하는 무언가를 만듦으로써 푼다. 그것이 우리가 만든 엔진이고, 그것은 다음에서 온전히 설명되어 있다 항공 승무원 스케줄링 AI 솔루션.
오늘 밤 어딘가에는 비디오 월이 잔잔하고 초록빛인 운영통제센터가 있고, 승무원 솔버가 설계된 그대로 배치 주기를 돌리며 흥얼거리고 있다. 우리가 하는 일은 그 방이 붉게 물드는 밤을 위한 것이다 — 전화가 밀려들고, 페어링이 누구도 받아 적을 수 있는 것보다 빨리 깨지며, 소프트웨어가 요구하는 확실성이 조용히 건물을 떠나버렸기에 디스패처가 화이트보드로 손을 뻗는 그 밤. 요점의 전부는, 그 밤에도, 기계가 더 이상 온전히 볼 수 없게 된 항공사에 대해 여전히 정직하게 추론하도록 확실히 하는 것이다.

