AWS Lambda로 시작하는 서버리스 – 서버 없이 코드 실행하기

1. 서버 없이도 코드를 실행할 수 있다

지금까지 코드를 실행하려면 EC2 서버를 만들고, 운영체제를 설정하고, 앱을 올리는 과정이 필요했습니다. 한 줄짜리 간단한 함수를 실행하기 위해 월 몇 달러의 서버를 24시간 켜두는 것은 낭비입니다.

Lambda를 사용하면 코드만 올리면 됩니다. 서버 설정, 운영체제 관리, 보안 패치 같은 것은 AWS가 알아서 처리합니다. 심지어 코드가 실행되지 않는 시간에는 비용도 청구되지 않습니다.

2. 서버리스와 Lambda의 차이를 먼저 이해하자

**서버리스(Serverless)**는 개발자가 서버를 직접 관리하지 않는 방식을 통칭합니다. 서버가 없는 것이 아니라 서버 관리를 클라우드가 대신 해줍니다.

AWS Lambda는 서버리스를 구현하는 AWS의 구체적인 서비스입니다. 코드를 함수 단위로 업로드하면 특정 이벤트가 발생했을 때 해당 함수가 자동으로 실행됩니다.

Lambda의 핵심은 이벤트 기반(Event-Driven) 실행입니다. API 호출이 왔을 때, S3에 파일이 업로드됐을 때, 특정 시간이 됐을 때 등 트리거가 발생해야만 코드가 실행됩니다.

3. Lambda가 동작하는 원리

Lambda 실행 흐름을 단계별로 살펴봅니다.

개발자가 Lambda에 함수 코드를 업로드합니다. 트리거(API Gateway, S3, CloudWatch Events 등)를 설정합니다. 이벤트가 발생하면 AWS가 자동으로 컨테이너를 생성하고 함수를 실행합니다. 함수 실행이 완료되면 결과를 반환하고 컨테이너는 자동으로 제거됩니다.

이 과정에서 컨테이너 생성 및 초기화에 걸리는 시간을 **콜드 스타트(Cold Start)**라고 합니다. 함수가 오랫동안 호출되지 않다가 다시 호출되면 첫 응답이 느릴 수 있습니다. 자주 호출되는 함수는 컨테이너가 유지되어 **웜 스타트(Warm Start)**로 빠르게 응답합니다.

4. Lambda 함수 만들어보기

Lambda 콘솔에서 함수 생성을 클릭합니다.

함수 이름을 입력합니다. 런타임은 Python 3.12, Node.js 20.x 등 사용할 언어를 선택합니다. 실행 역할은 기본 Lambda 실행 역할로 설정합니다.

코드 편집기에서 함수를 작성합니다. 아래는 간단한 Python 예시입니다.

def lambda_handler(event, context): name = event.get(‘name’, ‘방문자’) return { ‘statusCode’: 200, ‘body’: f’안녕하세요, {name}님!’ }

테스트 탭에서 이벤트를 만들어 테스트할 수 있습니다. 실행 결과와 로그가 즉시 확인됩니다.

5. Lambda를 사용하기 좋은 상황

이미지 리사이징 자동화 S3에 이미지가 업로드되면 Lambda가 자동 실행되어 썸네일을 생성합니다. EC2 서버가 항상 켜져 있을 필요 없이 이미지가 업로드될 때만 실행됩니다.

API 백엔드 API Gateway와 Lambda를 연결하면 서버 없이 REST API를 만들 수 있습니다. 트래픽이 적을 때는 비용이 거의 발생하지 않습니다.

스케줄 작업 CloudWatch Events(EventBridge)와 연결해 매일 새벽 통계를 집계하거나 리포트를 발송하는 배치 작업을 구성합니다.

웹훅 처리 GitHub, Slack 등 외부 서비스의 웹훅 이벤트를 받아 처리합니다.

6. Lambda의 현실적인 한계

Lambda는 만능이 아닙니다. 아래 상황에서는 적합하지 않을 수 있습니다.

실행 시간 제한이 최대 15분입니다. 그보다 오래 걸리는 작업은 EC2나 ECS를 사용해야 합니다.

콜드 스타트로 인해 응답 속도가 일정하지 않을 수 있습니다. 응답 속도가 중요한 서비스라면 Provisioned Concurrency를 사용하거나 EC2를 고려합니다.

Lambda는 상태를 저장하지 않습니다. 실행 간 데이터를 공유하려면 DynamoDB, S3, ElastiCache 같은 외부 저장소를 별도로 사용해야 합니다.

7. 정리 및 다음 단계

오늘 배운 핵심을 정리합니다.

  • Lambda는 코드만 업로드하면 이벤트 발생 시 자동으로 실행되는 서버리스 서비스입니다.
  • 서버 관리가 필요 없고 실행되지 않는 시간에는 비용이 발생하지 않습니다.
  • 이미지 처리, API 백엔드, 스케줄 작업 등에 적합합니다.
  • 최대 15분 실행 제한과 콜드 스타트 현상을 고려해야 합니다.

다음 글에서는 AWS CloudFront CDN으로 전 세계에 빠르게 콘텐츠를 배포하는 방법을 알아보겠습니다.

댓글 남기기

광고 차단 알림

광고 클릭 제한을 초과하여 광고가 차단되었습니다.

단시간에 반복적인 광고 클릭은 시스템에 의해 감지되며, IP가 수집되어 사이트 관리자가 확인 가능합니다.