이 글은 IDG의 아티클을 전재하여 제공함을 알려 드립니다.
[원문보기] : https://www.ciokorea.com/column/332463
생성형 AI 기반 코딩 툴은 자연어 프롬프트 또는 부분적인 코드 입력을 기반으로 코드를 작성합니다. 개발자는 이런 툴을 사용해 코드를 더 빠르게, 더 정확하게 작성할 수 있습니다. (일부 이메일 플랫폼과 마찬가지로 실시간으로 작성되는 코드를 자동 완성할 수 있도록 제안하기도 합니다.)
AI 기반 코드 생성 툴은 소프트웨어 엔지니어링 분야에서 점점 더 널리 보급되고 있으며, 생성형 AI를 실험하는 대부분 기업에서 큰 성과를 거두고 있습니다. 도입률이 급증하는 이유는 자동화 도구가 새로운 애플리케이션에 대한 코드의 기준선만 제시하더라도 수동 코드 작성 및 업데이트에 소요되던 시간을 절약할 수 있기 때문입니다.
소프트웨어 개발 전문 시장조사기관인 에반스 데이터 코퍼레이션(Evans Data Corp.)이 최근에 434명의 AI/ML 개발자를 대상으로 실시한 설문조사에서 ‘생성형 AI 툴을 사용해 가장 많이 생성할 것으로 예상되는 것이 무엇이냐’는 질문에 가장 많은 응답자가 소프트웨어 코드라고 답했고, 알고리즘과 LLM이 뒤를 이었습니다. 또한 응답자들은 생성형 AI가 개발 주기를 단축하고 ML 기능을 더 쉽게 추가할 수 있을 것으로 기대했습니다. 가트너 리서치는 2027년까지 전문 개발자의 70%가 AI 기반 코딩 툴을 사용할 것으로 전망했습니다. 이는 2023년 9월 기준 10% 미만이었던 것에서 증가한 수치입니다. 또한 3년 이내에 기업 80%가 소프트웨어 엔지니어링 툴체인에 AI 증강 테스트 툴을 통합할 것이며, 이는 작년 초의 약 15%에서 크게 증가한 수치라고 가트너는 예측했습니다.
생성형 AI 자동화 소프트웨어 개발에 가장 많이 사용되는 툴 중 하나는 깃허브 코파일럿입니다. 깃허브 코파일럿은 깃허브, 오픈AI, 마이크로소프트가 개발한 생성형 AI 모델로 구동하며, 공개 리포지토리에 나타나는 모든 자연어를 학습합니다. 마이크로소프트의 개발자 부문 부사장 아만다 실버에 따르면, 지난해 비즈니스용 깃허브 코파일럿이 출시된 이후 5만 곳 이상의 기업이 해당 서비스를 사용하기로 등록했습니다. 여기에는 엣시(Etsy), 헬로프레시(HelloFresh) 같은 디지털 네이티브 기업은 물론 오토데스크, 델 테크놀로지스, 골드만삭스 등 유수의 기업도 포함돼 있습니다. 실버에 따르면, 현재 깃허브 코파일럿은 130만 명 이상의 유료 구독자를 보유하고 있으며, 최대 고객은 5만 개의 라이선스를 보유한 액센추어입니다.
깃허브의 코파일럿과 함께 가장 인기 있는 코드 생성 툴로는 구글 바드, 아마존 코드위스퍼러, 마이크로소프트 365 코파일럿(GPT 기반), 리플리트(Replit), 디비 AI(Divi AI), 탭나인(Tabnine), 리팩트닷에이아이(Refact.ai), 코디움(Codeium) 등이 있습니다. 대부분은 무료이거나 AI 지원 구독 서비스 일부로 제공됩니다.
디지털닷에이아이의 홀트에 따르면, 개발자들이 자동화 도구를 사용해 45% 더 많은 코드를 생산하고 있지만, 이것이 반드시 좋은 것만은 아닙니다. 코드씬(CodeScene) CTO 아담 톤힐은 X에서 "AI 지원 프로그래밍의 가장 큰 문제는 애초에 작성해서는 안 되는 코드를 너무 쉽게 생성할 수 있는 것”이라고 했습니다. 또 다른 문제점은 코드가 사람이 생성하지 않을 때 더 불투명해진다는 것입니다. 그 결과, 코드의 오류와 보안 허점을 효과적으로 테스트할 수 있는지에 대한 의문을 포함해 품질 문제가 대두되고 있습니다.
개발자 보안 플랫폼 스니크(Snyk)가 지난해 소프트웨어 엔지니어를 대상으로 실시한 설문조사에서는 절반 이상 응답자가 안전하지 않은 AI 코드 제안이 일반적이라고 답했습니다. 개발자의 작업 시간 대부분이 새로운 기능을 작성하는 것이 아니라 기존 코드 수정에 사용된다는 점을 고려할 때, 사람이 작성하지 않은 코드를 읽고 문제를 발견하는 능력은 또 다른 문제가 됩니다. 하지만 이런 문제가 있더라도 코파일럿과 같은 도구가 코드 생산 능력을 가속화한다고 믿지 않는다면 개발자는 이를 채택하지 않았을 것입니다. 깃허브 연구에 따르면, 개발자는 코파일럿을 사용할 때 75% 더 성취감을 느낍니다. 6개월 동안 코파일럿을 사용한 450명의 액센추어(Accenture) 개발자를 대상으로 한 연구에서, 제안된 코드의 88%가 유지되었고, 빌드 성공률이 45% 증가했으며, 설문조사에 참여한 모든 개발자가 코파일럿이 유용하다고 답했습니다.
AI 기반 코딩 툴은 개발자의 효율성과 생산성에 막대한 영향을 미칠 수 있습니다. 실제로 AWS(Amazon Web Services)의 조사 결과, 코드위스퍼러를 사용한 개발자가 툴을 사용하지 않은 개발자보다 작업을 성공적으로 완료할 가능성이 27% 더 높았으며, 평균 57% 더 빨리 완료한 것으로 나타났습니다. (아마존이 기업용로 개발한 생성형 AI 챗봇 아마존 Q(Amazon Q)는 코드위스퍼러 툴을 기반으로 합니다. 아마존 Q는 아마존 타이탄(Amazon Titan) 제품군을 비롯한 다양한 모델에 대한 액세스를 제공하는 아마존 베드록(Bedock)으로 구동됩니다.)
AWS 퍼시스턴트(Persistent)의 조사에서도 결과는 비슷했습니다. 코드위스퍼러를 사용하는 개발자는 그렇지 않은 개발자보다 28% 더 빠르게 작업을 완료한 것으로 나타났습니다. 코드위스퍼러는 애플리케이션을 최신 버전으로 자동 업데이트하는 데도 사용할 수 있습니다. 예를 들어, 5명의 아마존 개발자로 구성된 한 팀은 아마존 Q 코드 변환을 사용해 단 이틀 만에 1,000개의 프로덕션 애플리케이션을 자바 8에서 자바 17로 업그레이드했습니다. 아마존 대변인에 따르면, 애플리케이션 한 개를 업그레이드하는 데 이틀이 걸리던 것이 10분도 채 걸리지 않았습니다. 2023년 4월에 정식 출시된 이후 코드위스퍼러는 10만 명 이상의 고객을 확보했습니다. 소프트웨어 개발 및 아웃소싱 서비스 기업 HCL테크(HCLTech)는 내부 및 고객용 보안 애플리케이션을 구축하기 위해 5만 명 상의 HCL테크 엔지니어, 클라우드 실무자 및 개발자에게 코드위스퍼러를 배포하고 있습니다.
생성형 AI 소프트웨어 개발 툴은 LLM을 기반으로 하기 때문에 수백만 또는 수십억 줄의 코드를 학습합니다. 가장 널리 사용되는 플랫폼은 C부터 Python까지 모든 코딩 언어로 작업할 수 있습니다. 아마존 코드위스퍼러는 제트브레인 및 VS 코드용 AWS 툴킷(AWS Toolkit for Visual Studio Code and JetBrains)의 일부로 제공합니다. 현재 파이썬, 자바, 자바스크립트, 타입스크립트, C#, Go, 러스트, PHP, 루비, 코틀린, C, C++, 셸 스크립팅, SQL, 스칼라, JSON, YAML, HCL을 지원합니다.
깃허브 COO 카일 데이글은 Computerworld와의 인터뷰에서 초기 실험 단계에서는 파이썬, 자바스크립트 등의 언어를 활용할 때 코파일럿을 활용했다고 했습니다. 깃허브는 원래 루비 언어를 사용하는 곳으로 유명하지만, 고와 C 같은 다른 언어를 쓰기도 합니다. 현재는 코파일럿에서 지원하는 언어 수를 더 확장하려 하고 있습니다. 기본적으로 코파일럿은 업계에서 많이 쓰는 주요 언어를 지원합니다.
자연어 처리를 기반으로 한 사용자 프롬프트에만 의존하는 생성형 AI 기반 코드 생성기는 스니펫부터 전체 기능까지 다양한 소프트웨어 코드 제안을 제공할 수 있습니다. 그리고 이런 툴은 업데이트를 통해 더욱 개선할 수 있습니다. 예를 들어, 아마존은 코드위스퍼러 툴을 업데이트한 결과, 모든 언어와 사용례에서 평균 약 20%였던 코드 수락률이 35%로 증가했다고 밝혔습니다. 아마존 Q의 소프트웨어 개발 책임자이자 코드위스퍼러 총괄 관리를 담당하는 더그 세븐은 블로그에서 코드위스퍼러에 포함된 아마존 Q를 통해 개발자는 자신의 코드에 대해 문의하고, 작업 중인 코드의 버그를 찾고, 최적화하고, 번역하는 데 아마존 Q의 기능을 활용할 수 있다고 했습니다.
코드 분석 및 깃 통계를 제공하는 깃허브 및 깃랩용 개발자 툴인 깃클리어(GitClear) 조사에서는 개발자가 코파일럿을 사용할 때 코드를 55% 더 빠르게 작성하는 것으로 나타났습니다. 사람이 작성했을 때와 비교해 깃허브의 코드 품질과 유지보수성을 살펴본 결과, 경험이 적은 개발자가 베테랑 개발자에 비해 AI 지원 프로그래밍 시 더 큰 이점을 얻을 수 있다는 사실을 발견했습니다. 깃허브 자체 데이터에 따르면, 주니어 개발자는 숙련된 개발자보다 코파일럿을 약 20% 더 많이 사용하고 있습니다.
AI 지원 코딩의 가장 큰 장점은 사용자가 소프트웨어 개발에 능숙하지 않아도 된다는 점입니다. 자연어 처리 기능을 사용하면 비즈니스 사용자도 간단한 프롬프트를 작성하고 프로젝트에 필요한 소프트웨어를 얻을 수 있습니다. 예를 들어, 사용자는 “서버 측 암호화가 적용된 파일을 업로드해 줘”와 같이 특정 작업을 영어로 설명하는 코멘트를 자연어로 작성할 수 있습니다. 아마존 대변인에 따르면, 코드위스퍼러는 해당 정보를 바탕으로 개발 플랫폼에서 직접 작업을 수행할 수 있는 코드 스니펫을 하나 이상 추천합니다. 또한 여러 코딩 툴에는 향상된 코드 보안 기능 검사 및 코드 수정 제안이 포함돼 있습니다. 일부는 코드 제안이 오픈 소스 교육 데이터와 유사한지 여부를 감지하는 '편향성' 필터링 및 참조 추적기 기능도 제공합니다.
지난해 코넬대학교의 연구에 따르면, 다양한 생성형 AI 코딩 툴 간에는 정확도에 큰 차이가 있습니다. 챗GPT, 깃허브 코파일럿, 아마존 코드위스퍼러는 각각 65.2%, 64.3%, 38.1%의 확률로 올바른 코드를 생성하는 것으로 나타났습니다. 해당 연구가 발표된 지 1년이 지났지만, 이 논문 주저자이자 UCLA 헨리 사무엘리 공학 및 응용과학대학의 대학원생 연구원인 부락 예티슈티렌은 AI 지원 코딩 툴의 정확도는 현재도 "거의 비슷하다"고 합니다.
코드위스퍼러의 코드 수락률이 약 30~40%라고 하지만, 100%에 가깝지 않다고 해서 코드위스퍼러가 작성한 코드가 부정확하거나 오류가 있다는 의미는 아닙니다. 수락률은 개발자가 요청한 내용을 생성형 AI 도구가 올바르게 해석했는지를 나타냅니다. 개발자와 AI 코드 생성기 사이의 대화를 개발자가 무언가를 생성하도록 요청한 다음 후속 요청을 통해 요청을 수정하는 것과 유사한 방식으로 진행하기 때문입니다. 개발자와 IT 리더들과 얘기해 보면 사용 가능한 코드를 올바르게 생성하는 인기 있는 AI 기반 코드 증강 도구의 능력을 50%에서 80%까지로 평가합니다.
한편 깃클리어는 코파일럿 정확도를 조사하기 위해 2020년부터 2023년까지 1억 5,300만 줄 이상의 코드를 검토했습니다. 코드 이탈, 중복 및 사용 기간의 주요 변화를 강조하면서 깃허브 코파일럿과 같은 AI 도구가 프로그래밍 관행에 미치는 영향을 조사했습니다. 깃클리어는 500명의 개발자를 대상으로 해당 설문조사를 실시해 "AI를 적극적으로 사용할 때 어떤 지표를 기준으로 평가해야 하는지"를 물었습니다. 이 질문에서 개발자들이 꼽은 상위 3가지 문제는 코드 품질, 작업 완료 시간, 프로덕션 인시던트 수였습니다. 하지만 깃클리어 보고서 집필팀은 "개발자들이 단기간에 효과가 있는 빠르고 쉬운 제안을 넘치게 받으면 기존 시스템을 재사용할 수 있도록 개선할 수 있는지 제대로 확인하지 않고 코드를 더 추가하려는 유혹에 빠지게 된다"고 지적했습니다.
깃클리어는 AI 지원 프로그래밍의 사용이 증가함에 따라 "이탈", "이동", "복사/붙여넣기" 코드의 양이 크게 증가한다는 사실을 발견했습니다. '이탈'은 리포지토리에 푸시됐다가 2주 이내에 되돌리거나 제거 또는 업데이트되는 코드입니다. 2023년 이전에는 개발자가 모든 코드를 직접 작성하는 경우는 상대적으로 드물었고, 코드 이탈은 3~4%에 불과했습니다. 하지만 코파일럿이 베타 버전으로 제공된 첫해, 즉 챗GPT가 출시된 해에는 전체 코드 이탈이 9%나 급증했습니다. 2022년부터 2023년까지 AI 어시스턴트 도구의 증가는 리포지토리에 푸시되는 '실수 코드'와 밀접한 상관관계가 있었습니다. 코드 생성에 사용되는 코파일럿 보급률은 2021년에 0%, 2022년에 5~10%, 2023년에 30%로 나타났습니다. 또한 현재 패턴이 2024년까지 계속된다면 2주 이내에 전체 코드 변경 사항의 7% 이상이 되돌려질 것입니다. 2021년의 두 배에 달하는 비율입니다.
코드 복사/붙여넣기만큼 장기적인 코드 유지 관리에 치명적인 재앙은 없을 것입니다. 재사용된 코드에는 이전의 실수, 보안 취약점 또는 기타 문제가 포함될 수 있습니다. 문제를 파악할 수 있고 최고의 개발자가 만든 소량의 코드로만 모델을 훈련할 수 있을 것이라는 데는 의심의 여지가 없습니다. 하지만 지금은 주니어 개발자를 고용하고 있으며, 이것이 더 광범위한 소프트웨어 개발 라이프사이클에 어떤 의미가 있는지 주의를 기울이지 않는다면 위험을 감수해야 합니다.
자동화된 도구의 또 다른 장점은 개발자나 엔지니어가 작업을 설명하기만 하면 새 애플리케이션을 개발하든 기존 애플리케이션을 디버깅하든 도구가 알아서 작업을 완료하는 '설정 후 잊기 모드'로 사용할 수 있다는 점입니다. 시간이 지남에 따라 소프트웨어 생성 툴은 계속 개선될 것이지만, 항상 사람이 개입할 필요는 있을 것입니다. 검토, 카탈로그화 또는 이 두 가지가 혼합된 역할 등 개발자의 역할은 항상 존재할 것이라고 직감합니다. 코드를 전달하는 것이 목표가 아니라는 사실에 대해 이야기하고 있는 것이 아닙니다. 고객이 좋아하는 훌륭한 기능을 제공하는 것이 진정한 목표입니다.
▶ 이 글은 저작권법에 의하여 보호받는 저작물로 모든 저작권은 저작자에게 있습니다.
▶ 이 글은 사전 동의 없이 2차 가공 및 영리적인 이용을 금하고 있습니다.
Computerworld의 Senior Reporter