기술 부채를 금융 은어로 빗대어, 유지보수 중단된 의존성이 RUSTSEC에 의해 '정크'로 분류되는 순간 생기는 압박과, 라이브러리 코드를 벤더링해 부채를 '담보화'하여 'AAA'로 포장하는 아이러니를 Rust 생태계 사례로 풍자한다.
작성일: 2024년 3월 26일
아마 기술 부채(tech debt)라는 말에 익숙할 것이다. 기술 부채가 있다면, 그 부채를 가지고 파생상품도 만들 수 있지 않겠냐는 농담이 있다. 나는 Rust 생태계가 기술 부채의 해결책 가운데 하나가 바로 담보화(collateralization)인 것처럼 보이는 환경을 만들어냈다고 말할 수 있어 기쁘다.
이 기적이 어떻게 작동하는지 보자. 당신에게 어떤 라이브러리인 stuff가 있고, 그 라이브러리는 또 다른 라이브러리 learned-rust-this-way에 의존한다고 하자. 어느 시점에 learned-rust-this-way의 저자는 이 프로젝트에 대한 흥미를 잃었고, 이슈가 계속 쌓여만 간다. 그중에는 기능 요청도 있고, 실제 버그도 있다. 하지만 stuff를 만든 당신은 그 문제들 어느 것도 겪지 않았다. 그렇다 해도 learned-rust-this-way가 기술 부채가 아니라 말하긴 어렵다. 지금 당장 당신을 크게 괴롭히지는 않지만, 여전히 부채이긴 하다.
그러다 누군가 learned-rust-this-way가 부채임을 눈치챈다. 이런 일이 벌어지는 이유 중 하나는 이름이 너무 좋기 때문이다. 분명 Rust를 이렇게 배운 사람이 이 한 사람만은 아닐 테고, 다른 누군가도 그 이름을 갖고 싶어 한다. 문제는 원 저자와 연락이 닿지 않는다는 것. 그래서 이제 그 패키지가 RUSTSEC 데이터베이스에 추가될 명분이 하나 더 생겼고, 그러자 갑자기 난리가 난다. 불과 몇 분 만에 learned-rust-this-way를 직접 혹은 간접적으로 쓰는 사람들의 CI가 줄줄이 실패하기 시작하며, 뭔가 일이 터졌음을 알린다. RUSTSEC는 기본적으로 등급 기관과 비슷하고, 그들이 당신의 부채를 이제 정크(junk)로 분류했다고 판단했기 때문이다.
그다음엔 무슨 일이 벌어질까? stuff의 관리자인 당신에게, 사용자들이 갑자기 learned-rust-this-way를 쓴다며 지적하기 시작하고, 당신은 고통을 겪는다. 스트레스는 치솟는다. 그걸 털어내야 한다. 왜냐고? 당신에게는 멀쩡히 돌아가지만, 누군가 그 부채를 공개적으로 지적했기 때문이다. 금융 용어를 끝까지 밀어보자면, 이건 당신의 마진콜이다. 사용자들이 그 부채를 처리하라고 액션을 요구한다.
그럼 어떻게 할 수 있을까? 하나의 선택지는 대안으로 옮기는 것(부채를 언로드하기)이다. 그런데 이 경우 learned-rust-this-way의 대안들이 하나같이 매력적이지 않다. 하나는 그 라이브러리의 포크인데 역시 단일 유지관리자뿐이고, 갑자기 의존성이 세 개 더 늘어나며 그중 하나는 이미 "B-" 등급을 달고 있다. 생태계의 또 다른 선택지는 누가 지적하기도 전에 디폴트 선언하기로 마음먹었다.
기억하라. 당신은 learned-rust-this-way를 적극적으로 손댄 적이 없다. 지난 4년간 유지보수되지 않은 상태로도 당신에게는 잘 동작했다. 이제 그 라이브러리를 포크(이름은 learned-rust-this-way-and-its-okay라고 붙인다고 하자)하면, 당신도 똑같은 요구를 받게 된다. 그 라이브러리를 포크하는 건 부채 더미 위에 현금을 얹는 일이다. 거기서 버그 리포트에 대응하지 않으면, 결국 learned-rust-this-way가 그랬듯 당신도 공개적으로 지적당할 것이다. 그래서 그 방법이 시간을 벌어줄 수는 있지만, 문제를 정말로 해결하지는 못한다.
하지만 실제로 효과가 있는 방법이 있다. 그 코드를 그냥 당신 라이브러리 안으로 합쳐버리는 것이다. 그러면 그 정크 기술 부채가 순식간에 "AAA"로 등급이 바뀐다. 그 코드를 더 이상 건드리지 않고, 그런 일을 했다는 사실을 누구에게도 드러내지 않으며, 이전처럼 당신의 라이브러리를 계속 유지보수하기만 하면, 세상은 그대로 잘 돌아간다.
그래서 오늘부로: 나는 insta에 yaml-rust를 벤더링해서 담보화했다. 이제 insta 코드와 yaml-rust가 뒤섞인 합본이다. 그렇게 해서, 나는 이 정크 기술 부채를 완벽한 AAA로 성공적으로 업그레이드했다.
누가 이겼냐고? 아마 아무도 아니다.
제목에 관해 덧붙이자면: CDO는 2007년 금융 위기 때 악명이 높아진 금융 상품이다. 이에 대한 흥미로운 설명은 영화 “빅 쇼트(The Big Short)”에서 볼 수 있다.