의존성 실타래 풀다가 화병 나겠네
파스타 코드 보다는 불어터진 자장면 코드가 더 어울릴 듯 (태경 김/Pixabay)
한 회사의 오래된 프로젝트가 너무 오래된 SDK를 참조하고 있는데 계속 놔두면 자른다(?)고 해서 이걸 업그레이드 하려고 여럿 건드려 보고 있는 중이다.
그런데 이 과정에서 큰 지뢰를 밟아버렸다. 사용하던 의존성이 구버전 SDK와 엮여 있던 것이 많아서였다. 그래도 이왕 밟은 거 죽기는 싫으니 지뢰를 하나씩 해체해 나간다.
우선은 SDK 버전을 올린 후 부족한 부분을 따라가 본다. 의존성들의 버전을 하나씩 올려보면서 문제가 해결되는지 확인해본다. 문제는 이 과정에서 연달아서 버전이 안 맞아서 꼬이는 현상들이 하나 둘 계속 얽혀져 뽑혀나온다.
불행히도 지뢰를 해체해 나가던 도중 거기에 연결된 또다른 폭탄을 하나 발견한다. 겨우 의존성 문제를 풀어가나 싶더니 거기서 누군가 버전업이 안 되던 패키지를 직접 뜯어고친 비공식 저장소의 의존성이 튀어나왔다.
여기에 얽힌 의존성의 버전 꼬임을 또 하나하나 해결해 간다. 의존성 버전 체크는 한 번에 하나씩 밖에 안 되기 때문에 지속적으로 체크하고 수정하고를 반복해 나가야 했다. 심각하게 스트레스를 받았다. 그래도 어떻게 해결을 하긴 했댜.
이제 다 해결 되었을까 싶었지만 불행히도 지뢰에 또다른 폭탄이 연결된 것을 발견한다. 그런데 이번에 발견된 폭탄에는 워낙 옛날에 만들어서 어떻게 해체해야 할지 알 수 없는 부품이 하나 연결되어 있었다. 2년이나 넘게 방치된 패키지였다.
어쩔 수 없이 그 부품을 복제해서 직접 뜯어고쳐야 되게 생겼다. 하지만 그 부품 안에는 또 오래되어서 관리가 안 되는 부품이 또 들어있었다.
아 모르겠다. 하기 싫다. 살려줘. 사람 살려.
...
과거 어떤 회사 면접에서 '써드파티 의존성을 늘리는 것을 경계하는 편'이라고 이야기했다가 좀 둘러서 까인 적이 있었다. 그때 내가 잘못된 것일까 라고 생각하며 조금씩 써드파티 패키지에의 의존을 조금씩 늘려가보고 있기는 하다.
하지만 이런 지뢰를 밟아 보면 '빨리 만들 수 있다고 써드파티 의존성을 늘려가는 게 과연 정답일까?'라고 좀 심각하게 고민해 봐야 할 것 같다. 특히 그 프로젝트가 내가 참여하지 않더라도 오히려 더 고민해 보라고 권하고 싶다. 유지보수라는 것도 상당히 중요한 일인데 의존성 옹호론자들은 너무 안일한 것이 아닐까.
물론 지속적으로 관리되어온 프로젝트는 별 지장 없이 여전히 잘 관리될 수는 있다. 내가 처음부터 지금까지 계속 관리하는 코드들은 별 문제가 없다. 써드파티 패키지를 안 쓰는 것도 아님에도 말이다. SDK든 개발툴이든 뭐든 최신버전으로 바로 올려서 문제가 보이면 바로 수정하고 있으니 말이다.
하지만 내가 처음부터 끝까지 지속적으로 꾸준히 관리되어 올 수 있는 일은 극수소일 뿐일 것이다.
그러니까 하고 싶은 말은
불가피한 경우를 제외하곤 써드파티 의존성은 자제하는 편이 정신건강에 더 나을 것이다.
정도일 것 같다.