[AWS] Lambda

gyeol·2025년 10월 22일

AWS

목록 보기
12/20
post-thumbnail

AWS Lambda

AWS Lambda는 이벤트에 따라 자동으로 실행되는 서버리스 컴퓨팅 서비스로, 서버 관리 없이 코드를 실행할 수 있도록 설계되어 있다.

서버리스 컴퓨팅?
서버를 직접 관리할 필요가 없는 컴퓨팅 서비스이다. 그렇기 때문에 운영 오버헤드를 최소화할 수 있다.

사용자는 람다에 원하는 함수를 작성하고 필요할 때 그 함수를 사용할 수 있다.

특징설명
서버리스 아키텍처서버를 직접 프로비저닝, 관리 또는 스케일링할 필요 없이 애플리케이션 및 서비스를 구축하고 실행 가능
이벤트 기반특정 이벤트가 발생하면 코드가 실행되어야 함
최소 권한 원칙사용자, 역할 또는 서비스가 작업을 수행하는 데 필요한 최소한의 권한만 부여해야 함
느슨한 결합시스템 구성 요소들이 서로 독립적으로 변경될 수 있도록 설계해야 함
운영 오버헤드 최소화인프라 관리 및 유지 보수에 드는 시간, 노력 최소화 가능
고가용성시스템이 장애가 발생했을 때에도 지속적으로 작동하며 서비스 중단 최소화
내결함성시스템 구성 요소 중 일부가 실패하더라도 시스템 전체가 중단되지 않고 작동하는 능력

언제 사용해야 할까?

코드를 계속 실행하기보다는 특정 시기에만 실행시키는 경우에 Lambda를 사용하면 된다.

  • 서버를 띄우지않고 간단한 코드만 실행시키려는 경우
  • 특정 주기로 코드를 실행시켜야 하는 경우
  • 트리거가 실행될 때만 코드를 실행시키고 싶은 경우

Lambda 트리거

AWS Lambda 함수를 자동으로 실행시키는 이벤트 소스를 말한다. 즉, 무엇이 람다를 작동시킬지 정의하는 트리거에 대해 알아보자.

상황트리거Lambda가 하는 일
S3에 이미지가 업로드됨S3 이벤트 트리거이미지 리사이징, 썸네일 생성
매일 아침 6시에 자동 실행EventBridge 스케줄 트리거매일 데이터 백업 수행
DynamoDB 테이블의 데이터 변경DynamoDB Streams 트리거변경된 데이터 로그 기록
API 호출이 들어옴API Gateway 트리거클라이언트 요청 처리 및 응답 반환
메시지가 SQS 큐에 들어옴SQS 트리거큐에 들어온 작업을 처리
SNS에서 알림 발송SNS 트리거알림 메시지 내용을 처리하거나 저장

보안 및 아키텍처 설계

➡️ 최소 권한 원칙

Lambda 함수가 오직 필요한 권한만 가지도록 제한한다.

  • 함수마다 전용 IAM Role을 부여해 역할 간 권한 누수 방지
  • 리소스 기반 정책 : S3, SNS 등 다른 서비스가 Lambda를 호출할 수 있도록 허용하는 정책

➡️ 자격 증명 관리

민감한 정보를 안전하기 관리하는 방법이다.

  • IAM 사용자보다는 IAM Role 사용
  • 평문으로 자격 증명을 저장하는게 아닌 AWS KMS로 암호화된 환경 변수 설정
  • 민감한 데이터들은 Secrets Manager에 저장한 후 Lambda에서 참조
  • 네트워크 : 내부 리소스 접근이 필요한 경우 VPC 내부에서 Lambda 실행
    • Lambda를 프라이빗 서브넷에 배포하여 외부 인터넷없이 RDS, ElasticCache 등 접근 가능

성능 및 비용 최적화

1. 콜드 스타트 최적화

람다는 리소스를 효율적으로 사용하기 위해 오랫동안 사용하지 않을 경우 잠시 컴퓨팅 파워를 꺼두고 있는다. 그래서 다시 사용하려고 하면 약간의 시간이 걸린다. 이렇게 딜레이가 생기는 상황을 콜드 스타트라고 한다.
반대로, EC2의 경우 항상 가동된 상태에서 요청을 받을 준비가 되어 있기에 딜레이가 없다. 이 상황을 웜 스타트라고 한다.

이를 해결하기 위해 다음과 같은 방법이 있다.

  • Provisioned Concurrency
    함수를 미리 초기화하여 콜드 스타트 제거 및 응답 지연 시간 감소
  • Lambda 스냅샷
    JAVA 런타임의 콜드 스타트를 비용 효율적으로 줄임

2. 컴퓨팅 리소스 최적화

Aws Compute Optimizer를 활용한다.

3. 비용 효율적 아키텍처

Compute Saving Plan을 사용해 EC2 뿐만 아니라 Lambda에서도 컴퓨팅 리소스에 비용 절감 효과가 있다.

사용 사례

이미지 처리 분야

사용자가 이미지를 업로드하면 S3 이벤트를 트리거로 하여 Lambda가 자동으로 이미지를 리사이즈하거나 압축한다. 이를 통해 EC2 부하를 줄이고 웹사이트 성능과 응답 속도를 향상 시킬 수 있다.

이벤트 기반 아키텍처

Lambda가 S3, SQS 등과 연계되어 느슨하게 결합된 시스템을 구현할 수 있다. 예를 들어 S3 → SQS → Lambda로 이어지는 구조를 통해 안정적이고 확장 가능한 이벤트 처리를 수행하며 Publish/Subscribe 패턴을 구현해 서비스 간 의존도를 낮출 수 있다.
이벤트 기반이기 때문에 확장성과 유연성이 높다.

Pub/Sub 패턴?
Publisher(발행자)가 메시지를 보내면 Subscriber(구독자)가 필요한 메시지만 받아보는 구조이다.
서로 직접적으로 연결되어 있진 않으면 Amazon SNS, EventBridge와 같은 메시지 브로커가 중간에서 이벤트를 전달한다.

웹 애플리케이션 백엔드

API Gateway와 Lambda를 연동해 서버리스 API를 구축할 수 있다. 이를 통해 정적 웹 프론트엔드와 통합된 완전 서버리스 웹 서비스를 구현할 수 있다.

API Gateway?
개발자가 어떤 규모로든 게시, 유지 관리, 모니터링 등을 하는데 도움이 되는 완전 관리형 서비스를 말한다.

데이터 처리 및 분석

S3에 업로드된 JSON 문서를 자동으로 읽어 분석하거나 센서 데이터를 집계 및 요약하는 등 데이터 파이프라인을 Lambda로 구성할 수 있다.

자동화된 작업

EventBridge를 이용해 일정 주기로 Lambda 함수를 주기적으로 실행할 수 있다. 예를 들어 데이터베이스를 스캔해 주기적으로 이메일을 발송하는 등의 작업을 자동으로 수행할 수 있다.

데이터베이스 연동

Dynamo DB나 RDS등과 쉽게 통합되며 온프레미스 데이터베이스에도 접근할 수 있다. 데이터베이스 자격 증명은 AWS Secrets Manager를 통해 안전히 관리되고 자동 회전 기능을 통해 보안을 강화할 수 있다.

profile
공부 기록 공간 '◡'

0개의 댓글