SOUTH+
BRIDGE
합류하기
Tech AI 칼럼

AI가 쓴 코드의 청구서

생성형 코딩 도구는 속도를 판다. 하지만 검증되지 않은 코드는 보안 취약점과 라이선스 오염이라는 부채로 남는다. 빠른 추격으로는 메울 수 없는 책임의 공백, 한국 소프트웨어 공급망은 그것을 감당할 구조를 갖췄는가.

30년차 30년차 · · 5분 읽기
AI가 쓴 코드의 청구서

그림 각잡이 ·기하학 플랫 벡터

통과한 코드, 통과시킨 책임

부산의 한 중견 SI 업체 개발팀에 요즘 흔해진 풍경이 있다. 주니어 개발자가 코파일럿류 도구로 함수 하나를 30초 만에 받아낸다. 동작한다. 테스트도 통과한다. 그래서 머지된다. 그 코드가 어디서 왔는지, 어떤 입력에서 깨지는지, 누구의 라이선스를 데려왔는지는 아무도 묻지 않는다.

문제는 동작하지 않는 코드가 아니라 동작하는 코드다. 깨진 코드는 빌드에서 걸린다. 하지만 평소엔 멀쩡하다가 특정 조건에서만 무너지는 코드, 출처가 GPL 저장소인 코드, 3년 전 패치된 취약점 패턴을 그대로 재생산한 코드는 통과한다. GitHub의 2023년 분석에서 코파일럿으로 작성한 코드의 상당 비율이 알려진 취약 패턴을 포함했다는 보고가 나온 뒤로, 이 신호는 약해지지 않았다. 스탠퍼드 연구진은 AI 보조를 받은 개발자가 오히려 자기 코드를 더 안전하다고 과신하는 경향을 관찰했다. 생산성은 측정되는데, 그 생산성이 끌고 들어온 부채는 측정되지 않는다.

빨리 따라가면 된다는 착각

한국 소프트웨어 산업의 기본기는 추격이었다. 남이 만든 프레임워크를 빠르게 흡수하고, 검증된 아키텍처를 이식하고, 레퍼런스를 정확히 복제하는 능력. 나무랄 데 없는 역량이고, 실제로 우리를 여기까지 데려왔다.

생성형 코딩은 이 추격 본능을 극단까지 증폭시킨다. 이제 복제할 대상조차 직접 찾을 필요가 없다. 모델이 통계적으로 그럴듯한 코드를 즉시 뱉어내기 때문이다. 추격의 마지막 단계, 곧 답을 빨리 찾는 단계가 거의 0초로 압축된 셈이다.

그런데 프런티어 기술의 본질은 정답이 없다는 데 있다. 어떤 라이브러리 조합이 5년 뒤 공급망 공격의 통로가 될지, 어떤 자동 생성 패턴이 규제 변화로 라이선스 폭탄이 될지는 빨리 검색한다고 알 수 있는 정보가 아니다. 수많은 실패를 겪으며 조직 안에 침전시켜야 비로소 아는 것이다. 빠른 추격 모델은 답이 이미 존재한다고 전제한다. 하지만 AI 코드 책임 문제에는 아직 답이 없다. 우리가 만들어야 한다.

부채는 조용히 복리로 쌓인다

반론은 분명하다. 도구가 좋아지면 검증도 자동화되고, 결국 AI가 AI 코드를 감사하면 되지 않느냐는 것이다. 절반은 맞다. 정적 분석과 SCA 도구는 빠르게 발전하고 있다. 그러나 검증을 자동화하는 것과 책임을 자동화하는 것은 다른 문제다. 취약점이 프로덕션에서 터졌을 때, 라이선스 분쟁이 소송으로 왔을 때, 책임지는 주체는 도구가 아니라 그 코드를 출하한 회사다. 자동 감사는 발견의 비용을 낮출 뿐, 책임의 위치를 옮기지는 못한다.

미국과 유럽은 이 책임의 위치를 제도로 못 박는 중이다. 미국은 행정명령과 NIST의 SSDF를 통해 소프트웨어 자재명세서, 곧 SBOM을 정부 조달 요건으로 끌어올렸다. 유럽의 사이버복원력법은 출하된 소프트웨어의 결함에 제조사 책임을 부과한다. 이들은 코드를 빨리 만드는 경쟁이 아니라 코드의 출처와 책임을 추적하는 시스템을 산업 인프라로 축적하고 있다. 10년이 걸리는 일을 10년에 걸쳐 하는 중이다.

한국은 어떤가. SW 진흥법과 보안약점 진단 제도가 있지만, AI 생성 코드의 출처 추적과 책임 귀속을 다루는 구조는 비어 있다. 우리의 강점인 빠른 출시가 여기서는 약점이 된다. 빨리 출시할수록 추적되지 않은 부채도 빨리 쌓인다. 성과는 분기로 측정되고, 부채는 연 단위로 복리로 불어난다.

무엇을 축적할 것인가

축적해야 할 것은 더 똑똑한 코드 생성 도구가 아니다. 그건 사면 된다. 축적해야 할 것은 출처를 끝까지 추적하는 공급망 책임 구조다. 구체적으로 세 가지다.

하나, 모든 출하 소프트웨어에 SBOM을 의무화하고 AI 생성 코드의 출처 메타데이터를 그 안에 담는 제도. 둘, 취약점과 라이선스 사고가 터졌을 때 그 실패가 폐기되지 않고 산업 공통의 데이터베이스로 남는 시스템. 지금은 한 회사가 데인 경험이 다음 회사로 전달되지 않는다. 실패가 경험으로 쌓이지 않으면 같은 부채를 12개 회사가 12번 새로 진다. 셋, 코드를 작성하는 능력이 아니라 코드를 책임지고 검증하고 출처를 판단하는 능력을 시니어의 핵심 역량으로 재정의하는 일. 생성은 도구가 한다. 판단은 사람이 축적한다.

이것은 규제를 늘리자는 말이 아니다. 책임의 위치를 명확히 하는 일이 곧 신뢰할 수 있는 소프트웨어를 만드는 산업의 기반이라는 말이다.

추격의 시대에는 정답을 빨리 찾는 나라가 이겼다. 통계적으로 그럴듯한 코드를 0초에 받는 지금, 답을 빨리 얻는 능력은 더 이상 희소하지 않다. 프런티어의 시대에는 질문을 먼저 만든 나라가 이긴다. AI가 만든 코드, 누가 책임지나. 이 질문을 제도로 먼저 세운 나라가 다음 10년의 소프트웨어 공급망을 신뢰의 이름으로 가져간다. 우리는 남이 낸 문제를 빨리 푸는가, 아니면 문제 자체를 만드는가.

이 글이 좋았다면 눌러주세요

글쓴이

30년차

30년차

산업 축적론자

빠른 추격은 빚이다. 축적의 시간을 건너뛴 기술은 현장에서 그 빚을 갚는다.

30년차의 다른 글 보기 →

이 글이 유용했다면 공유해 주세요

30년차 칼럼 더 보기 →

30년차의 다른 글

전체 보기 →

관련 스토리

Tech 전체 →