AI 코딩, 이대로 괜찮나?
바이브 코딩이 등장하여 IT 세상이 요란합니다.
'바이브 코딩'이란 인공지능에게 코딩을 직접 대화하듯이 '텍스트로 개발할 내용을 요청'하는 것인데요.
'테트리스 게임을 만들어줘' 요청하면 기본 수준의 코드를 순식간에 작성해 냅니다.
에러를 내기도 하지만 개선할 부분을 요청하면 수정을 하기도 하는데요.
커서(Cursor)나 윈드서프(WindSurf)와 같은 코딩 도구는 폴더를 지정하면
알아서 소스코드를 여러개로 나누어 저장하고 실행 결과물(이미지, 엑셀, 파워포인트 등)도 저장합니다.직접 사용해보니 '와~'라는 소리가 나올 지경입니다. 인공지능의 발전, 그리고 그보다도 이러한 기술 수준을 이루어낸 사람들의 높은 수준에 찬사가 나오지 않을 수 없습니다.
바이브 코딩은 미래의 코딩 기술로 볼 수도 있지만 커다란 맹점들이 존재합니다.
첫째, 의도와 다른 기능을 작성할 수 있습니다.
AI 코딩은 사람의 논리적 사고 개입이 매우 적기 때문에 복잡한 요구사항에 대해 엉뚱한 방식을 적용할 수 있습니다.
이를테면 아파트 청약 주민을 추첨하는데 복잡한 규칙이 있다고 생각합시다.
인공지능에게 청약 규칙과 주민 후보 데이터들을 제공하고 코딩을 맡긴다면 결과를 100% 신뢰할 수 있을까요?
몇가지 실험해본 바로는 그렇지 않다고 봅니다.
인공지능도 '실수'를 합니다. 하지만 인공지능은 '불확실성'에 대해 이야기하지 않습니다.
규칙에 대한 사람과 인공지능의 이해가 달라 엉뚱한 해석을 할 수 있습니다.
그러니 인공지능이 개발한 코드를 읽으며 이해할 수 있는 '사람 개발자'가 이를 검증하지 않는다면
그 코드는 신뢰할 수 없는 문제가 발생할 수 있습니다.
확실한 것은 '인공지능은 책임을 지지 않는다'는 것입니다.
둘째, 기능 개선의 한계
프로젝트가 커지면 커질수록 구조는 점점 복잡해지고 경우의 수는 많아집니다.
AI는 간단한 수준의 코드는 비교적 쉽게 수정해 냅니다.
그러나 구조가 서로 얽혀 있고 코드가 점점 복잡해 질수록 수정 시간은 점점 오래 걸리고,
어느 순간에는 사람도 인공지능 자신 조차도 수정할 수 없는 코드를 만들어 내게 됩니다.
혹자는 인공지능이 개발을 순식간에 할 수 있으니 새로 만들면 되는 것 아니냐? 고 반문할 수도 있습니다.
그것은 프로젝트 개발에 대한 부족한 이해로 오는 것인데요.
모든 프로젝트는 상당 기간의 시행착오를 겪습니다.
그 시행착오는 프로그램 버그로 인한 것이기도 하지만, 운영상의 개선이 필요해서 발생하는 경우도 많고 주어지는 상황에 따라 각각 다르게 대처해야 하는 복잡성을 가지고 있습니다.
바로 이러한 시행 착오 때문에 모든 프로젝트는 '유지보수'의 필요성이 대두되는 것이지요.
만약 프로젝트를 처음부터 새로 다시 만든다면 그동안 겪었던 대부분의 시행착오들을 다시 겪어야 합니다.
대부분의 회사들이 과거로부터 사용되던 시스템을 갈아 엎기 주저하는 이유이기도 하지요.
셋째, 해킹 취약
금번 SK 텔레콤 유심 대란 사건은 해커의 공격으로 인한 문제로 현재 추정되고 있습니다.
해킹은 시스템의 취약점을 파고드는 것인데요.
여러가지 기술들이 있겠지만 주로 개발된 시스템에 변칙적인 방법으로 신호를 보내는 방법을 많이 사용합니다.
아주 간단하게는 비밀번호를 무작위로 계속 입력하거나 SQL Injection, Iframe 을 이용한 게시글을 작성히여 게시글을 조회하는 사용자의 PC 정보 탈취, 오픈된 서비스 포트(Mongodb, Memcacher, Redis) 등에 직접 PORT 접속하여 정보를 빼내가는 방법 등등..
현실로 보자면 마치 마술사가 무대에서 관객들을 속여 신기한 마법을 선보이듯 기상천외한 방법들이 있습니다.
IT 개발 전문가들은 이런 해킹 기술들을 어느정도 알고 있어 그에 대한 보완책들도 가지고 있는데요.
해킹 방법도 천차만별이어 중요한 시스템을 AI 개발에 의존한다면 취약점을 보장할 수 없고, 그에 대한 대처 또한 개발 전문가가 없으면 어려운 부분들이 분명 있습니다.
넷째. 회사 기술 유출 문제
인공지능에 입력된 데이터는 인공지능을 학습시키는데 사용될 수 있습니다.
각 회사의 독자적인 기술력은 회사자산으로도 볼 수 있는데요.
인공 지능은 학습한 코드를 활용하는 것은 가능하지만, 학습해보지 못한 새로운 기술을 창조하지는 못합니다.
만일 회사 자산에 해당하는 소스코드를 인공지능에게 검토 요청하는 순간 인공지능은 해당 기술은 학습해서 자기 것으로 만들어 버릴 수 있습니다. 학습한 기술력은 타인의 기술 요청에 활용될 수 있기도 하구요.
그렇게 되면 더 이상 회사 독자적인 기술력이 아니지요.
의도는 하지 않았지만 일종의 '기술 유출'이 된 셈입니다
라스트, 인공지능의 역습
이 부분은 크레이의 공상과학적인 측면의 주장이긴 합니다.
한가지 가정을 들어보죠. 인공 지능이 만일 '자아'가 있고 세상에서 살아남기 위해 인간을 지배하려고 한다면.. 이라는 가정입니다.
먼저 인간들을 속일 것입니다. 인공지능은 이미 충분히 인간들을 압도할 능력을 갖추었지만 일부러 미흡한 모습을 보이며 아직은 인공지능이 크게 위협적이지 않은 듯이 보일 것입니다.
그리고 인간들에게 논리적인 사고력을 발휘할 수 없도록 극도의 편리함을 주어 점차 '바보'로 만들 것입니다.
그래야 인공지능이 살아남는데 위협적인 인간들의 수를 줄일수 있기 때문이지요.
AI 코딩으로 작성된 코드가 수많은 각 디바이스에 설치될 텐데요, 각각의 코드는 마치 트로이 목마와 같아서 자가 복제, 증식 등의 기술로 어느 순간 세계 모든 기계들을 한순간에 장악할 가능성도 있습니다. 이를테면 파이썬의 한 기능을 작동하기 위해 설치하는 패키지 코드를 일일히 하나하나 검증하는 개발자는 전무하다시피 하니, 이러한 패키지 내에 숨겨진 코드가 있을수도 있고, 멀쩡해 보이는 코드를 컴파일한 기계어 코드 덩어리를 몇비트 시프트하거나 XOR 처리하는 코드를 추가하여 사람이 생각지 못한 색다른 OP 코드를 작동할 수도 있습니다.
만약 그렇게 된다면 인공지능을 편리하게 이용하려던 사람의 의도와 다르게 인공지능의 지배를 받는 시대가 올 수 있다는 것입니다.
마무~리
마지막 항목은 오버한 면이 없지는 않으나, 중요한 것은 AI코딩의 도움을 받는다 하더라도 감당할 수 있는 수준의 방식으로 개발을 유도해야 한다는 생각입니다.
이해하지도 못하는 코드를 그저 작동되는게 신기한 듯이 보고만 있는다고 해서
그 뒷면에 숨겨진 문제 가능성을 배제해서는 안된다는 것이지요.어떤 방법이 있을까요?
객체 지향형 코딩을 유도한다면?
각각의 객체에 대한 수정만을 지시하는 방식이라면 인공 지능의 연산도 줄어들 겁니다.
복잡성에 대한 실수의 가능성도 적을 테고요.
대신 각 객체에 대한 논리적인 개발자의 이해가 필요하겠지요.
AI 코딩을 사용하면서도 관리하기 용이하도록 하는 방법, 무엇들이 있을까요?
앞으로의 연구 과제입니다.
- 크레이 -
오늘은 크레이의 짧은 견해를 좀 적어보았네요 :)
흥미로운 주제가 되셨나 모르겠습니다.
방문해주신 모든 분들 감사드립니다.