관리 메뉴

yubyeong

클라우드(AWS) Lambda 개념 본문

클라우드(Cloud)

클라우드(AWS) Lambda 개념

yubyeong 2025. 5. 10. 18:05

AWS Lambda(람다) 

  • Lambda는 AWS에서 지원하는 이벤트에 대한 응답으로 코드를 실행하고 자동으로 기본 컴퓨팅 리소스를 관리하는 서버리스 컴퓨팅 서비스(FaaS 솔루션)이다.
  • 서버리스란 개발자가 서버를 관리할 필요 없이 애플리케이션을 빌드하고 실행할 수 있도록 하는 클라우드 네이티브 개발 모델.
  • 클라우드 제공업체가 서버 인프라에 대한 프로비저닝, 유지 관리 등을 대신 처리해주기에 개발자는 로직 작성에만 집중할 수 있다.
  • FaaS(Function-as-a-Service)
    • 개발자가 자체 인프라를 유지관리할 필요 없이 애플리케이션 패키지를 기능으로 빌드, 실행, 관리할 수 있게 해주는 일종의 클라우드 컴퓨팅 서비스.
    • 말 그대로 “함수를 서비스로 제공한다”라는 의미이다.
    • 개발자가 사용자 정의 서버 측 로직을 작성하지만 클라우드 제공 업체가 관리를 전담하는 서버 컨테이너에서 실행 되는 서비스 기능.
    • 서버에서 수행될 기능들을 개발자가 직접 코드로 작성하여 등록.
    • 실행 가능한 함수를 미리 등록해두고 트리거 발생시 알아서 호출 및 종료.
    • FaaS는 애플리케이션을 더 작게 쪼갠 함수를 배포하며 작업을 마치거나 일정 시간이 지나면 종료.
    • 호출한 함수의 횟수와 실행 시간에 따라 비용을 지불.
    • 대표적인 서비스로 AWS Lambdam, MS Azure Function 등이 있다.

✏️AWS Lambda는 서버를 프로비저닝하거나 관리할 필요 없이 코드를 실행하게 해주는 서버리스 컴퓨팅 서비스로서 모든 유형의 애플리케이션이나 백엔드 서비스에 대한 코드를 별도의 관리 없이 실행 가능.

→ 원하는 함수를 작성하고, 필요할 때 함수를 사용할 수 있다.


Lambda 기능

  • 커스텀 로직으로 다른 AWS 서비스 확장
    • 람다를 사용하면 Amazon S3 버킷과 Amazon DynamoDB 테이블 등의 AWS 리소스에 사용자 지정 로직을 추가하여 데이터가 클라우드로 들어오거나 클라우드를 통해 이동할 때 쉽게 컴퓨팅을 적용 가능.
  • 사용자 지정 백엔드 서비스 구축
    • Amazon API Gateway를 사용하여 구축된 사용자 지정 API 또는 람다 애플리케이션 프로그래밍 인터페이스(API)를 통해 온디맨드(AWS에서 사용자가 필요할 때 즉시 자원을 요청하고, 그만큼의 비용 지불의 클라우드 컴퓨팅 모델)로 트리거되는 새로운 백엔드 애플리케이션 서비스를 생성할 수 있다.
  • 지원 코드
    • 기본 라이브러리뿐 아니라 모든 서드 파티 라이브러리 사용 가능. 람다는 기본적으로 Java, Go, Powershell, Node.js, C#, Python, Ruby 코드를 지원하며, 그 밖에 프로그래밍 언어를 사용해 함수를 작성할 수 있도록 Runtime API도 제공한다.
  • 자동화된 관리
    • AWS Lambda를 사용하면 패치가 출시되어도 기본 운영 체제를 업데이트할 필요가 없으며 사용량 증가에 따른 서버 규모 조정이나 새로운 서버 추가에 대해 걱정하지 않아도 되며 고객은 차별화된 백엔드 서비스를 구축하는데 집중. AWS Lambda는 코드를 원할하게 배포하고 모든 관리, 유지 관리 및 보안 패치를 처리하며 Amazon CloudWatch를 통해 기본 제공 로깅 및 모니터링 기능을 제공.
  • 내결함성 기본 제공
    • 각 AWS 리전에 있는 여러 가용 영역(AZ)의 컴퓨팅 용량을 유지 관리하므로 개별 시스템이나 데이터 센터 시설에 장애가 발생해도 코드 보호 가능.
  • 컨테이너 이미지로서의 패키지 및 배포 기능
    • AWS Lambda는 컨테이너 이미지로 함수를 패키징하고 배포할 수 있는 기능을 지원해준다. 익숙한 컨테이너 이미지 도구, 워크플로 및 종속성을 사용하여 람다 기반 애플리케이션을 구축할 수 있다.
  • 사용한 만큼만 지불
    • AWS Lambda를 사용하면 서버 단위가 아닌 실행 기간에 대한 요금을 지불. Lambda 함수를 사용하면 코드 실행에 필요한 컴퓨팅 시간 및 자원된 요청에 대해서만 비용을 지불.
  • 유연한 리소스 모델
    • 함수에 할당할 메모리 양을 선택하면 AWS Lambda가 이에 맞춰서 CPU 성능과 네트워크 대역폭, 디스크 입력/출력(I/O)을 할당.

