Amazon Web Services 한국 블로그

AWS Lambda를 위한 콘솔-IDE 연동 및 원격 디버깅으로 서버리스 개발 간소화

오늘 부터 AWS Lambda에 두 가지 중요한 기능 개선 사항을 발표합니다. 바로 개발자가 로컬 개발 환경에서 서버리스 애플리케이션을 더 쉽고 편리하게 개발하고 디버깅할 수 있게 도와주는 콘솔-IDE 연동 기능과 원격 디버깅 기능입니다. 이번에 도입된 기능들은 2024년 말에 출시된 향상된 콘솔 내 편집 환경개선된 로컬 통합 개발 환경(IDE)을 포함하여 최근 Lambda 개발 환경의 기능 향상을 바탕으로 합니다.

서버리스 애플리케이션을 구축할 때 개발자는 보통 워크플로를 간소화하기 위해 보통 두 가지 영역에 중점을 둡니다. 바로 로컬 개발 환경 설정과 클라우드 디버깅 기능입니다. 개발자들은 콘솔에서 함수 코드를 IDE로 가져올 수 있지만 이 과정을 더욱 효율적으로 만들 방법을 모색하고 있습니다. 또한 함수가 클라우드 내 다양한 AWS 서비스와 연동함에 따라 개발 주기 초기에 문제를 더 빠르게 식별하고 해결할 수 있는 향상된 디버깅 기능을 원합니다. 이는 로컬 에뮬레이션에 대한 의존도를 줄이고 개발 워크플로 최적화에 도움을 줍니다.

콘솔-IDE 연동

첫 번째 과제를 해결하기 위해 AWS Management Console에서 Visual Studio Code(VS Code)로의 워크플로를 간소화하는 콘솔-IDE 연동 기능을 도입하고 있습니다. 이 새 기능은 Lambda 콘솔에 Open in Visual Studio Code(Visual Studio Code에서 열기) 버튼을 추가하여 개발자가 브라우저에서 함수를 확인하다가 곧바로 IDE에서 편집할 수 있도록 지원합니다. 이로써 로컬 개발 환경 설정에 소요되는 시간을 크게 줄일 수 있습니다.

콘솔-IDE 연동 기능은 VS Code 설치 여부와 AWS Toolkit for VS Code 설치 상태를 자동으로 확인하며 설정 과정을 처리합니다. 이미 모든 설정이 완료된 개발자는 버튼을 클릭하면 즉시 함수 코드를 VS Code에서 열어 편집을 계속하고, 변경 사항을 빠르게 Lambda에 배포할 수 있습니다. VS Code가 설치되어 있지 않으면 다운로드 페이지로 안내하며, AWS Toolkit이 없을 경우 설치를 권장하는 메시지가 표시됩니다.

콘솔-IDE 연동 기능을 사용하려면 새 함수를 생성한 후 나타나는 시작하기 팝업이나 기존 Lambda 함수의 코드 탭에서 VS Code에서 열기 버튼을 찾으세요. 버튼을 선택하면 VS Code가 자동으로 실행되며, 필요한 경우 AWS Toolkit도 설치됩니다. 콘솔 환경과 달리, 이제 통합 터미널이 있는 완전한 개발 환경에 접근할 수 있어 패키지(npm install, pip install) 관리, 테스트 실행, 린터 및 포매터 같은 개발 도구의 활용도가 크게 개선됩니다. 코드를 편집하거나 새 파일 및 폴더를 추가할 수 있으며, 변경 사항이 있을 때마다 자동 배포 프롬프트가 표시됩니다. 배포를 선택하면 AWS Toolkit이 자동으로 함수를 사용자의 AWS 계정에 배포합니다.

콘솔-IDE 연동을 보여주는 스크린샷

 

원격 디버깅

개발자가 IDE에 함수를 불러오면 원격 디버깅 기능을 통해 VS Code에서 직접 AWS 계정에 배포된 Lambda 함수를 디버깅할 수 있습니다. 원격 디버깅의 주된 장점은 클라우드에서 실행 중인 함수를 다른 AWS 서비스와 통합된 상태로 디버깅할 수 있어 더 빠르고 안정적인 개발이 가능하다는 점입니다.

개발자는 원격 디버깅을 통해 Amazon Virtual Private Cloud(VPC) 리소스와 AWS Identity and Access Management(AWS IAM) 역할에 완벽하게 접근하여 함수를 디버깅할 수 있으므로 로컬 개발 환경과 클라우드 실행 간의 간극이 해소됩니다. 예를 들어, VPC 내의 Amazon Relational Database Service(Amazon RDS) 데이터베이스와 연동하는 Lambda 함수를 디버깅할 때 프로덕션과 맞지 않을 수 있는 로컬 환경을 별도로 설정하는 데 시간을 들이지 않고도 클라우드에서 실행 중인 함수의 실행 환경을 몇 초 만에 바로 디버깅할 수 있습니다.

