AWS Lambda의 기본 원리와 함수를 단계별로 실행하는 과정을 자세히 살펴보겠습니다.
소개
애플리케이션 개발에서 가장 중요한 목표 중 하나는 사용자에게 뛰어난 경험을 제공하는 것입니다. 이를 위해서는 이벤트에 반응하여 작동하는 백엔드 코드가 필수적입니다.
하지만 이러한 백엔드 코드를 실행하고 관리하기 위한 인프라 구축은 복잡한 과제입니다. 서버 크기 조정, 프로비저닝, 확장, 운영 체제 업데이트, 보안 패치 적용, 그리고 전체 인프라의 성능 및 가용성 모니터링까지, 많은 작업이 요구됩니다.
만약 인프라 관리에 대한 부담 없이 오로지 애플리케이션 개발에만 집중할 수 있다면 얼마나 좋을까요? AWS Lambda는 바로 이러한 필요성을 충족시켜줍니다.
AWS Lambda란 무엇인가?
AWS Lambda는 서버를 직접 관리할 필요 없이 코드를 실행할 수 있는 서버리스 컴퓨팅 서비스입니다. 즉, 사용자는 서버 프로비저닝이나 관리에 대한 걱정 없이 애플리케이션이나 백엔드 서비스를 운영할 수 있습니다. Lambda에 코드를 업로드하기만 하면, 서비스가 알아서 코드를 실행하고 고가용성 환경을 제공하며 필요에 따라 자동으로 확장합니다.
AWS Lambda에서 실행되는 코드를 “람다 함수”라고 부릅니다. 현재 다음과 같은 다양한 프로그래밍 언어를 지원합니다.
- 자바
- 파이썬
- C#
- Node.js
- Go
- PowerShell
- 루비
또한, 다른 프로그래밍 언어로 작성된 함수를 실행할 수 있도록 런타임 API를 제공하여 유연성을 더했습니다.
AWS Lambda를 사용하기 위한 유일한 전제 조건은 AWS 관리 콘솔에 접속할 수 있는 AWS 계정입니다.
Lambda는 AWS에서 제공하는 FaaS(Function-as-a-Service) 서비스라고 할 수 있습니다.
AWS Lambda의 주요 특징
AWS Lambda가 제공하는 주요 기능들은 다음과 같습니다.
- AWS Lambda는 별도의 구성 없이도 인프라를 자동으로 확장하므로 운영 부담을 크게 줄여줍니다.
- AWS S3, CloudWatch, DynamoDB, API Gateway, Kinesis, CodeCommit 등 다양한 AWS 서비스를 통해 이벤트를 트리거할 수 있습니다.
- 사전 투자 비용이 필요 없으며, 람다 함수가 사용하는 메모리 양과 실행 횟수에 대해서만 비용을 지불하므로 경제적입니다.
- AWS IAM을 통해 역할 및 보안 정책을 설정하여 안전하게 사용할 수 있습니다.
- 코드 실행 서비스 자체에 내결함성을 제공하므로, 애플리케이션 다운타임에 대한 걱정을 덜 수 있습니다.
AWS Lambda 요금
AWS Lambda 요금은 람다 함수가 실행되는 시간과 사용한 메모리 양에 따라 결정됩니다. 메모리는 64MB 단위로 할당할 수 있으며, 최대 3008MB까지 설정 가능합니다. 아래는 100밀리초당 각 메모리 설정에 대한 요금표입니다.
AWS Lambda 작동 원리
- 먼저 람다 함수를 생성하고, 해당 함수에 사용할 프로그래밍 언어와 같은 기본 정보를 설정합니다.
- 다음으로 람다 편집기를 이용하여 직접 코드를 작성하거나, 지원되는 프로그래밍 언어로 작성된 코드를 zip 파일 형태로 업로드합니다.
- 코드가 업로드되면, 서비스는 인프라 확장, 패치, 관리를 모두 자동으로 처리합니다.
- 람다 함수를 실행하기 위해서는 외부 AWS 서비스를 통해 함수를 호출해야 합니다. 예를 들어, S3 버킷을 트리거로 설정할 수 있습니다.
- 이벤트가 발생하면, Lambda는 즉시 자동으로 함수를 트리거할 준비를 합니다. AWS Lambda는 이벤트 발생 시 코드를 실행하고, 서버 프로비저닝, 관리, 모니터링을 모두 자동으로 수행합니다.
- 함수에 많은 처리 능력이 필요하다면, 처리 능력과 RAM이 더 큰 인스턴스 유형을 선택할 수 있습니다. 반대로, 람다 코드가 짧은 시간 동안만 실행된다면, 가장 낮은 인스턴스를 선택하여 비용과 시간을 절약할 수 있습니다.
이것이 AWS Lambda의 작동 방식입니다. 이제 간단한 데모를 통해 AWS Lambda를 직접 사용해 보겠습니다.
AWS Lambda 함수 생성
이 예시에서는 Node.js를 사용하여 간단한 주사위 게임을 만들어 볼 것입니다. 1부터 6까지의 숫자를 무작위로 생성하여 출력하는 람다 함수를 생성할 것입니다.
- AWS 관리 콘솔에 로그인한 후, 검색창에 “Lambda”를 입력하고 Lambda를 선택합니다.
- Lambda 함수 대시보드에서 “함수 생성” 버튼을 클릭합니다.
- 함수를 생성하는 다양한 옵션이 제공됩니다. 처음부터 새로 만들 것이므로 “Author from scratch” 옵션을 선택합니다.
- 이제 람다 함수에 대한 몇 가지 정보를 입력해야 합니다. 함수 이름을 지정하고 사용할 Node.js 버전을 선택합니다.
- 실행 역할을 선택해야 합니다. 기존 역할이 없으므로 “새 역할 생성” 옵션을 선택하겠습니다. “함수 생성”을 클릭합니다.
- 함수가 성공적으로 생성되었다는 메시지가 표시됩니다. 디자이너 창을 클릭하여 최소화합니다.
- 이제 함수 코드 편집기가 나타납니다.
- 아래 코드를 편집기에 붙여넣습니다. zip 파일을 사용하여 코드를 업로드할 수도 있지만, 여기서는 AWS 내부 코드 편집기를 사용하겠습니다.
- 이 코드는 1에서 6 사이의 숫자를 무작위로 생성하여 출력하는 간단한 함수입니다.
exports.handler = async (event) => { const min = 1; const max = 6; const randomNum = Math.floor(Math.random() * (max - min + 1)) + min; const out="주사위 던지기 결과: " + randomNum; return out; };
- 이제 오른쪽 상단에 있는 “테스트” 버튼을 클릭합니다. 테스트 이벤트 설정 창이 나타나면, 이벤트 이름을 입력하고 “저장”을 클릭합니다.
- 이제 “테스트” 버튼을 다시 클릭합니다.
실행 결과에서 함수 실행 결과를 확인할 수 있습니다. “주사위 던지기 결과: 2″와 같이 무작위로 생성된 숫자가 출력됩니다.
- 위로 스크롤하여 자세한 실행 결과를 확인하면, 예상 출력과 함께 람다 함수의 실행 요약을 확인할 수 있습니다. 요청 ID, 실행 시간, 청구 시간, 구성된 리소스 등의 상세 정보와 로그 출력을 확인할 수 있습니다.
- “모니터링” 탭을 클릭하면 CloudWatch 로그와 람다 함수 성능을 시각적으로 확인할 수 있습니다.
- CloudWatch에서 생성된 로그를 살펴보면 람다 함수 실행 시 발생한 세부 정보를 확인할 수 있습니다.
결론
AWS Lambda 시작하기는 매우 간단합니다. 비즈니스 애플리케이션에서 백엔드 코드를 실행해야 한다면, AWS Lambda와 같은 서버리스 플랫폼을 적극적으로 고려해볼 가치가 있습니다.
이 글이 유익했기를 바랍니다. 혹시 이 정보를 다른 사람들과 공유하고 싶으신가요?