오픈소스 라이선스 충돌 탐지 실무: 다섯 가지 전형 패턴과 엔지니어링 대응 플레이북
라이선스를 하나씩 이해하는 것은 어렵지 않다. 어려운 것은 조합이다. 현대 애플리케이션은 수천 개 컴포넌트와 수십 종 라이선스를 안고 있고, 이들 사이의 호환 관계는 복잡한 매트릭스를 이룬다. 어느 한 곳의 충돌이 제품 전체의 배포 적법성을 흔들 수 있다. 이 글은 엔지니어링 팀이 실제로 마주치는 다섯 가지 충돌 패턴과, 탐지·대응을 도구로 공정화하는 방법을 다룬다. 로펌 해설 기사에는 없지만 납품 검수에서 실제로 점검되는 부분이다.
다섯 가지 전형적 충돌 패턴
하나: 강한 카피레프트의 독점 제품 혼입. 가장 고전적이고 가장 심각하다. 클로즈드소스 납품물에 GPL 코드가 들어가는 경우다. 입구는 명시적 의존성이 아니라 복사한 유틸리티 함수, 포크 후 개명한 모듈, 외주팀이 '빌려온' 구현인 경우가 많다. 매니페스트는 깨끗한 채 충돌은 파일 수준에 숨는다. 층위별 전염 논리는 라이선스 리스크 지도에서 상세히 다뤘다.
둘: 오픈소스 라이선스끼리의 비호환. 가장 유명한 조합은 Apache-2.0과 GPLv2다. Apache-2.0의 특허 조항이 GPLv2의 요구와 충돌해 두 코드는 하나의 파생 저작물로 합칠 수 없다(GPLv3가 이 문제를 해결했다). CDDL과 GPL도 마찬가지로, ZFS가 오랫동안 리눅스 커널 메인라인에 들어가지 못한 이유다. 각각은 '문제없는' 라이선스인데 조합이 문제가 된다.
셋: 선언과 실제의 불일치. 패키지 메타데이터는 MIT를 선언하는데 내부에 GPL 파일이 섞여 있다——업스트림 작성자 스스로 남의 코드를 복사한 경우다. 매니페스트 수준 도구는 선언을 신뢰하므로 이런 충돌은 파일과 스니펫의 실체 대조로만 발견된다. 드문 일이 아니다. 대형 다중 언어 프로젝트에서 선언 대 실제의 괴리율은 매니페스트만의 감사 결론을 무의미하게 만들기에 충분하다.
넷: 듀얼 라이선스 선택 기록의 부재. MySQL 클라이언트 라이브러리나 Qt 같은 듀얼 라이선스(GPL/상용) 컴포넌트는 어느 라이선스로 배포하는지 명시적 의사결정과 기록이 필요하다. 기록이 없으면 감사는 가장 엄격한 해석——대개 GPL——을 기본값으로 적용한다.
다섯: 약한 카피레프트의 경계 파괴. LGPL 컴포넌트는 안전하게 쓸 수 있지만 정적 링크, 소스 수정 후 비공개, 코드를 추출해 자기 모듈에 인라인하는 행위는 '라이브러리 경계'를 뚫어 약한 전염을 실질 의무로 격상시킨다.
탐지의 엔지니어링: 3층 단계 접근
1층, 매니페스트 해석: 의존성 선언을 읽어 컴포넌트와 선언 라이선스의 기준선을 빠르게 세운다. 무료 CleanSource SCA 커뮤니티 에디션으로 충분하다. 2층, 파일·스니펫 수준 검증: 소스 자체에 라이선스 텍스트 인식, 저작권 헤더 해석, 코드 지문 대조를 수행해 '선언 밖'의 실체를 찾아내고 선언과 실제의 일치를 검증한다. 이는 스니펫 수준 탐지를 요구한다. 3층, 충돌 판정: 라이선스 호환 매트릭스와 배포 형태(대외 납품/SaaS/내부 사용)를 기반으로 충돌 항목을 자동 계산하고 심각도별로 출력한다.
핵심 설정은 배포 형태를 판정의 입력으로 삼는 것이다. 같은 AGPL 컴포넌트라도 사내 도구에서는 저위험, SaaS에서는 치명적이다. 배포 형태를 떠난 충돌 논의는 오탐 아니면 누락이다.
4단계 대응 플레이북
탐지 후에는 비용이 낮은 순서로 진행한다. 교체(동일 기능의 관용형 라이선스 대체재. 도구가 후보를 추천하는 경우가 많다), 격리(프로세스 분리, 동적 링크, 네트워크 인터페이스 호출로 전염 경계를 제품 밖에 둔다. 격리 유효성은 아키텍처 리뷰로 확인한다), 이행(라이선스 요구대로 해당 부분을 공개하고 고지 파일을 첨부한다. 비핵심 모듈 공개 비용이 교체보다 쌀 때도 있다), 상용 라이선스 확보(듀얼 라이선스의 상용 옵션 구매 또는 권리자와의 협상).
모든 대응 결정은 대장에 기록한다. 어떤 컴포넌트, 무슨 충돌, 어떤 조치, 누구의 승인——이 기록이 고객 실사와 수출 인증에서 당신의 증거 체인이 된다.
마지막 경험칙 하나
라이선스 충돌 거버넌스가 가장 비싸지는 시점은 '납품 2주 전 시작'이다. 3층 탐지를 CI에 심어 충돌이 들어온 그날 차단하면, 대응 비용은 납품 전 벼락치기의 10분의 1이다. 컴플라이언스는 감사 이벤트가 아니라 상시 열려 있는 게이트다.
