[reinvent 2024] Amazon Q Developer를 사용한 차세대 CDK 개발

Summary

AWS CDK(AWS Cloud Development Kit)는 코드 도구로서의 강력한 인프라로 등장했지만 사용자 정의 높은 수준의 구성을 구축하는 것은 어려울 수 있습니다. 이 세션에서는 소프트웨어 개발을 위한 AI 기반 도우미인 Amazon Q Developer를 활용하여 클라우드 아키텍처 패턴을 캡슐화하는 맞춤형 CDK 구성을 생성하는 방법을 보여줍니다. 효과적인 구성을 설계하고, 자동화된 문서화 및 테스트를 위해 Amazon Q 기능을 활용하고, AWS CDK 및 Amazon Q Developer를 사용하여 코드형 인프라로 개발자 경험을 최적화하는 사용자 지정 옵션을 탐색하는 방법을 알아보세요.


리인벤트 2024 테크 블로그의 더 많은 글이 보고 싶다면?

Tech Blog

AWS re:Invent 2024 Tech Blog written by MegazoneCloud

Overview

  • Title: Next-generation CDK development with Amazon Q Developer
  • Date: 2024년 12월 3일(화)
  • Venue: Mandalay Bay | Level 2 South | Mandalay Bay Ballroom L | Content Hub | Orange Screen
  • Speaker:
  • Pahud Hsieh(Senior Solutions Architect, Amazon Web Services)
  • Adam Keller(Senior Developer Advocate, Amazon Web Services)
  • Industry: Cross-Industry Solutions, Travel & Hospitality

들어가며

이번 칼럼에서는 CDK 및 Amazon Q Developer 기술을 주제로 한 세션을 듣고, 여러분께 신규 기술 및 업데이트 된 정보를 공유드리도록 하겠습니다. 이번 세션에서 주목할 내용은 역시나 AI산업 추세에 맞게 Amazon Q와 관련된 내용 입니다.

Amazon CDK는 Infrastructure as a code인 CDK를 실제 개발자들이 사용하기엔 아래와 같은 어려움이 있습니다.

  1. 새로운 서비스가 출시될 때마다 관련 구성과 통합을 위한 새로운 학습이 필요
  2. 문제 해결과 디버깅이 복잡함. (CDK는 TypeScript/JavaScript 코드를 CloudFormation 템플릿으로 변환하는 과정에서 발생하는 문제를 디버깅하기가 어렵고, 에러 메시지가 명확하지 않은 경우가 많습니다.)
  3. 문서화가 충분하지 않아 최신 상태를 유지하기 어려움
  4. 유지보수가 어려움. (CDK 버전 업그레이드, 종속성 관리, 기존 스택 수정 등의 작업이 복잡하고 시간이 많이 소요)
  5. 테스트 환경 구축이 복잡

위 프레젠테이션을 보면 AWS 인프라 구축의 진화는 크게 4단계로 발전해 온 것을 알 수 있습니다. 초기에는 AWS 콘솔을 통한 수동(Manual) 작업으로 시작했으며, 이는 직관적이지만 반복 작업이 많고 오류가 발생하기 쉬웠습니다.

다음 단계로 스크립팅(Scripting) 방식이 도입되어 자동화가 가능해졌고, 반복 작업의 효율성이 크게 향상되었습니다. 하지만 여전히 만드는데 어려움은 존재했습니다.

세 번째 단계에서는 AWS CloudFormation을 통한 선언적(Declarative) 방식이 등장하여, 인프라를 코드로 정의하고 관리할 수 있게 되었습니다. 하지만 기술적인 능력이 많이 필요한 부분이었죠.

마지막으로 AWS CDK(Cloud Development Kit)와 같은 추상화(Abstractions) 도구의 등장으로, 개발자들이 선호하는 프로그래밍 언어로 인프라를 정의할 수 있게 되어 생산성과 재사용성이 극대화되었습니다.

이러한 진화 과정을 통해 AWS 인프라 구축은 더욱 체계적이고 효율적으로 발전해 온 것을 알 수 있었습니다.

그 이후로 AWS CDK에 대해서 좀 더 구체적으로 설명하기 시작했습니다. AWS CDK는 클라우드 인프라를 구축할 때 개발자들에게 친숙한 프로그래밍 언어를 사용할 수 있게 해주는 도구입니다.

이미지에서 보이듯이 TypeScript, Python, Java, C#, Go 등 다양한 프로그래밍 언어를 지원하며, 개발자들이 평소에 사용하는 IDE에서 자동완성과 인라인 문서와 같은 도구 지원을 받을 수 있습니다.

