Amazon Web Services 한국 블로그
Amazon Q Developer, GitHub 연동을 통한 코드 생성 기능 제공 (미리보기)
오늘부터 GitHub에서 Amazon Q Developer를 미리보기로 사용할 수 있습니다! 직장에서든 개인 프로젝트에서든 매일 GitHub를 사용하는 수백만 명의 개발자들에게 반가운 소식입니다. 이제 Amazon Q Developer를 사용하여 GitHub 인터페이스 내에서 직접 기능 개발, 코드 검토, Java 코드 마이그레이션을 수행할 수 있게 되었으니까요.
Amazon Q Developer를 사용하여 StoryBook Teller라는 애플리케이션을 처음부터 새로 만들어 보는 데모를 통해 보여 드리겠습니다. 사용자로부터 이미지를 3개 받아 Anthropic의 Claude와 함께 Amazon Bedrock을 사용하여, 그 이미지를 기반으로 스토리를 생성하는 .NET 9를 사용한 ASP.Core 웹 사이트로 만들려고 합니다.
지금부터 방법을 직접 보여드리겠습니다.
1. 애플리케이션 설치
가장 먼저 해야 할 일은 GitHub의 Amazon Q Developer 애플리케이션을 설치하는 것입니다. 설치하고 나면 AWS 계정에 연결하지 않고도 바로 사용할 수 있습니다.
그런 다음 모든 리포지토리에 추가하거나 특정 리포지토리를 선택할 수 있습니다. 여기서는 storybook-teller-demo 리포지토리에 추가하려고 하므로, 선택한 리포지토리만을 선택하고 이름을 입력하여 리포지토리를 찾습니다.
이렇게만 하면 선택한 리포지토리 내에서 Amazon Q Developer 앱을 바로 사용할 수 있습니다. GitHub 계정 설정으로 이동하여 앱이 설치되었는지 확인할 수 있습니다. 애플리케이션 페이지에 앱이 나열됩니다.
언제든지 구성을 선택하여 권한을 확인하고 Amazon Q Developer를 리포지토리에 추가하거나 제거할 수 있습니다.
이제 Amazon Q Developer를 사용하여 애플리케이션을 구축해 보겠습니다.
2. Q Developer를 이용한 기능 개발
Amazon Q Developer를 리포지토리에 설치하면 기능 개발을 위해 GitHub 이슈를 Amazon Q 개발 에이전트에 할당할 수 있습니다. 그러면 Amazon Q 개발 에이전트가 리포지토리의 전체 코드베이스와 이슈 설명을 컨텍스트로 사용하여 코드를 생성합니다. 그렇기 때문에 GitHub 이슈에 요구 사항을 최대한 정확하고 명확하게 나열하는 것이 중요합니다. 뭐, 어떤 작업에서든 마찬가지지만 말이죠.
StoryBook Teller 리포지토리에 스켈레톤 .NET 9 프로젝트 생성부터 프론트엔드 및 백엔드 구현에 이르기까지, 이 앱에 대한 모든 요구 사항이 포함된 5개의 이슈를 생성했습니다.
Amazon Q Developer를 사용하여 애플리케이션을 새로 개발하고 이러한 모든 기능을 구현해 보겠습니다.
먼저, Amazon Q Developer의 도움을 받아 .NET 프로젝트를 생성해 보겠습니다. 이를 위해 첫 번째 이슈를 열고 레이블 섹션에서 Amazon Q 개발 에이전트를 찾아 선택합니다.
이게 전부입니다. 이제 이 이슈가 Amazon Q Developer에 할당되었습니다. 레이블이 추가되면 Amazon Q 개발 에이전트가 백그라운드에서 자동으로 작업을 시작하며, 작업 중입니다
라는 주석을 시작으로 주석을 통해 진행 상황을 업데이트해 줍니다.
예상할 수 있듯이, 소요되는 시간은 기능의 복잡성에 따라 달라집니다. 완료되면 모든 변경 사항이 포함된 풀 요청이 자동으로 생성됩니다.
다음으로, 생성된 코드가 제대로 작동하는지 확인하려고 합니다. 코드 변경 사항을 다운로드하고 제 컴퓨터에서 로컬로 앱을 실행하겠습니다.
터미널로 가서 git fetch origin pull/6/head:pr-6
을 입력하여 생성된 풀 요청의 코드를 가져옵니다. 내용을 다시 확인해보면, 예상대로 .NET 9를 사용하여 생성된 ASP.Core 프로젝트가 있다는 것을 알 수 있습니다.
그런 다음 dotnet run
을 실행하고 출력에 제공된 URL로 앱을 엽니다.
훌륭합니다. 잘 작동합니다! Amazon Q Developer는 제가 GitHub 이슈에서 제공한 요구 사항을 바탕으로 제가 원하는 대로 정확히 이 기능을 구현했습니다. 앱이 잘 작동하는지 테스트했으니, 이제 변경 사항을 적용하기 전에 먼저 코드 자체를 검토해 보겠습니다.
3. Q Developer를 통한 코드 리뷰
GitHub로 돌아가서 풀 요청을 엽니다. Amazon Q Developer가 생성된 코드에 대해 몇 가지 자동 검사를 수행했음을 바로 알 수 있습니다.
좋습니다! 이미 저를 대신해 꽤 많은 일을 해줬군요. 하지만 풀 요청을 병합하기 전에 먼저 코드를 검토해야 합니다. 이를 위해 변경된 파일 탭으로 이동합니다.
코드를 검토하니 잘 작성된 것 같습니다. 단, .gitignore의 내용을 보니 변경하고 싶은 부분이 있습니다. Amazon Q Developer가 가정을 잘 세우고 Visual Studio(VS) 코드 파일에 대한 제외 규칙을 추가한 것을 알 수 있습니다. 하지만 저는 .NET 개발을 위한 통합 개발 환경(IDE)으로 JetBrains Rider를 주로 사용하므로 이에 대한 규칙도 추가하고 싶습니다.
GitHub 인터페이스의 일반 코드 검토 흐름을 사용하여 반복하고 변경하도록 Amazon Q Developer에 요청할 수 있습니다. 이 예에서는 Rider IDE 파일을 무시하는 패턴을 추가해줘
라는 주석을 .gitignore 코드에 추가합니다. 그런 다음 검토 시작을 선택하면 검토 중에 변경 사항이 대기열에 추가됩니다.
검토 완료와 요청 변경 사항을 선택합니다.
검토 결과를 제출하고 나면 바로 대화 탭으로 리디렉션됩니다. Amazon Q Developer가 작업을 시작하면서 동일한 피드백 루프를 재개하고, 제가 만족할 때까지 검토 프로세스를 계속하도록 안내합니다.
Q Developer는 코드를 변경할 때마다 생성된 코드에 대해 자동 검사를 실행합니다. 이 예에서는 코드가 비교적 단순했기 때문에 자동 코드 검토에서 문제가 발견되지는 않을 것으로 예상되었습니다. 하지만 코드가 복잡하면 어떻게 될까요?
다른 예로, Amazon Q Developer를 사용하여 웹 사이트에서 이미지 업로드를 활성화하는 기능을 구현해 보겠습니다. 이전 섹션에서 설명한 것과 동일한 흐름을 사용합니다. 단, 이번에는 풀 요청에 대한 자동 검사에서 경고가 발생했습니다. 이 경고에는 백엔드에서 이미지 업로드를 지원하기 위해 생성된 API에 직접적인 퍼블릭 액세스를 허용하는 인증 검사가 누락되었다고 되어 있습니다. 이 경고는 보안 위험을 자세히 설명하고 유용한 링크를 제공합니다.
그런 다음 코드 수정 사항 제안을 자동으로 생성합니다.
완료되면, 제가 코드를 검토하고 변경 사항이 만족스러울 경우 변경 사항 커밋을 선택하면 됩니다.
이 문제를 수정하고 테스트한 결과, 이 이슈의 코드가 만족스러우므로 동일한 프로세스를 다른 코드에도 적용해 보겠습니다. Amazon Q 개발 에이전트를 나머지 이슈 각각에 할당하고 코드가 생성될 때까지 기다린 다음, 도중에 문제가 발견되면 수정해 달라고 요청하면서 반복적인 검토 프로세스를 거칩니다. 그리고 소프트웨어 주기가 끝나면 애플리케이션을 테스트합니다. Amazon Q Developer가 프로젝트 설정부터 보일러플레이트 코드, 더 복잡한 백엔드 및 프론트엔드에 이르기까지, 모든 이슈를 처리했다는 것이 매우 만족스럽습니다. 이 정도면 진정한 풀 스택 개발자라고 할 만합니다!
지금까지 진행하는 과정에서 변경하고 싶은 것이 몇 가지 눈에 띄었습니다. 일례로 이 앱은 Invoke API를 사용하여, 업로드한 이미지를 Converse API 대신 Amazon Bedrock으로 전송하도록 기본 설정되었습니다. 하지만 제 요구 사항에 이 내용을 포함하지 않았기 때문에 Q Developer는 알 수가 없었습니다. 이는 Q Developer에게 필요한 컨텍스트를 제공하여 개발 프로세스의 효율성을 최대한 높일 수 있다는 점에서, 이슈의 제목과 설명을 되도록 정확하게 작성하는 것이 얼마나 중요한지 잘 보여줍니다.
어쨌든 풀 요청 시에 생성된 코드를 검토하고, 주석을 추가하고, 최종 결과에 만족할 때까지 Amazon Q Developer 에이전트가 변경 작업을 계속하도록 하는 것은 정말 편리합니다. 또는 풀 요청의 변경 사항을 수락하고 별도의 이슈를 생성하여 나중에 개발할 준비가 되면 해당 이슈를 Q Developer에 할당할 수도 있습니다.
4. Q Developer 기반 자바 코드 변환
Q Developer를 사용하여 레거시 Java 코드베이스를 최신 버전으로 변환할 수도 있습니다. 현재 Java 8 또는 Java 11에서 Java 17로 애플리케이션을 업데이트할 수 있으며, 향후 릴리스에서는 더 많은 옵션을 제공할 예정입니다.
프로세스는 몇 가지를 제외하고는 이 게시물의 앞부분에서 설명한 것과 매우 유사합니다.
먼저 Java 8 또는 Java 11 애플리케이션이 포함된 GitHub 리포지토리 내에 이슈를 생성해야 합니다. 이 경우에는 제목과 설명이 별로 중요하지 않습니다. 설명 없이 ‘마이그레이션’과 같은 짧은 제목만 붙여도 됩니다. 그런 다음 레이블에서 Amazon Q 변환 에이전트 레이블을 이슈에 할당합니다.
이전과 마찬가지로, Amazon Q Developer는 즉시 백그라운드에서 작업을 시작한 후 사용자가 검토할 수 있도록 풀 요청에 대한 코드를 생성합니다. 하지만 이번에는 Amazon Q 변환 에이전트가 코드 마이그레이션에 특화된 작업을 수행하며, 필요한 모든 단계를 수행하여 코드를 분석하고 Java 8에서 Java 17로 마이그레이션합니다.
설명서에 설명되어 있듯이, 워크플로도 생성해야 한다는 점에 유의하세요. 아직 활성화하지 않았다면, 다시 시도하기 전에 모든 설정을 완료할 수 있도록 명확한 지침이 표시됩니다.
아시다시피, 마이그레이션을 수행하는 데 필요한 시간은 애플리케이션의 크기와 복잡성에 따라 달라집니다.
GitHub에서 Amazon Q Developer를 사용하는 것은 협업을 통해 새로운 기능을 개발하고, 코드 검토 프로세스를 가속화하고, 코드의 보안 태세와 품질을 개선해줄 풀 스택 개발자를 보유하는 것과 같습니다. 또한 Q Developer를 사용하여 Java 8 및 11 애플리케이션에서 Java 17로의 마이그레이션을 자동화할 수 있으므로, 한동안 미루어야 했던 마이그레이션 프로젝트를 훨씬 쉽게 시작할 수 있습니다. 무엇보다, GitHub 환경에서 편하게 이 모든 작업을 수행할 수 있습니다.
정식 출시
이제 AWS 계정을 설정하지 않고도 GitHub에서 Amazon Q Developer를 무료로 사용할 수 있습니다.
GitHub의 Amazon Q Developer는 현재 평가판으로 제공됩니다.
— Matheus Guimaraes | codingmatheus
뉴스 블로그를 어떻게 생각하시나요? 이 1분짜리 설문조사에 참여해 주세요!
(이 설문조사는 외부 기업에서 호스트합니다. AWS는 AWS 개인정보 처리방침에 설명한 대로 사용자 정보를 처리합니다. AWS는 이 설문 조사를 통해 수집된 데이터를 소유하며 수집된 정보를 설문 응답자와 공유하지 않습니다)