AWS Lambda 기초 개념과 작동 방식

미남잉·7일 전
0
post-thumbnail
  • AWS Lambda(이하 Lambda)는 작은 프로그램을 실행하는 구조
  • 미리 등록해두면 언제든지 실행 가능
  • S3와 조합해 사용하는 방식

AWS Lambda란

  • 데이터나 요청에 대한 실시간 처린나 백엔드 처리를 자동으로 실행하는 구조
  • 전용 서버를 구축하거나 관리하지 않아도 필요한 이벤트가 자동으로 실행되어 처리됨
  • 서버에 상주하는 프로그램과 다르게 프로그램 실행 시에만 요금이 부과됨

Lambda 함수라는 형식의 함수를 사용하지만 프로그래밍 언어로 작성한 코드를 바타응로 ‘Lambda 콘솔’을 사용하여 GUI를 만듦

  1. 파일을 저장한다 (S3 버킷)
  2. 파일 저장이 트리거가 되어 함수가 호출된다
  3. 썸네일을 생성한다

Lambda 함수는 Lambda 서비스에 저장됨

임의의 작업이 트리거가 되어 함수를 호출해 특정 AWS 리소스에서 작업이 수행됨

대표적인 예는 S3 버킷에 이미지를 저장하면 썸네일 생성 함수를 호출하여 자동으로 썸네일이 작성되는 예

용어

  • 이벤트 구동: S3에 파일을 저장하거나 DynamoDB에 데이터를 저장하거나 SES에 메일이 도착하는 등 AWS 서비스에 어떠한 변화가 생기면 Lambda 프로그램을 실행할 수 있음
  • CGI를 대신하는 Lambda: API Gateway와 조합하여 웹 CGI처럼 사용할 수 있음

작동 방법

사용자 → API Gateway → Lambda (라우터) → 비즈니스 로직 → DB → 응답
  1. 사용자가 앱에서 API 요청을 보냄
  2. 해당 요청은 API Gateway → 연결된 Lambda 함수로 전달
  3. Lambda 함수가 실행되어 DB 쿼리나 파일 처리 등 작업 수행
  4. 응답을 클라이언트에 반환

장점

  • 서버 관리 필요 없음 (인프라 자동 관리)
  • 작은 단위로 기능 분리 → 협업과 유지보수 용이
  • 기능별로 권한, 리소스, 스케일링 설정 가능

결론

  • 람다 = AWS에서 실행되는 기능별 백엔드 코드 묶음
  • 모듈 단위로 쪼개진 백엔드 서비스 단위로 관리
  • API 처리, 데이터 처리, 이미지 분석 등 다양한 역할을 담당

1. Lambda 코드 흐름 분석(create/handler.js)

const { get_create_query } = require('./get_create_query');
const { execute } = require('../utils/db');

exports.handler = async (event) => {
  const body = JSON.parse(event.body);
  const query = get_create_query(body);
  const result = await execute(query);

  return {
    statusCode: 200,
    body: JSON.stringify({ success: true, data: result }),
  };
};

설명:

  • event.body에서 요청 데이터를 파싱
  • 입력값을 기반으로 쿼리 문자열 생성 (get_create_query)
  • DB에 실행 (execute)
  • 응답 반환

2. Lambda에서 DB 연결

A. 직접 연결 (서버리스 RDS 방식)

const mysql = require('mysql2/promise');

const pool = mysql.createPool({
  host: process.env.DB_HOST,
  user: process.env.DB_USER,
  password: process.env.DB_PASSWORD,
  database: process.env.DB_NAME,
});

exports.execute = async (query) => {
  const [rows] = await pool.query(query);
  return rows;
};
  • DB 커넥션 풀을 만들어 재사용 (cold start 방지)
  • Lambda가 RDS 인스턴스의 보안 그룹 안에 있어야 접근 가능
  • 환경변수(process.env)를 통해 DB 접속 정보 관리

B. 프록시/커넥터 이용 (Aurora Serverless 등에서)

  • 데이터베이스 프록시(DB Proxy)를 쓰면 커넥션 풀 관리가 쉬워짐
  • 동시에 많은 람다 인스턴스가 실행될 때도 성능 유지 가능

3. Lambda와 API Gateway 관계

API Gateway 역할

  • HTTP 요청을 받아서 어떤 Lambda 함수로 보낼지를 결정
  • RESTful API 구조 (예: /projects/annotations)를 정의하는 레이어

연결 흐름

[클라이언트 요청]
    ↓
[API Gateway]
    ↓ (라우팅 규칙에 따라)
[Lambda 함수 실행]
    ↓
[DB 쿼리, 처리 등]
    ↓
[응답 → API Gateway → 사용자]

예시: POST /projects

{
  "resource": "/projects",
  "httpMethod": "POST",
  "body": "{\"title\": \"서울 도로\"}"
}

API Gateway 설정:

{
  "/projects": {
    "POST": "lambda:business-app-projects-create"
  }
}

→ API Gateway가 이 요청을 자동으로 해당 Lambda에 전달하고, 결과를 사용자에게 전달


부가적으로 알아야 할 것

항목설명
이벤트(event)Lambda로 전달되는 요청 정보(JSON 형태)
Context실행 환경 정보 (남은 시간, 함수 이름 등)
Cold Start첫 실행 시 초기화 지연 (DB 연결 등 주의 필요)
IAM RoleLambda가 DB 또는 S3 등에 접근하기 위한 권한 설정
profile
Computer Vision Engineer

0개의 댓글