CDK는 클래스와 메서드를 통해 추상화된 방식으로 인프라를 정의할 수 있게 해주며, 위 프레젠테이션의 코드에서 보이듯이 VPC, 클러스터, 오토스케일링 등의 AWS 리소스를 객체지향적으로 구성할 수 있습니다.

또한 재사용 가능한 클래스와 합리적인 기본값을 제공하여 인프라 코드의 재사용 및 유지보수적인 면에서 높은 수준을 보여줍니다.

위 예시코드에서는 URL 단축 서비스를 위한 인프라를 정의하고 있으며, VPC, ECS 클러스터, 로드밸런서, 오토스케일링 정책 등을 선언적으로 구성하는 방법을 보여줬습니다.

이어서 AWS CDK의 주요 장점들을 정리해주었는데요, 아래에 장점들을 정리해 보겠습니다.

첫째, CloudFormation을 통한 상태 관리 기능을 제공하여 인프라의 현재 상태를 추적하고 관리할 수 있습니다. 둘째, 애플리케이션 자산 관리 기능을 통해 코드, 설정 파일 등의 리소스를 효율적으로 관리할 수 있습니다.
셋째, 개발자 커뮤니티가 주도하는 방식으로 운영되어 지속적인 발전과 다양한 사용사례를 공유할 수 있습니다.
넷째, Intent-based API를 통한 추상화를 제공하여 개발자의 의도를 쉽게 코드로 표현할 수 있습니다.
다섯째, 보안 정책을 코드로 정의할 수 있어 인프라의 보안을 체계적으로 관리하고 자동화할 수 있습니다.

위 프레젠테이션은 소프트웨어 개발 수명 주기(SDLC)에서 개발자들이 시간을 어떻게 보내는지 설명하는 순환도를 설명하는 내용이었습니다. 제가 들은 SDLC를 아래에 설명드려 보겠습니다.

Plan (계획) 단계:
관련 문서, 코드 예제, 리소스 등에서 정확한 기술 지침을 찾는 단계.
비즈니스 및 기술 요구사항에 따른 변경내용 설계 단계.

Create (생성) 단계:
실제 코드 생성, 인프라를 관리하는 단계.

Test and Secure (테스트 및 보안) 단계:
코드 변경에 대한 적절한 테스트 케이스 적용단계. 취약점 검사 단계.

Operate (운영) 단계:
코드 이슈 식별 및 수정단계. 성능과 효율성 모니터링 단계.

Maintain and Modernize (유지보수 및 현대화) 단계:
오래된 코드 언어와 종속성을 현대화하고 업데이트하는 단계.

다음 프레젠테이션에서 가운데에 Amazon Q 마크를 넣으면서 이 모든 단계를 Amazon Q로 대체가 가능하다는 설명을 했고, 관련 Demo 영상을 보여줬습니다.

위 캡쳐는 Visual Editor 에 Amazon Q를 설치하고 왼쪽에선 Amazon Q와 오른쪽 코드구성에 대해 대화를 나누고 대화를 통해 결정되 부분을 시행하도록 명령하는 장면입니다.

명령이 제대로 전달되면 자동으로 Amazon Q는 오른쪽 코드를 변경하기 시작하고 변경 후에 어디부분이 어떻게 변경되었는지 보여주며 개발자에게 보고하면서 마무리는 짓습니다.

마지막으로 모든 코드부분이 에러없이 정상으로 잡히는 영상을 끝으로 Demo를 마무리하였습니다.

결론

이번 발표를 들으면서 Amazon Q의 CDK 도입이 가져올 인프라 코딩 문화의 변화는 매우 혁신적일 것으로 생각됩니다. 우선 AI 기반의 코드생성과 추천기능으로 개발자들은 더욱 빠르고 효율적으로 인프라 코드를 작성할 수 있게 될 것이고, Amazon Q의 자연어 처리 기능을 통해 복잡한 인프라 설계도 간단한 설명만으로 구현할 수 있게 되어 클라우드 인프라 구축의 진입 장벽이 크게 낮아질 것으로 보입니다.

또한 코드품질검사와 보안 취약점 분석 같은 AI 기반 검증 기능으로 인프라의 안정성과 보안성이 한층 강화될 것으로 기대되며, 기존 코드의 현대화 및 최적화 작업도 더욱 수월해지지 않을까 생각합니다.

글 │메가존클라우드, MSC, Finance Team, 안영건
게시물 주소가 복사되었습니다.