원격 디버깅을 시작하는 방법은 매우 간단합니다. 개발자는 VS Code에서 Lambda 함수를 선택하고 몇 초 만에 디버깅을 활성화할 수 있습니다. AWS Toolkit for VS Code는 함수 코드를 자동으로 다운로드하고, 안전한 디버깅 연결을 설정하며, 중단점 설정을 지원합니다. 디버깅이 완료되면 AWS Toolkit for VS Code가 프로덕션 트래픽에 영향을 미치지 않도록 자동으로 디버깅 구성을 정리합니다.

직접 사용해 보기

원격 디버깅을 체험해 보기 위해 저는 Python으로 작성한 기본 “hello world” 예제 함수를 선택했습니다. 이 함수는 이전에 AWS Management Console을 통해 AWS Lambda에서 생성한 적이 있습니다. AWS Toolkit for VS Code를 사용하면 탐색기 창에서 해당 함수를 찾아 마우스 커서를 올리고 우클릭(Windows에서는 Ctrl 클릭)하여 코드를 로컬 컴퓨터로 다운로드한 후 IDE에서 편집할 수 있습니다. 파일을 저장하면 최신 변경 사항을 Lambda에 배포할지 여부를 묻는 메시지가 나타납니다.

VS Code에서 Lambda Debugger를 보여주는 스크린샷

여기에서 재생 아이콘을 선택하여 함수의 원격 호출 구성 페이지를 열 수 있습니다. 이 대화 상자에는 이제 원격 디버깅 옵션이 표시됩니다. 이 옵션을 제 함수 핸들러 코드의 로컬 복사본을 가리키도록 설정합니다. 원격 호출을 선택하기 전에 코드의 왼쪽 부분 어디에서든 검사 목적으로 일시 정지하고 싶은 위치에 중단점을 설정할 수 있습니다.

내 코드가 호출된 후에는 클라우드에서 실행되며, VS Code에서 실시간으로 상태를 모니터링할 수 있습니다. 아래 스크린샷에서 볼 수 있듯이 저는 print 문에 중단점을 설정해 두었습니다. 내 함수는 내 코드의 해당 지점에서 실행을 일시 중지하고, 로컬 변수 값 등 항목들을 검사할 수 있습니다. 이후에는 다음 중단점까지 계속 실행하거나 한 줄씩 코드를 따라가면서 디버깅할 수 있습니다.

여기서 제가 코드를 한 줄씩 실행하도록 선택한 것을 볼 수 있습니다. 코드를 한 줄씩 진행하면서 IDE 왼쪽에 컨텍스트와 로컬 및 글로벌 변수들이 표시됩니다. 또한 IDE 하단의 출력 탭에서 로그를 실시간으로 확인할 수 있습니다. 코드를 한 줄씩 실행할 때마다 함수 실행 중 발생하는 로그 메시지나 출력 메시지를 실시간으로 볼 수 있습니다.

 

향상된 개발 워크플로

이번에 도입된 기능들은 연동하여 보다 간소화된 개발 환경을 제공합니다. 개발자는 콘솔에서 시작해 콘솔-IDE 연동을 통해 빠르게 VS Code로 전환할 수 있을 뿐만 아니라, 원격 디버깅을 통해 클라우드에서 실행 중인 함수를 직접 디버깅할 수 있습니다. 이러한 워크플로는 여러 도구와 환경을 번갈아 사용할 필요 없이 개발자가 문제를 더 빠르게 찾아내고 해결할 수 있도록 돕습니다.

정식 출시

이제 AWS Management Console과 AWS Toolkit for VS Code(v3.69.0 이상)를 설치한 VS Code에서 이 새로운 기능들을 사용할 수 있습니다. 콘솔-IDE 연동 기능은 Lambda가 지원되는 모든 상용 AWS 리전에서 제공됩니다. 단, AWS GovCloud(미국) 리전은 제외됩니다. 자세한 내용은 LambdaAWS Toolkit for VS Code 문서를 참고하세요. 원격 디버깅 기능과 이 기능이 지원되는 AWS 리전에 관한 자세한 정보는 AWS Toolkit for VS CodeLambda 문서에서 확인할 수 있습니다.

콘솔-IDE 연동 및 원격 디버깅 기능은 무료로 제공됩니다. 원격 디버깅을 사용하는 동안에는 디버깅 세션의 표준 Lambda 실행 비용만 청구됩니다. 원격 디버깅은 출시 시점에 Python, Node.js, Java 런타임을 지원하며, 앞으로 더 많은 런타임으로 지원 범위를 확대할 계획입니다.

이러한 향상된 기능들은 서버리스 개발 경험을 단순화하는 중요한 진전으로, 개발자들이 전보다 훨씬 더 효율적으로 Lambda 함수를 개발하고 디버깅할 수 있을 것으로 기대합니다.