역설계 (reverse engineering)
완성된 결과물을 분해하고 측정하여 그 안에 담긴 설계, 구조, 작동 원리를 거꾸로 알아내는 절차. 설계도가 없는 물건을 가지고 설계도를 되짚어 만든다. 모방, 복제, 수리, 호환품 제작, 그리고 적의 기술을 파악하는 일에 두루 쓰인다.
너, 시계 하나가 손에 들어왔다고 해보자. 뒷면을 열면 톱니바퀴 수십 개가 서로 맞물려 돌아간다. 누가 설명서를 끼워 준 것도 아니다. 그런데 너는 이 작은 톱니가 저 큰 톱니를 밀고, 저게 다시 바늘을 옮기는 걸 한참 들여다보다가, 어느 순간 머릿속에 그림이 그려진다. 아, 이렇게 짜여 있구나. 이제 너는 똑같은 걸 만들 수도, 고장 난 데를 짚을 수도 있다. 결과물 하나만 쥐고서, 만든 사람의 머릿속을 거꾸로 들여다본 거다.
이게 그렇게 특별한 일이냐고? 사실 인간이 가장 오래 해 온 일 중 하나다. 도자기 한 점을 손에 넣은 이웃 나라 장인이 깨진 단면을 들여다보며 흙의 배합과 가마의 온도를 가늠하던 것도, 떠내려온 배의 못 박힌 자리를 보고 조선법을 추측하던 것도 다 같은 짓이다. 다만 이걸 하나의 또렷한 절차로, 그리고 이름까지 붙여 가며 다룬 건 기계와 산업이 본격적으로 돌아가기 시작한 19세기 이후다. 영어 단어 reverse engineering 자체가 공학(engineering)이라는 직업이 자리 잡은 뒤에야 생긴 말이니, 이건 누가 발명한 발상이라기보다 늘 있던 행동에 산업 사회가 뒤늦게 이름표를 달아 준 쪽에 가깝다.
이 일이 단순한 호기심을 넘어 국가의 명운이 걸린 기술로 올라선 결정적 장면은 전쟁터에 있다. 1944년, 미군 폭격기 B-29 몇 대가 일본을 폭격하고 돌아오다 고장이 나 소련 극동에 비상 착륙했다. 당시 소련은 일본과 전쟁 중이 아니어서 비행기를 돌려줄 수 없다며 억류해 버렸다. 스탈린은 항공기 설계국의 안드레이 투폴레프에게 명령한다. 이걸 그대로 베껴라. 투폴레프 팀은 멀쩡한 한 대를 통째로 분해했다. 리벳 하나하나, 배선 한 가닥까지 수만 개의 부품으로 나누어 재고, 그리고 거기서 가장 골치 아픈 문제를 만난다. 미국은 인치를 쓰고 소련은 밀리미터를 썼다. 가령 외판 두께가 16분의 1인치, 곧 1.59밀리미터인데 소련에는 그 두께의 알루미늄판이 아예 없다. 도면을 그대로 미터법으로 옮기면 가진 규격과 미세하게 어긋나 부품이 안 맞고, 그렇다고 인치 그대로 쓰자니 소련 공장 전체가 인치 규격으로 돌아가야 했다. 결국 그들은 외판 같은 핵심 치수는 가장 가까운 소련 표준 두께에 맞춰 새로 정하고, 나머지는 정밀하게 환산해 가며 한 점씩 메웠다. 그렇게 명령이 떨어진 지 두 해 만인 1947년, 거의 똑같은 쌍둥이 폭격기 Tu-4가 하늘에 떴다. 결과물 하나가 한 나라의 전략폭격 능력을 통째로 끌어올린 것이다. 우리가 지금 부르는 그 이름, 역설계의 위력을 이보다 선명하게 보여 준 사건은 드물다.
여기서 너는 역설계의 본질을 봐야 한다. 그건 단순한 베끼기가 아니다. 투폴레프가 부딪힌 단위 문제처럼, 거꾸로 풀다 보면 원래 만든 사람이 왜 그런 선택을 했는지, 어떤 제약 아래 무엇을 포기했는지가 드러난다. 결과물은 설계자가 내린 수많은 결정의 화석이고, 역설계는 그 화석에서 살아 있던 사고 과정을 복원하는 일이다.
그리고 이 절차가 가장 무섭게 꽃핀 곳이 컴퓨터다. 소프트웨어는 소스 코드라는 설계도를 감추고 0과 1의 실행 파일만 내놓는다. 그래서 디스어셈블러로 기계어를 읽고, 디버거로 한 줄씩 멈춰 가며 안을 들여다보는 소프트웨어 역설계가 하나의 전문 분야가 됐다. 1980년대 초 IBM PC가 천하를 잡았을 때, 컴팩이라는 회사는 그 핵심 칩(바이오스)을 베끼고 싶었지만 그대로 베끼면 저작권 위반이었다. 그래서 그들은 클린룸이라는 영리한 절차를 고안한다. 한 팀은 원본을 뜯어 그것이 무엇을 하는지 동작 명세만 글로 적고, 코드를 본 적 없는 다른 팀이 그 명세만 보고 새로 짠다. 결과는 같되 베낀 게 아닌 호환 칩. 이 한 수로 IBM의 독점이 깨지고 오늘날 우리가 쓰는 PC 시장이 열렸다. 역설계 하나가 단지 물건이 아니라 산업의 판도와 법의 경계까지 다시 그은 것이다. 그러려면 사람들의 생각도 바뀌어야 했다. 보호받는 건 겉으로 드러난 동작이 아니라 그것을 표현한 특정 코드라는 식으로, 무엇을 베낀 것으로 볼지에 대한 상위의 틀까지 함께 정교해진 것이다.
그러니 너가 출처도 설명도 없이 잘 굴러가는 무언가를 마주하거든, 겉모습에 감탄만 하고 돌아서지 마라. 그것을 멈춰 세우고, 분해하고, 들어오고 나가는 것을 하나씩 재 보아라. 잘 만든 결과물은 그 자체가 만든 이의 가장 정직한 설계도다. 거꾸로 읽을 줄 아는 자에게만 그 설계도가 펼쳐진다.