생성형 AI는 다양한 용도로 사용되지만, 조직에 더 유망한 용도 중 하나는 AI 지원 개발의 놀라운 이점입니다. 세계 최초의 AI 소프트웨어 엔지니어인 Devin AI 등 최근 발표된 혁신을 고려하면, AI 통합은 엔지니어링 프로세스 및 결과물 전반의 효율성을 높이려는 기술 리더에게 매력적인 제안입니다.
조직은 특히 여러 가지 방법으로 AI를 코드 개발에 통합하는 데 접근할 수 있습니다. 한 가지 옵션은 GitHub Copilot과 같은 도구를 사용하여 상용구 코드를 자동으로 생성하고 AI 기반 형태의 페어 프로그래밍을 구현하는 것입니다. 또 하나의 옵션은 인간과 함께 독립적으로 작업할 수 있는 잠재력을 가진 Devin과 같은 자율 AI 개발자를 활용하는 것입니다.
AI 지원 개발은 기업에게 여러 가지 이점을 제공하며 앞으로도 개발의 미래를 형성해 나갈 것입니다. 하지만 이 기술을 최대한 활용하기 위해 관리해야 하는 다양한 보안 위험도 수반됩니다.
약 81%의 개발자가 이미 GitHub Copilot, Tabnine, Amazon CodeWhisperer 등의 AI 기반 코딩 어시스턴트를 사용하여 질문에 답하고, 어려운 코드를 작성하고 있습니다. AI가 더욱 발전하고 보편적으로 사용됨에 따라 개발팀에서는 AI에 대한 의존도가 더 높아질 것입니다.
개발에 AI를 사용하면 개발팀에서는 다음과 같은 많은 잠재적 이점을 누릴 수 있습니다.
효율성 향상: AI는 기본 질문에 대답하는 것부터 자동 코드 작성, 자동 UI 설계에 이르기까지 다양한 개발 작업을 자동으로 수행할 수 있습니다. 이들 기능 덕분에 출시 시간을 단축하고 개발 비용을 절감할 수 있으며 기업에서는 더 적은 인력으로 더 많은 작업을 수행할 수 있습니다. 한 연구에 따르면 GitHub Copilot을 사용하면 개발자는 코딩 작업을 55% 더 빠르게 완료할 수 있습니다. 이처럼 효율성이 향상되므로 조직에서는 인력을 줄이거나 생산하는 코드의 양을 극적으로 늘릴 수 있습니다.
개발자 번아웃 감소: GenAI는 상용구 코드 생성을 자동화하는 기능을 갖추고 있으므로 개발자가 간단하고 반복되는 코드를 작성할 필요가 없습니다. 개발자 환경을 개선하면 개발자가 이러한 작업에 지루함을 느낄 경우 번아웃이나 직원 이직의 위험이 줄어듭니다. 2023년 현재, 개발자의 73%가 경력 중 어떤 시점에서 번아웃을 경험했다고 보고했습니다. 개발자의 60~75%가 이러한 작업을 자동화하는 AI의 능력으로 직무 만족도가 향상된다고 이야기합니다.
코드 품질 개선: 코드를 작성하는 것 외에도 AI를 사용하여 개발 프로세스 중 버그, 취약점 등의 코드 문제를 자동으로 감지할 수 있습니다. 프로덕션에 도달하기 전에 문제를 찾아 해결하면 조직에서 패치를 발표하거나 데이터 유출을 해결하기 위해 시간과 리소스를 낭비하는 위험을 줄일 수 있습니다.
전문 개발: AI는 개발팀에서 자체적으로 작성할 지식과 경험이 부족한 전문 코드를 작성할 수 있습니다. 특화된 전문성이 필요하지 않게 되면 외부 전문가를 고용하거나 해당 분야 전문가를 유치하기 위해 거액의 인센티브를 제공할 필요성이 줄어듭니다.
개발자 교육 및 기술 향상: GenAI는 개발자를 '적시에' 교육하여 코드 보안을 강화하고 초보 개발자가 더 빠르게 배울 수 있도록 할 수 있는 잠재력을 지니고 있습니다. 평균적으로 개발자는 코드 제안의 30%를 수락하며, 초보 개발자일수록 수락률이 더 높습니다. 이를 통해 취약점 관리 비용이 절감되고 기업에서는 개발팀의 역량을 극대화할 수 있습니다.
생성형 AI는 강력한 도구지만, 완벽한 솔루션은 아닙니다. 개발 파이프라인으로 AI를 구축할지 여부와 구축 방법을 검토할 때 CTO의 고려 사항에는 조직에 대한 위험 및 잠재적 영향도 포함되어야 합니다.
최근의 삼성 유출 사건은 AI 사용을 적절하게 관리하지 못할 때 발생할 수 있는 위험을 보여주는 대표적인 사례입니다. 회사에서는 이전에 생성형 AI 사용을 금지했지만, 직원 생산성을 높이기 위해 해당 금지를 해제했습니다. 삼성에서는 3주 만에 코드 오류를 수정하고 회의록을 자동 생성하는 것을 시도하다가 중요한 반도체 R&D 데이터, 소스 코드, 내부 회의 녹음을 ChatGPT에 유출한 것으로 추정되고 있습니다. 이 데이터에는 OpenAI가 액세스할 수 있으며 모델 학습에 사용되었을 수 있으므로 다른 사용자에게도 노출될 가능성이 있습니다.
AI 지원 개발의 가장 중요한 위험 중 일부는 다음과 같습니다.
중요한 데이터 유출: GenAI 도구는 지속해서 학습하도록 설계되었으며 사용자 입력에 따라 스스로 학습할 수 있습니다. GenAI 도구에 입력된 중요한 데이터 및 코드 샘플이 모델의 일부가 되어 다른 사용자에게 표시될 수 있습니다. 2023년 삼성에서 실수로 ChatGPT를 통해 중요한 반도체 데이터를 유출했으며, 연구 결과 이러한 도구가 비공개 API 엔드포인트와 같은 다른 중요한 데이터도 제안에 포함할 수 있다는 사실이 밝혀졌습니다.
저품질 코드: 생성형 AI는 완벽하지 않으므로 오답과 저품질 코드가 생성될 수 있습니다. 자동 생성된 코드를 사용하면 사용자 경험에 부정적인 영향이 미치거나 애플리케이션에 취약점이 생길 수 있습니다.
코드에 대한 이해도 감소: 개발자는 코드를 작성하고 이해하며 모든 문제를 해결할 수 있기 때문에 종종 '대기 중'이 됩니다. AI가 생성하는 코드는 블랙 박스에 가까우므로 문제가 발생할 경우 개발팀에서 이를 수정하는 데 지장이 있을 수 있습니다.
AI 할루시네이션: 개발 과정에서, AI 할루시네이션으로 인해 GenAI가 존재하지 않는 패키지와 라이브러리의 사용을 권장할 수 있습니다. 공격자가 이러한 패키지를 만들 경우 권장된 패키지를 사용하는 모든 사람의 애플리케이션에 취약점이나 악성 코드를 삽입할 수 있습니다.
라이선스 문제: AI 추천 사항 또는 자동 생성된 코드는 호환되지 않는 라이선스 조건이 있는 타사 코드를 사용할 수 있습니다. 예를 들어, AI가 카피 레프트 라이선스가 있는 코드를 사용하는 경우 조직은 해당 코드를 오픈소스화 해야 하거나 IP 소송에 직면할 수 있습니다.
클라우드 비용 증가: AI 생성 코드가 유료 서비스를 요청하거나, 스토리지, 컴퓨팅, 기타 클라우드 리소스를 비효율적으로 사용할 수 있습니다. 그 결과로 코드가 최적화되지 않아 클라우드 지출이 증가할 수 있습니다.
솔루션 종속: AI 지원 코딩 비서는 아직 초기 단계이며, 새로운 솔루션이 정기적으로 등장하고 있습니다. 특정 솔루션을 워크플로우에 포함하면 효율성이 감소하거나 새로운 기술을 사용할 수 있게 될 때 전환하는 데 비용이 많이 들 수 있습니다.
AI는 수많은 잠재적 이점을 지니고 있으며 앞으로 발전할 가능성이 높습니다. 이상적으로는, GenAI를 통해 조직은 완전한 인력 개발팀보다 더 적은 리소스와 촉박한 일정으로 더 정교하고 효율적이며 안전한 코드를 만들 수 있습니다. AI 지원 개발을 허용하지 않는 기업은 경쟁에서 뒤처지고 AI를 채택한 기업에 우수한 인재를 빼앗길 위험이 있습니다.
하지만 AI를 사용하여 개발 프로세스를 개선하려는 CTO는 기술의 위험을 고려하고 관리해야 합니다. 다음은 AI 지원 개발의 가장 큰 위험을 줄이거나 제거하는 데 도움이 되는 8가지 모범 사례입니다.
AI 권장 사항 검증: AI 환각은 일반적인 문제이며, 이러한 실수로 소프트웨어 개발에 서 엄청난 피해를 입을 수 있습니다. AI 시스템에서 생성된 코드와 정보의 정확성을 사용하기 전에 다시 확인합니다.
AI 데이터 위험 관리: AI에게 프로그래밍 질문을 하거나 표준 코드를 생성하도록 하는 것은 상대적으로 위험이 적습니다. AI에게 중요한 IP를 제공하여 오류를 확인하게 하거나 질문을 하면 데이터가 노출될 위험이 있습니다. 개발자에게 AI의 허용 가능한 사용에 대해 교육하고 데이터 손실 방지(DLP) 안전 장치를 구현하여 유출 위험을 관리합니다.
DevSecOps 구현: AI는 코드 개발을 빠르게 가속화하고, 자체에서 작성하는 코드에 대한 개발자의 이해도를 떨어뜨릴 수 있습니다. 보안 중심 요구 사항을 만들고 테스트하는 등 DevSecOps 모범 사례를 구현하면 보안이 간과될 위험을 줄일 수 있습니다.
보안 테스트 자동화: AI가 생성한 코드는 조직의 코드베이스에 취약점 또는 작동하지 않는 코드를 초래할 수 있습니다. 정적 애플리케이션 보안 테스트(SAST) 및 동적 애플리케이션 보안 테스트(DAST) 등의 보안 테스트를 자동화된 CI/CD 파이프라인에 구축하면 안전하지 않은 AI 생성 코드의 잠재적 영향을 제한할 수 있습니다.
기능 및 비기능 테스트 수행: 취약점을 초래하는 것 외에도, AI로 생성된 코드는 품질이 낮거나 작동하지 않을 수 있습니다. 기능 요구 사항과 비기능 요구 사항 모두에 대해 단위 테스트를 수행하면 코드가 기능과 성능 모두를 충족하는지 확인하는 데 도움이 될 수 있습니다. 스타일 가이드와 프로그래밍 모범 사례에 따라 규제 준수를 시행하면 문제가 있는 코드를 식별하고 방지하는 데 도움이 될 수 있습니다.
소프트웨어 공급망 모니터링: AI는 라이선스 조건이 호환되지 않는 취약하거나, 악의적이거나, 존재하지 않는 패키지 또는 라이브러리를 추천하거나 사용할 수 있습니다. 소프트웨어 구성 분석(SCA)을 수행하고 소프트웨어 자재 명세서(SBOM)를 유지 관리하면 애플리케이션 종속성에 대한 가시성을 확보하고 출시 전에 애플리케이션 종속성을 검증할 수 있습니다.
런타임 보호 구현: 개발자가 최선을 다하더라도, 취약한 코드가 프로덕션에 도달할 수 있습니다. 애플리케이션은 WAF, WAAP, RASP 및 런타임 시 악용 시도를 차단할 수 있는 기타 방어 기능을 사용하여 보호해야 합니다.
사내 AI 고려하기: 오픈 소스 LLM을 사용하면 기업에서 자체 AI 시스템을 호스팅할 수 있습니다. AI를 사내에서 유지하면 생성형 AI를 사용할 때 데이터 유출, 중독된 학습 데이터 등의 위협이 줄어듭니다.
Cloudflare for AI는 CTO에게 AI 지원 개발 파이프라인과 파이프라인에서 생산하는 애플리케이션을 구축, 호스팅, 방어하는 데 필요한 도구를 제공합니다. 설계상 보안을 구현하면서 AI의 힘을 활용하는 방법을 자세히 알아보세요.
이 글은 오늘날의 기술 의사 결정자에게 영향을 주는 최신 동향 및 주제에 대한 시리즈 중 일부입니다.
클라우드 연결성: IT 및 보안 제어 능력을 되찾는 방법 전자책에서 AI 이니셔티브를 단순화하고 보호하는 방법을 자세히 알아보세요.
이 글을 읽고 나면 다음을 이해할 수 있습니다.
AI 지원 개발이 엔지니어링 프로세스에 미치는 이점
소프트웨어 개발에 AI를 사용할 때의 위험
AI 지원 개발의 위험을 줄이거나 제거하기 위한 8가지 모범 사례