SF에서의 Single Point of Failure

내가 일하는 통신 시스템 분야에는 “Single Point of Failure"라는 용어가 있다. 한 곳만 고장나면 전체 시스템이 동작하지 않는 부분을 일컫는 말인데, 모든 중요한 시스템은 이러한 Single Point of Failure가 없도록 주요 부분이 이중화되어 있거나 그게 기술적으로 어려운 경우엔 이 부분은 거의 고장날 수 없는 구조로 되어 있다. 물론 최근들어 특히 인터넷 관련 시스템의 경우 time to market이나 비용 절감이 강조되면서 예전만 못한 신뢰성을 보이는 경우도 많지만, 그건 어디까지나 서비스가 중단되어도 고객 불평 외엔 큰 문제가 없는 경우에 그렇고, mission critical한 시스템에선 여전히 설계 당시부터 시스템의 신뢰성이 확보되도록 하는 것이 원칙이다. 특히 시스템의 여러 부분이 무선 통신망에 의해 연결되는 경우엔 통신이 끊기는 것을 당연히 가정하고 시스템을 설계 구현하게 된다. 민간의 통신 시스템이 이러한데, 군사용 시스템은 당연히 더 할 것이다. 그런데, 많은 SF영화에선 그런 것 같지 않다. 스타워즈






스타워즈 에피소드 4에서 작은 달만한 크기에 화력으로 대적할 상대가 없는 Death Star를 1인용 소형 전투기로 폭파시킬 수 있었지만 이건 Death Star의 설계도를 많은 희생을 무릅쓰고 입수하여 치밀하게 약점을 분석한 후 2M 크기의 작은 구멍에 폭탄을 정확하게 투하해야 했는데, 이건 정상적으론 거의 불가능한 일이었지만 결국 루크 스카이워커가 Force의 힘에 의해 성공할 수 있었다. 여기까진 그런대로 말이 되는 스토리였다. 하지만 에피소드 4가 성공한 후 조지 루카스는 이 방법을 너무 남용하게 된 듯 하다. 에피소드 5는 결말 없이 끝났으니까 논외로 하고, 에피소드 6에서 재건된 Death Star를 파괴하는 데엔 역시 중앙부로 들어간 밀레니엄 팔콘호가 레이저를 한방 쏘는 것으로 충분했다. 한번의 실패에도 Death Star의 설계자들은 별로 배운 것이 없는 듯 하다. 어떻게 가장 중요한 심장부까지 밀레니엄 팔콘호 정도 크기의 우주선이 날아서 들어갈 수 있도록 만들어 놓았을까. 그토록 중요한 원자로가 레이저 한방 맞았다고 안전장치도 없이 전체가 연쇄폭발하도록 만들어 놓은 것도 말이 안된다. 20년이 지난 후, 에피소드 1에선 좀 더 심하다. 아나킨 스카이워커가 포스가 유례없이 강하긴 했지만, 얼떨결에 들어간 격납고에서 소형 전투기가 쏜 레이저 한방에 우주정거장 전체가 폭발하고, 수천대의 전투 로봇이 통신이 두절되었다고 그 자리에서 동작을 모두 멈춰버린 것은 정말 관객들의 지능을 무시하는 것이라고 밖에 볼 수 없다. 스타워즈가 비록 SF라기보단 판타지에 가깝다고는 하지만, 장르가 무엇이건 간에 스토리 전개는 논리적이어야 하지 않는가. 인디펜던스 데이



이쯤 되면, 아마 왜 인디펜던스 얘기는 안나오나 하고 생각할 것 같다. 물론 인디펜던스 데이 같은 영화를 놓고 말이 되느니 안되느니를 따지는 것 자체가 말이 안되지만 (이 문장은 말이 되나?). 아무리 그렇다고는 해도 그 정도 돈을 들여 영화를 만드는데 감독이나 제작자에게 “이건 정말 말이 안된다. 내용을 좀 바꿔보자.“라고 할 사람이 하나도 없다는 것이 영화 제작에 문외한인 내겐 이해가 안된다. 컴퓨터 바이러스를 외계인의 우주선에 업로드한다는 것도 당연히 말이 안되지만, 시스템 설계 관점에서 볼 때 모선이 바이러스에 감염되었다고 해서 (모선엔 컴퓨터가 하나밖에 없나? 아니면 다들 서비스팩 2를 안깔았나?) 각 도시 상공에 있던 각 우주선과 소형 전투기들까지 하나같이 실드가 해제되었다는 것 역시 분산시스템을 설계하는 입장에서 보면 말이 안된다 (하지만 ID4를 갖고 이런 것을 따지고 있다니… 정말 말이 안되는 것 같다).
이 외에도 이런 식으로 대충 결말을 마무리하는 SF 영화는 수도 없이 많다. 혹자는 이렇게 말할 것이다. 영화란 다 그런 것 아니냐. 훨씬 강력한 적과 상대해서 거의 죽어가다가 끝에가서 의외의 역전을 해야 하는데, 스토리 전개상 어쩔 수 없는 것 아니냐고. 하지만 꼭 그런 것 같지는 않다. 시스템을 설계하는 엔지니어의 입장에서 내가 제일 좋아하는 영화는 터미네이터 시리즈이다.

터미네이터를 보면서 저 로봇은 정말 지겹게도 다시 살아난다고 생각했지만, 사실 전투용 시스템이라면 그렇게 만들어야 한다. 나도 회사에서 같이 일하는 팀원들에게 종종 이런 얘기를 한다. “우리가 만드는 시스템은 터미네이터 같아야 한다. 죽어도 죽어도 다시 살아날 수 있어야 한다.” 물론 터미네이터 수준에 이르려면 아직 멀었고 스카이넷이 아닌 우리 인간들이 그만큼 완벽한 기계를 만들 수 있을지도 모르겠지만, 아뭏튼 전세계의 수많은 엔지니어들은 자신들이 만드는 시스템이 스타워즈나 ID4에서처럼 허무하게 무너지지 않도록 불철주야 노력하고 있다. P.S. 마지막 문장을 써놓고 보니 마치 엔지니어들이 악의 편에서 일하는 것처럼 들릴 수 있겠지만, 그건 아님 ;) Update 04/10/20: IE에서 레이아웃이 깨져서 수정.