요약: 이번 4편에서는 개발자 관점에서 AI를 장착했을 때 어떻게 파워풀한 퍼포먼스를 낼 수 있을지 알아본 과정을 소개합니다. Google AI 모델 Gemini를 실무에서 활용할 수 있는 다양한 방법(코드 분석, 언어 변환, 테스트 코드 작성, 아키텍처 설계)을 살펴볼 수 있습니다. 특히 이번 컨퍼런스에서 새롭게 발표한 Code Assist가 개발자에게 어떤 도움을 줄 수 있을지, 주요 기능과 함께 확인해 보았습니다.
시작하며
안녕하세요. 카카오페이 서버 개발자 썬입니다. 저는 코어플랫폼에서 계정과 메시지, API-GW를 담당하며 대규모 트래픽 플랫폼을 개발, 운영하고 있습니다. 최근 해외 컨퍼런스 참석이라는 귀중한 경험을 하게 되어 그 후기를 전달하고자 합니다.
지난 4월 회사 동료인 제임스, 데이브, 이든과 함께 Google Cloud Next 2024에 참석했습니다.
한국에서 네이버, 카카오 등에서 주최하는 개발자 컨퍼런스에 참석한 적은 있었지만 Google이라는 어마어마한 기업의 이름을 걸고 진행하는 컨퍼런스에서는 과연 어떤 발표를 할지 궁금했습니다.
첫 미국여행 해외 컨퍼런스 참석이라는 기대 반, 영어로 진행되는 세션을 이해할 수 있을까 하는 걱정 반으로 라스베가스행 비행기에 몸을 실었습니다.
이번 행사의 주제를 한마디로 정의한다면 Google의 AI, Gemini였습니다. 가히 AI 행사라 불러도 될 정도로 Google Cloud에 어떻게 AI를 접목시켰는지에 대한 발표였습니다. 키노트를 들으면서 AI가 IT산업과 개발환경에 매우 가까이 다가왔음을 느꼈고, 작년에 OpenAI가 쏘아 올린 ChatGPT 열풍에도 큰 관심을 갖지 않았던 저를 돌아보니 더 이상 AI를 외면하면 내가 이 산업에서 외면받겠구나 하는 강한 위기감을 느꼈습니다.
그리하여 제가 전달하고자 하는 내용은 AI를 장착한 개발자의 파워풀한 퍼포먼스 내기입니다. 이번 편에서는 Gemini를 실무에서 활용하는 다양한 방법에 대해 고민해 보고 컨퍼런스에서 새롭게 발표한 Gemini Code Assist에 대해 알아봅니다.
개발자에게 AI 이식하기: 호모 프롬프트로의 진화
이번 컨퍼런스 참석을 계기로 AI 진화에 가장 민감하게 대응해야 하는 직업 중 하나는 바로 소프트웨어 개발자가 아닐까 싶었습니다.
AI를 잘 활용하기 위해서는 AI에게 잘 시킬 줄 알아야 합니다. 우스갯소리로 현생 인류는 호모 프롬프트
라고 불리기도 합니다.
프롬프트란 발표나 연극 등을 진행할 때 사용하는 일종의 안내인데요.
Gemini, ChatGPT와 같은 생성형 AI에서 프롬프트는 생성형 AI에게 어떤 행동을 해야 하는지 설명하고 원하는 결과물을 출력할 수 있게 사용자가 입력하는 지시문이나 질문을 의미합니다.
AI 모델의 특성을 잘 이해하고 원하는 결과를 얻기 위해서는 명확한 질의를 하는 것이 중요합니다.
따라서 호모 프롬프트
라는 신조어는 인공지능 시대에 언어 모델을 효과적으로 다루고 활용하는 새로운 인간형을 의미합니다.
결국 AI 프롬프트를 잘 이용하는 인류가 살아남는 것입니다. 그 진화의 과정을 Gemini를 통해 직접 겪어보겠습니다.
Gemini using Prompt
gemini.google.com에 접속해서 Google계정 로그인만 하면 Gemini를 바로 사용할 수 있습니다. 다만, 이번 Google Cloud Next에서 발표한 새 버전인 Gemini 1.5 pro를 사용하기 위해서는 Gemini Advanced를 사용해야 합니다. 다행히 무료 사용기간을 제공하고 있어서 그 기간 동안 빠르게 익혀보겠습니다. Gemini 1.5 pro는 100만 토큰을 한 번에 처리할 수 있는 성능을 제공하여 어려운 질문에도 대부분 1분 내에 답변해 줍니다.
사례 1: 코드 분석
python을 잘 모르는 상태에서 python 코드를 분석해야 하는 상황이라고 가정해 봅시다. 예전 같으면 코드 한줄한줄 이해하기 위해 수십 번의 구글링을 해야만 했습니다. 이제는 Gemini에게 한 번의 질문으로 원하는 것 이상의 답변을 들을 수 있습니다.
실제 Gemini의 능력을 검증해 보기 위해 python으로 작성된 yahoo stock 크롤링 코드 분석을 요청했습니다. 코드의 실행 흐름에 따라 1) Yahoo Finance 데이터 가져오기, 2) HTML 파싱, 3) 주가 정보 추출, 4) 여러 주식 가격 출력 순으로 코드의 핵심 기능에 대해 정리하고 중요 코드나 옵션값에 대해서는 좀 더 자세한 설명이 이어집니다. 단순히 코드 분석을 요청했을 뿐인데 실행 결과와 유의사항까지 덧붙여주는 똑똑하고 사려 깊은 AI네요! 독자의 쉬운 이해를 위해 간단한 예제를 사용했지만 만약 실무에서 실제 개발된 길고 복잡한 클래스 전체에 대한 코드를 분석할 때 사용한다면 그 결과는 더욱 강력할 것입니다. Gemini의 일타강사와 같은 코드 분석 덕분에 어떠한 언어로 작성된 코드도 모두 다룰 수 있는 개발자가 되었습니다.
사례 2: 언어 변환
아무래도 python은 어색하여 Kotlin으로 언어 변환을 요청했습니다. 조금 고민하는 듯했으나 15초 내외로 코드 변환이 완료되었습니다. 단순 변환된 코드를 제공하는 것에 그치지 않고 변환과정에서 변경된 라이브러리와 옵션값에 대한 자세한 설명을 덧붙여줍니다. 변환을 위한 목적뿐만 아니라 언어별 특성과 차이점에 대한 공부로 활용할 수도 있을 것 같습니다.
언어 변환 기능은 실무에서도 종종 사용하고 있습니다. Java -> Kotlin은 IntelliJ에서 자동 변환을 지원해 주지만 반대로 Kotlin -> Java 변환은 생각보다 귀찮고 시간도 많이 들어갑니다. Gemini는 귀찮은 내색 없이 많은 양의 코드도 빠르게 변환해 줍니다. Gemini를 활용하여 코드 변환에 쏟을 시간을 다른 의미 있는 곳에 쓸 수 있게 되었습니다.
사례 3: 테스트 코드 작성
코드 변환이 잘 되었는지 테스트 코드로 확인해 보는 게 좋겠습니다. 테스트 코드를 작성해 달라는 한마디에 역시 빠르게 코드를 작성해 나갑니다. mokk 등 테스트 코드 작성에 필요한 의존성 추가부터 시작하는군요..! 코드 작성으로 끝나지 않고 부가적인 설명도 덧붙여줘서 작성된 코드를 이해하는데 도움을 줍니다.
실무에서 테스트 코드 작성은 중요하지만 시간이 많이 들어가는 작업입니다. 하나의 로직에서 발생할 수 있는 성공/실패/엣지 케이스를 모두 고려하며 작성해야 의미 있는 코드가 됩니다. 테스트 코드 작성을 부탁했더니 대표적인 성공, 실패 케이스에 대해서 작성을 해줍니다. 복잡하고 예외처리가 많은 로직에서도 테스트 코드를 잘 작성할 수 있는지 조금 더 시험해 보면 좋을 것 같습니다. 엣지케이스도 프롬프트를 자세히 입력하면 똑똑한 Gemini가 훌륭히 작성해 줄 것이라 믿습니다. 이제 시간당 더 높은 퍼포먼스를 낼 수 있는 개발자가 되었습니다.
사례 4: 설계
앞선 세 가지 사례들을 통해 낯선 언어로 작성된 코드에 대한 이해도를 높이고 저의 주력 언어로 변환하여 프로젝트에 적용하는 방법에 대해 알아보았습니다. 이것으로도 충분한 업무효율을 일궈냈지만 코딩뿐만 아니라 시스템 아키텍처 측면에서도 인사이트를 얻을 수 있을 것 같아서 운영 중인 서비스 설계에 대한 이슈를 Gemini와 논의해 봤습니다. 서비스가 성장할수록 자연스레 사용자 트래픽도 많아지고, 크고 작은 마이크로 서비스가 신규 구축되며 서비스 사이에 유기적인 연결 및 통합이 필요했습니다. 이 과정에서 발생할 수 있는 코드 중복과 비효율, 성능에 대한 고민을 Gemini에게 들려주었습니다.
설명이 장황하였지만 Gemini는 문제를 정확히 인식하고 간단명료한 해결책을 제시해 주었습니다. API Gateway를 도입하여 진입점을 단일화하여 중앙에서 인증처리 및 사용자를 식별하라는 조언과 함께 이 구조를 적용했을 때 발생할 수 있는 성능 이슈와 단점까지 언급해 줍니다. Gemini의 조언으로 혼자 고민하는 것보다 더 많은 설계안을 두고 고려할 수 있게 되었습니다.
간단한 네 가지 사례를 통해 Gemini의 능력과 활용가치에 대해 알아봤습니다. 익숙하지 않은 언어의 코드 분석부터 다른 언어로의 변환, 테스트 코드 작성, 그리고 아키텍처 설계까지 Gemini를 쓰면 쓸수록 더 매력적으로 느껴졌습니다. Google은 텍스트 기반 프롬프트인 Gemini 웹앱뿐만 아니라 실제 개발환경인 IDE에서 바로 사용할 수 있는 AI 코딩 도구인 Gemini Code Assist를 제공합니다. 다음으로는 Gemini Code Assist에 대해서 알아보겠습니다.
Gemini Code Assist
Gemini Code Assist(이하 GCA)는 Duet AI for Developers로 알려졌던 제품의 새로운 이름입니다. Gemini가 개발뿐만 아니라 일반적인 분야에 폭넓게 활용이 가능한 반면, GCA는 소프트웨어 개발 목적에 특화된 AI기반 코딩 도구로써 개발자가 코드를 더 빠르고 효율적인 작성을 지원합니다. VS Code, JetBrains 등 IDE에 플러그인으로 설치하여 사용 가능합니다. 이번 컨퍼런스에서는 GCA를 발표하며 AI Assistance가 개발자에게 어떤 도움을 줄 수 있는지 소개했습니다.
GCA 주요 기능
- 코드 자동 완성: 작성 중인 코드를 예측하여 자동 완성 제안을 제공하여 코딩 속도를 높여줍니다.
- 코드 생성: 함수, 클래스, 테스트 케이스 등 전체 코드 블록을 생성하여 반복적인 작업을 줄여줍니다.
- 코드 설명: 선택한 코드에 대한 설명을 제공하여 코드 이해도를 높여줍니다.
- 코드 리팩토링: 코드 가독성과 유지보수성을 개선하기 위한 제안을 제공합니다.
- 오류 감지 및 수정 제안: 잠재적인 오류를 감지하고 수정 제안을 제공하여 코드 품질을 높입니다.
- 코드 보안 취약점 감지: 보안 취약점을 식별하고 수정 제안을 제공하여 안전한 코드를 작성하도록 돕습니다.
Case study를 통해 확인하는 GCA의 강력함
한 세션에서는 구글의 파트너사인 Wayfair라는 회사에서 GCA 도입하고 측정한 생산성 결과를 통해 GCA의 강력함을 역설했습니다. GCA 도입 이후 개발환경 세팅, 테스트 커버리지, 업무 몰입도 측면에서 생산성과 만족도가 평균 50% 이상 높아졌다고 강조했습니다.
뿐만 아니라 개발자들이 가장 많은 시간을 할애하는 4가지 개발 업무에서 GCA 도입 후 작업 시간이 모두 단축되었음을 보여주었습니다.
개발 업무 | 생산성 향상비율 | 업무 시간 변화 |
---|---|---|
기존 코드 수정 | 27% | 19:05 -> 14:58 |
새로운 코드 이해 | 56% | 4:19 -> 1:54 |
새로운 코드 작성 | 57% | 11:32 -> 5:00 |
단위 테스트 작성 | 53% | 10:44 -> 5:02 |
저 역시도 개발 업무를 수행할 때는 새로운 코드와 단위 테스트 작성으로 많은 리소스를 할애하는 편입니다. 또한 코드 리뷰나 서비스 운영 시 새로운 코드를 이해하고 기존 코드를 수정하는 업무에도 꽤 많은 시간을 투입하고 있는데요. GCA를 도입한 실제 파트너사의 사례를 보니 저희 회사에도 GCA를 도입한다면 업무 효율성이 높아지겠다는 생각을 했습니다.
다만 아쉽게도 GCA는 공식 출시 전 개발 단계라 아직 실무에서 사용하기에 사용성 측면에서 조금 더 발전이 필요해 보입니다. 계속해서 편의기능이 추가되고 연동 가능한 코드베이스가 확대된다면 GCA는 개발자들에게 파워풀한 퍼포먼스를 안겨줄 거라 기대해 봅니다.
AI 사용에 대한 우려사항과 구글의 해결책
처음 AI를 활용하여 개발을 한다고 들었을 때 회사의 코드를 외부로 유출하는 것처럼 느껴져서 사용을 꺼렸던 것도 있었습니다. 구글은 이러한 우려에 대해 아래와 같이 명확히 설명합니다.
- GCA에게 질의한 내용과 AI의 응답에 대해서는 저장하지도 모델 학습에 이용하지도 않는다. (AI 모델과 상호작용에서 발생하는 데이터 및 개인정보를 보호함.)
- 허용된 라이선스를 가진 코드와 데이터로 학습한다. (허용된 라이선스 코드를 통해 학습되었기 때문에 저작권 침해 등 법적 문제없이 모델을 활용할 수 있음.)
- AI 모델이 사용자에게 제안할 때 그 제안이 외부 자료에서 긴 내용을 직접적으로 인용하는 경우 반드시 출처를 함께 표기해야 한다. (정보의 신뢰성과 저작권 문제를 방지하기 위한 목적)
- 고객이 원하지 않는 제안의 경우 더 이상 제안받지 않도록 요청할 수 있다. (더 나은 사용자 경험을 제공하고, 개인의 선호도에 맞게 조절할 수 있도록 함.)
마치며
서버 개발자 관점에서 직접 Gemini를 활용해 보니 생각보다 사용하기도 편했고 답변의 퀄리티도 우수했습니다. 개인적으로는 Gemini 답변 수준이 매우 만족스러워서 신규 업데이트가 될 때마다 관심 있게 지켜보려고 합니다. GCA도 실무에서 적용해 보고 싶은데 얼른 정식 버전이 나왔으면 좋겠네요.
이번 Google Cloud Next 2024 참가를 계기로 AI에 관심을 갖고 사용해 보니 막연히 거리감이 느껴진 AI가 조금은 가깝게 느껴졌습니다. 앞으로도 지속적으로 관심을 가지고 잘 활용한다면 개발자로서 스스로의 경쟁력을 높이는 강력한 무기가 될 수 있겠다는 생각을 했습니다.
이 글을 읽은 모든 분들이 AI를 장착한 개발자가 되어 파워풀한 퍼포먼스를 낼 수 있길 바라며 글을 마치겠습니다. 감사합니다.