미국 민주당과 공화당은 10월 1일부터 시행된 오바마케어 정책을 놓고 행정부 일각의 문을 닫으면서까지 살벌한 싸움을 벌였다. 민주당은 정부가 지원하는 의료보험인 오바마케어를 10월부터 실시한다는 입장이었고, 공화당은 나중으로 미루자고 주장했다.
이러한 충돌 와중에 의회 기능이 마비된 것은 물론이다. 미국 정부의 부채한도를 늘리는 정책에 대한 의회의 심의가 이 기간과 맞물려 있었기 때문에 전 세계가 짜증과 우려섞인 시선으로 미국 내부의 정치투쟁을 지켜보았다. 미국의 디폴트는 세계 경제에 엄청난 재앙이기 때문이다. 이러한 정치투쟁의 배후에는 무엇보다도 극우세력인 티파티(Tea Party)라는 존재가 있었다.
소수에 불과한 그들이 공화당 지도부 의견을 좌우한다는 사실은 비밀이 아니었다. 전 세계를 불편하게 만들었던 힘겨루기의 끝은 소수 극우세력에게 휘둘린다는 비판을 받으면서 심장이 오그라든 공화당 지도부가 사실상 백기를 들면서 마무리되었다.
이러한 우여곡절 끝에 오바마케어는 10월 1일부터 시작되었다. 오바마와 민주당은 정치적 승리의 기쁨을 만끽했다. 악몽은 그렇게 시작되었다.
10월이 시작되면서 미국의 많은 시민들이 오바마케어 법규에 따라서 원래 가지고 있던 보험을 탈퇴하고 새로운 보험에 가입하기 위해 'HealthCare.gov'를 방문했다. 하지만 예쁘게 꽃단장을 하고 손님을 맞이한 웹사이트는 마치 디도스 공격 때문에 만신창이가 된 사이트처럼 바닥을 기었다.
회원가입을 하려고 해도 응답이 없고, 보험을 선택하려고 해도 응답이 없고, 고객지원실에 전화를 해도 응답이 없었다.
많은 사람들이 응답하라 오바마케어하고 외쳤지만 그들에게 돌아오는 대답은 페이지가 로딩중임을 알리는 마우스 커서의 무심한 침묵뿐이었다. 정부 말을 믿고 이미 보험을 탈퇴한 사람들은 당황했다. 보험가입을 시도한 사람 중에서 너무 많은 사람들이 이 같은 문제에 봉착하면서 오바마케어를 정치적으로 옹호하던 사람들은 아연실색했고, 오바마케어를 비판하던 사람들은 쾌재를 불렀다.
하루 만에 하늘이 땅이 되고 땅이 하늘이 되었다. 소프트웨어의 힘은 정치보다 거대했다. 오바마를 포함해서 이 사건이 사소한 실수(glitch)로 인한 임시적인 문제라고 믿었던 사람들은 시간이 흐르면서 'HealthCare.gov'의 소프트웨어 개발 프로젝트 전체가 끔찍한 실패였음을 깨닫고 입을 다물었다.
오바마의 얼굴에서 미소가 사라졌고, 의회에서는 청문회가 열렸다. 변명과 책임미루기가 난무했고, 공화당 계열의 언론매체는 그래서 우리가 연기하자고 했잖아라고 노래를 부르며 축배를 들었다.
소프트웨어 개발자인 나로서는 어떻게 이러한 일이 일어날 수 있는지 믿기 힘들었다. 하지만 최근에 드러난 맥킨지(McKinsey) 보고서를 보면 이러한 재앙은 이미 오래 전부터 예견되어 온 일이었음을 알 수 있다. 10월로 예정된 출시일을 지키지 못할 것이 염려되었던 미국 보건복지부(Health and Human Service - HHS)는 컨설팅 회사인 맥킨지에게 현재의 상황을 검토해서 보고하도록 요청했다.
검토임무를 맡은 팀 이름은 어둡고 절박한 상황을 암시하듯 '붉은 팀'(Red Team)이었고, 그들이 3월에 작성한 내부보고서는 각종 언론매체를 통해서 적나라하게 세상에 드러났다. 14페이지 정도로 구성된 짧은 보고서 내용 중에서 나의 관심을 끌었던 부분은 프로젝트 진행상황을 요약한 그래프였다. (그림 참조)
이 그래프를 통해서 맥킨지는 당시 상황을 다음과 같은 몇 개 사항으로 압축해서 경고했다.
- 요구사항이 계속 변하고 있다.
-프로젝트의성공이 무엇을 의미하는지 정확하지 않다.
-외부 회사나 계약직 개발자에 대한 의존이 지나치다.
-(요구사항 분석, 설계, 구축, 테스트로 이루어지는) 모든 진행 단계가 병렬적으로 동시에 수행되고 있다.
-테스트를 수행할 시간이 절대적으로 부족하다. 테스트가 출시일 이후에도 계속 수행될 예정이다.
-모든 것을 한꺼번에 출시하려고 한다.
프로그래밍 개발 경험이 풍부한 사람이라면 처음 네 개 항목은 자체로는 문제가 아니라는 점을 알고 있을 것이다. 이유는 다음과 같다. 우선 변하지 않는 요구사항은 세상에 존재하지 않는 법이기 때문에 첫 번째 항목은 문제가 될 수 없다.
변하는 요구사항을 제대로 수용하지 못하는 프로젝트가 있다면, 문제는 그 프로젝트다. 프로젝트 성공이 의미하는 바가 불명확하다는 두 번째 항목은 수사학에 불과하다.
많은 수의 사용자들이 동시에 웹사이트에 들어와서 회원가입을 하고 보험을 선택할 수 있으면 프로젝트는 성공이고, 그렇지 않으면 실패다. 누구나 알고 있는 사실을 구태여 '정의'할 필요는 없다. 외부 회사나 계약직에 대한 지나친 의존을 지적한 세 번째 항목은 나중에 문제를 낳을 수 있는 여지가 있긴 하지만 일단 개발과정에서는 실패와 성공을 가르는 척도라고 말하기 어렵다.
요구사항 분석, 설계, 구축, 테스트가 모두 동시에 진행되고 있음을 지적한 네 번째 항목도 자체로는 문제될 것이 없다. 애자일 개발 방법론에 따르면 그러한 병렬적 진행이 이상한 것이 아니라 오히려 자연스러운 것이기 때문이다.
그렇다면 무엇이 문제였을까. 문제는 마지막 두 개의 항목에서 비롯되었다.
HHS의 총책임자인 캐슬린 시벨리우스는 웹사이트 내부의 서비스 모듈이 대단히 복잡한 구조를 가지고 있으며, 그들을 서로 한 곳에 묶어서 테스트하는 작업이 너무나 늦게 그리고 너무나 부실하게 이루어졌다고 인정했다.
의료보험을 제공하는 회사들은 10월 1일 출시일 전에 이루어진 통합테스트 과정에서 웹사이트가 다운되는 일이 자주 있었다고 증언했고, 어떤 보도에 의하면 겨우 500명의 테스트 사용자가 동시에 접속해서 작업을 하면 사이트가 먹통이 되기도 했다고 한다.
이 정도면 출시를 연기하는 것이 정상이지만, 불행하게도 이 경우에는 ‘기술’이 아니라 ‘정치’가 문제였기 때문에 출시를 연기하는 것은 아예 고려의 대상이 될 수 없었다.
HHS의 시스템이 제 아무리 복잡하다고 한들, 전 세계의 시민을 상대로 하는 구글, 트위터, 아마존, 페이스북, 이베이 시스템보다 복잡할 리는 없다. 이들은 모두 미국 회사다. 기술 자체는 문제가 되지 않는다는 뜻이다. 문제는 테스트였다.
우선 HHS에서 프로젝트를 관리했던 사람들은 테스트의 중요성을 제대로 인식하지 못했다. 테스트라는 것이 나중에 몰아서 한꺼번에 수행하는 것이 아니라 설계와 구현 자체와 뗄 수 없는 방식으로 결합되어 있는 ‘개발과정’의 핵심적인 일부라는 인식도 부족했다.
그리고 웹사이트를 개발할 때는 모든 기능을 다 갖추고 나서 갑자기 오픈하는 빅뱅방식이 먹히지 않는다는 기본적인 상식도 부재했다. 많은 방문자를 상정한 웹사이트는 기본적이고 핵심적인 기능을 갖춘 상태에서 베타버전을 오픈해서 사용자들이 실제로 사용을 하도록 만드는 과정을 밟아야 한다.
이러한 과정에서 수집된 데이터를 토대로 해서 사이트를 완성도를 높여나가는 것이다. HHS 프로젝트가 가졌던 문제가 테스트로 국한되는 것은 아니지만 소프트웨어 개발이라는 기술적인 면에서 보면 제일 큰 문제는 테스트였다.
관련기사
- 서열문화가 SW산업 망친다2013.11.25
- 5천억원짜리 SW버그가 주는 메시지2013.11.25
- 소프트웨어 개발자와 영어의 힘2013.11.25
- 오픈소스를 넘어서...개발자의 재능기부2013.11.25
이제 와서 이러한 이야기를 한들 사후약방문이고 소 잃고 외양간을 고치는 격에 불과하다. 하지만 사이트의 문제점을 시급하게 수정하고 있는 지금이라도 테스트의 중요성에 대한 인식과 테스트를 어떻게 수행해야 하는가에 대한 방법론이 제고되기를 바라는 마음이다.
'HealthCare.gov'의 문제는 그렇게 힘들게 싸워서 쟁취한 오바마케어의 집행을 사실상 1년 뒤로 연기되도록 만들었고, 축배를 들던 오바마의 지지도가 바닥을 기도록 만들었다. 환한 미소가 트레이드 마크였던 오바마의 얼굴에서 미소가 사라졌다. 소프트웨어의 힘은 정치보다 위대하다.
*본 칼럼 내용은 본지 편집방향과 다를 수 있습니다.