서버리스, Lambda

은채의 성장통·2025년 2월 21일
0

AWS

목록 보기
73/79

서버리스(Serverless)란?

서버리스(Serverless)란 서버를 직접 관리할 필요 없이 애플리케이션을 실행할 수 있는 클라우드 컴퓨팅 모델을 의미한다. 하지만 "서버가 없다"는 뜻이 아니라, 서버의 프로비저닝, 유지보수, 확장 등을 클라우드 제공자가 자동으로 처리한다는 의미이다.

즉, 개발자는 코드(함수)를 배포하기만 하면 되고, 나머지 인프라 관리(예: 서버 운영, 확장, 보안 패치 등)는 클라우드 제공자가 담당한다. 서버리스 환경에서는 데이터베이스, 메시징 시스템 등도 포함되어 있으며, 대표적인 AWS의 서버리스 서비스로는 다음과 같은 것들이 있다.

  • 컴퓨팅: AWS Lambda, Fargate
  • 데이터베이스: DynamoDB, Aurora Serverless
  • 스토리지: S3
  • 메시징 & 이벤트 처리: SNS, SQS, Kinesis Data Firehose
  • API 관리: API Gateway

AWS Lambda란?

AWS Lambda는 서버를 직접 관리하지 않고 코드를 실행할 수 있는 이벤트 기반 서버리스 컴퓨팅 서비스이다. 특정 이벤트(예: S3 파일 업로드, DynamoDB 변경, API 요청 등)에 따라 자동으로 실행되며, 사용한 만큼만 비용을 지불하는 온디맨드 실행(On-Demand Execution) 방식이다.

AWS Lambda vs EC2 비교

항목EC2AWS Lambda
서버 관리직접 인스턴스 관리 필요관리 필요 없음
실행 방식지속 실행이벤트 기반 실행
확장성오토스케일링 그룹 필요자동 확장
비용사용 시간 기준 과금실행한 함수 시간 기준 과금
제한 사항없음최대 실행 시간 제한(현재 15분)

Lambda의 장점

  1. 비용 절감: 실행 시간 기준으로 과금되므로, EC2처럼 지속적인 비용 부담이 없음.
  2. 자동 확장: 요청량이 많아지면 Lambda 함수가 자동으로 확장됨.
  3. 다양한 AWS 서비스와의 연계: API Gateway, DynamoDB, S3, SNS, SQS 등과 쉽게 통합 가능.
  4. 다양한 프로그래밍 언어 지원: Python, Node.js, Java, Go 등 여러 언어로 개발 가능.
  5. 모니터링 가능: AWS CloudWatch를 통해 실시간 로그 및 지표를 확인할 수 있음.

Lambda와 다양한 AWS 서비스 연동

AWS Lambda는 다양한 서비스와 통합되어 서버리스 아키텍처를 구성할 수 있다. 아래 표는 Lambda가 연동 가능한 주요 AWS 서비스 및 그 역할을 정리한 것이다.

서비스역할
S3파일 업로드 시 트리거로 Lambda 실행
API GatewayHTTP 요청을 받아 Lambda 호출
DynamoDB데이터 변경 시 트리거를 통해 Lambda 실행
Kinesis실시간 스트리밍 데이터를 처리
CloudWatch LogsLambda 실행 로그 저장
CloudWatch Events특정 이벤트 발생 시 Lambda 실행 (예: 일정 시간마다 실행)
SNS메시지를 수신하여 Lambda 실행
SQS메시지 큐에서 이벤트를 읽어와 처리
EventBridge다양한 AWS 서비스 이벤트와 연동

예제: S3 + Lambda + DynamoDB

  1. 사용자가 S3에 이미지를 업로드하면 Lambda가 자동으로 실행됨.
  2. Lambda가 해당 이미지를 처리하여 썸네일을 생성함.
  3. 생성된 썸네일을 다시 S3에 저장함.
  4. 썸네일의 정보(경로, 크기 등)를 DynamoDB에 기록함.

이러한 과정은 Lambda를 활용하여 완전히 자동화할 수 있으며, 서버를 직접 관리하지 않아도 되는 서버리스의 대표적인 활용 사례이다.


Lambda를 활용한 스케줄링 (Cron 작업)

Lambda는 CloudWatch Events를 사용하여 특정 시간에 실행될 수 있다. 예를 들어, 1시간마다 Lambda를 실행하는 크론 작업을 설정할 수 있다.

예제: 1시간마다 실행되는 Lambda 설정

  1. CloudWatch Events에서 새로운 규칙 생성.
  2. cron(0 * * * ? *)과 같은 Cron 표현식을 사용하여 1시간마다 실행되도록 설정.
  3. 해당 이벤트가 Lambda 함수를 호출하도록 구성.

이 방식으로 서버를 직접 관리하지 않고도 특정 시간에 자동 실행되는 배치 작업을 수행할 수 있다.


결론

서버리스는 서버를 직접 운영하지 않고도 애플리케이션을 배포하고 실행할 수 있는 강력한 아키텍처이다. AWS Lambda를 활용하면 온디맨드 실행, 자동 확장, 비용 절감 등의 장점을 얻을 수 있으며, 다양한 AWS 서비스와 연동하여 완전한 서버리스 환경을 구축할 수 있다.

특히, S3, DynamoDB, API Gateway, SNS, SQS 등과 결합하면 이벤트 기반 아키텍처를 쉽게 구현할 수 있으며, Cron 작업을 활용하여 정기적인 자동화 작업도 가능하다.

즉, Lambda를 활용하면 최소한의 코드로 복잡한 서버 운영 없이 강력한 애플리케이션을 구축할 수 있다.

profile
인생 별거 없어

0개의 댓글