Lambda 장/단점

1. Lambda 장점

1-1. No Server Management (서버 관리 불필요)

  • AWS Lambda는 서버리스(serverless) 아키텍처를 제공하므로 사용자가 직접 서버를 구축하거나 유지관리할 필요가 없다.
  • 인프라 패치, OS 업데이트, 용량 계획 등을 AWS가 자동으로 처리.

1-2. Cost-Efficient (비용 효율성)

  • 사용한 만큼만 요금을 지불하는 방식(Pay-as-you-go)으로, 실행된 람다함수의 호출 수와 람다코드의 실행 시간에 따라 과금됩니다.
  • 서버를 계속 켜둘 필요가 없어 유휴 자원에 대한 비용 낭비가 없다.

1-3. Automatic Scaling (자동 확장)

  • 트래픽이 많아져도 Lambda는 자동으로 인스턴스를 병렬로 실행하여 수요를 처리. → 사용량에 따른 지속적인 규모를 조정.
  • 별도의 설정 없이도 높은 트래픽에 대해 자동으로 대응.

1-4. Built-in Fault Tolerance (내장된 장애 허용)

  • Lambda는 멀티 AZ(Availability Zone) 환경에서 실행되므로 고가용성과 내결함성을 기본 제공.
  • 높은 가용성 및 자동 복구
  • 함수 실패 시 자동 재시도 메커니즘을 지원하며, 로그 및 오류 처리를 CloudWatch로 쉽게 통합할 수 있다.

2. Lambda 단점

2-1. 리소스 제한

  • 람다는 메모리(최대 10GB) , 처리시간(최대 15분)으로 제한되어 있으므로 직접 서버에서 돌리는 거보다 미흡한 스펙.

2-2. ColdStart

  • 항상 돌아가는 것이 아닌 요청이 올때 AWS가 Lambda를 깨우는데 시간을 사용하기 때문에 응답에 딜레이가 있고 속도에 차이가 있다.
  • EC2 같은 경우 항상 가동된 상태에서 요청을 받기에 딜레이가 없다.
    • →이를 WarmStart라고 한다.

Lambda 함수 작성

  • 콘솔에서 람다 함수 생성을 통해 람다 함수 메뉴로 들어오면, 아래쪽에 함수코드에 샘플코드 확인.
exports.handler = async (event) => {
    // TODO implement
    const response = {
        statusCode: 200,
        body: JSON.stringify('Hello from Lambda!'),
    };
    return response;
};
  • Lambda 함수의 exports.handler 라는 약속된 이름의 디폴트 함수이며 람다를 실행할 시 이 핸들러가 호출이 되어 코드가 실행되는 방식.
  • 코드에서 전달되는 3가지 파라미터 :
  1. event:첫 번째 인수는 호출자로부터의 정보가 포함된 event 객체. 이 정보는 함수를 호출할 때 호출자가 JSON 형식 문자열로 전달하고, 런타임은 이 정보를 객체로 변환한다. AWS 서비스가 함수를 호출할 때, 이벤트 구조는 서비스별로 다르다.
  2. context:두 번째 인수는 컨텍스트 객체이며, 호출, 함수 및 실행 환경에 대한 정보가 포함되어 있음.
  3. callback:세 번째 인수는 callback이다. 비동기 응답을 전송하기 위해 필요하며, 위 코드와 같이 async 키워드를 이용해 promise 객체를 대신하서 사용할 수 있다.
  • 응답 객체는 상태코드와 함께 응답을 JSON 문자열 형태로 반환.
  • 이후 람다 트리거 기능을 사용하여 자동으로 람다 함수를 실행하도록 시나리오를 지정하여서 사용하면된다.
    • 예를 들어 S3에 이미지 파일이 올라오면 이를 트리거로 설정하여 람다함수를 실행하여 이미지 압축을 한다던지 이벤트를 지정할 수 있다.
    • 이외에도 API Gateway 서비스와 연동해서, 브라우저에서 REST API 를 요청하면 바로 람다 함수가 실행하도록 처리할 수 있다.

참고자료

https://aws.amazon.com/ko/lambda/

https://velog.io/@xgro/AWS-Lambda

https://www.youtube.com/watch?v=o3Y-9-NCbE8&t=11s

https://www.youtube.com/watch?v=t8sjTFM_tfE&t=9s

https://inpa.tistory.com/entry/AWS-📚-람다Lambda-개념-원리

https://inpa.tistory.com/entry/WEB-🌐-서버리스ServerLess-개념-💯-총정리-BaaS-FaaS#faas_function_as_a_service

'클라우드(Cloud)' 카테고리의 다른 글

클라우드(AWS) API Gateway 개념  (2) 2025.05.10
클라우드(AWS) S3 개념 및 버킷 생성  (0) 2025.05.10
클라우드(AWS) VPC, EC2 개념  (0) 2025.05.08
클라우드(AWS) 개념  (0) 2025.05.08