티스토리 뷰

8-1. Lambda 소개

서버 없이 코드를 실행하는 함수 실행 서비스 (FaaS)

Serverless

서버를 안 쓰는 게 아니라 '서버를 신경 안 써도 되는 것'

  • 인프라 관리 불필요
  • 필요한 컴퓨팅 소스 동적 할당
  • 사용한만큼 비용 지불
  • 확장성과 보안성
  • 실시간 서비스에는 적합하지 않음(Cold Start)
  • Baas / Faas

Baas

이미 만들어진 백엔드를 API로 제공
  • Backend as a Service
  • 여러 백엔드 업무를 API로 제공함
    • 로그인, 데이터베이스, SNS 연동, 파일시스템 등
  • API를 사용한 만큼 비용 측정
  • 개발 시간 단축

Faas

내가 직접 함수 코드를 작성해서 실행
  • Function as a Service
  • 함수 제공 서비스
  • 프로그래밍 언어를 이용하여 함수 개발
  • 이벤트(트리거)가 발생하면 함수 호출 및 종료
  • 함수가 실행되는 횟수만큼 비용 측정
  BaaS FaaS
역할 완성된 기능 제공 함수 실행
코드 작성 거의 없음 필요
대표 S3, Firebase Lambda

 

Lambda

[ 전체 흐름 ]
이벤트 발생 → Lambda 실행 → 결과 반환

[ 예시 ]
1. S3에 파일 업로드
2. Lambda 실행
3. 데이터 처리
4. 결과 저장 (S3 / DB)
5. 이 전처리된 데이터가 담긴 S3에서 데이터를 가지고 Athena에서 분석 하는 등 기타 작업을 하면 됨
  • 서버리스 컴퓨팅 Faas
  • NodeJS, Python, Java 등 다양한 언어 지원
  • 이벤트, 트리거 기반 실행 (Event-driven)
  • 비용 및 운영관리 절감
  • 리소스 제한 (메모리 10GB, 실행시간 15분 등)
  • Cold Start
    • ✅ Cold Start는 Lambda가 처음 실행될 때 느린 현상을 말함 (꼭 Lambda에만 말하는건 아님)
    • 주로 컨테이너 생성 및 런타임 로딩으로 인해 발생됨
    • 예를들어 오랜 시간 호출이 없어서 다시 호출할때 느린 그 느낌
    • 그러니까 Lambda는 Cold Start 하니까 당연히 실시간 서비스에는 부적합한것이다.
  • 사용한만큼 지불
  • 배치 프로세싱, 이벤트 기반 실행

 

Lambda Pricing 과금 구조

  • (요청 수 x 요청당 비용) + (실행 시간 x 메모리 할당량 x 시간당 비용)

Free Tier Lambda 요금제

 

EC2 vs Lambda

  EC2 Lambda
컴퓨팅 모델 가상 머신(VM) 기반 함수 기반 서버리스
운영 방식 24시간 상시 실행 이벤트나 트리거 기반으로 실행
과금 방식 시간 단위 과금 사용한만큼 과금
유지보수 OS, 미들웨어 등 유지보수 필요 코드 업데이트와 설정만 관리
사용 사례 웹 서버, DB서버, 배포환경 이벤트 기반 데이터 처리, 로그 분석

 

 

Lambda 함수 구성

  • Context 객체에는 런타임 정보가 담겨져 있음

 

Trigger & Target

- 특정 이벤트가 발생하여 Trigger가 실행
  - S3 버킷에 객체 업로드
  - API Gateway를 통한 HTTP 요청
-> 결과 값에 대한 것을 Target으로 전달

 

Trigger

Lambda를 실행 시키는 것
  • Lambda 함수를 실행하도록 하는 이벤트 소스
  • S3, DynamoDB, SNS 등 여러 AWS 서비스 제공
  • 각 소스별로 다양한 이벤트 유형이 존재

Target

Lambda 실행 결과를 보내는 곳
  • 비동기 방식 호출의 실행 결과를 전달
  • 성공 또는 실패 이벤트에 대해 결과 전송
  • SNS 토픽, SQS Queue, Lambda 등

 


8-2. Lambda 사용해보기

아래와 같은 파이썬 코드를 통해 Lambda 를 구성해서 실행해보았다.

  • Test 전 코드 변경 사항을 항상 Deploy 해야 함!
import json

def lambda_handler(event, context):
    # TODO implement (실행 할 내용을 적어두면 됨)
    print('Hello World')    
    print(f'EVENT: {event}')


    return {
        'statusCode': 200,
        'body': json.dumps('Hello from Lambda!')
    }

8-3. S3와 연동하기

S3 버킷에 새로운 객체가 추가되면 Lambda 가 Trigger 되는 로직을 만들어보자.

 

1. 새로운 test event 미리 생성하기

 

생성된 test event의 event JSON을 바탕으로 아래와 같은 파이썬 코드를 작성하였다.

import json

def lambda_handler(event, context):
    # TODO implement
    # 버킷 명 출력
    print(event['Records'][0]['s3']['bucket']['name'])


    return {
        'statusCode': 200,
        'body': json.dumps('Hello from Lambda!')
    }

 

 결과물은 아래와 같게 잘 나오게 된다.

똑같이 객체 명도 보이도록 하면 아래와 같게 나오게 된다.

 

 

2. Trigger 설정

트리거 설정 화면

이 부분은 만약 S3에서 데이터 프로세싱을 해서 그 결과물을 해당 S3에 또 저장하게 되면

그 저장됨을 감지해서 또 Lambda 함수가 실행되기 때문에 (재귀적) 이는 비용이 증가할 수 있음을 인지하라는 배려(?)다. 

 

3. 실제 S3 버킷에 파일 업로드 후 동작 확인

S3 버킷에 파일(객체)를 업로드 후 

Lambda -> 모니터링 -> CloudWatch Logs 보기 클릭

 

아래와 같이 정상적으로 로그에 찍히는것을 볼 수 있다. (Bucket Name은 캡쳐 이슈로 잘못찍힘)

 

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2026/06   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함