서버리스(Serverless)란 서버를 직접 관리할 필요 없이 애플리케이션을 실행할 수 있는 클라우드 컴퓨팅 모델을 의미한다. 하지만 "서버가 없다"는 뜻이 아니라, 서버의 프로비저닝, 유지보수, 확장 등을 클라우드 제공자가 자동으로 처리한다는 의미이다.
즉, 개발자는 코드(함수)를 배포하기만 하면 되고, 나머지 인프라 관리(예: 서버 운영, 확장, 보안 패치 등)는 클라우드 제공자가 담당한다. 서버리스 환경에서는 데이터베이스, 메시징 시스템 등도 포함되어 있으며, 대표적인 AWS의 서버리스 서비스로는 다음과 같은 것들이 있다.
AWS Lambda는 서버를 직접 관리하지 않고 코드를 실행할 수 있는 이벤트 기반 서버리스 컴퓨팅 서비스이다. 특정 이벤트(예: S3 파일 업로드, DynamoDB 변경, API 요청 등)에 따라 자동으로 실행되며, 사용한 만큼만 비용을 지불하는 온디맨드 실행(On-Demand Execution) 방식이다.
항목 | EC2 | AWS Lambda |
---|---|---|
서버 관리 | 직접 인스턴스 관리 필요 | 관리 필요 없음 |
실행 방식 | 지속 실행 | 이벤트 기반 실행 |
확장성 | 오토스케일링 그룹 필요 | 자동 확장 |
비용 | 사용 시간 기준 과금 | 실행한 함수 시간 기준 과금 |
제한 사항 | 없음 | 최대 실행 시간 제한(현재 15분) |
AWS Lambda는 다양한 서비스와 통합되어 서버리스 아키텍처를 구성할 수 있다. 아래 표는 Lambda가 연동 가능한 주요 AWS 서비스 및 그 역할을 정리한 것이다.
서비스 | 역할 |
---|---|
S3 | 파일 업로드 시 트리거로 Lambda 실행 |
API Gateway | HTTP 요청을 받아 Lambda 호출 |
DynamoDB | 데이터 변경 시 트리거를 통해 Lambda 실행 |
Kinesis | 실시간 스트리밍 데이터를 처리 |
CloudWatch Logs | Lambda 실행 로그 저장 |
CloudWatch Events | 특정 이벤트 발생 시 Lambda 실행 (예: 일정 시간마다 실행) |
SNS | 메시지를 수신하여 Lambda 실행 |
SQS | 메시지 큐에서 이벤트를 읽어와 처리 |
EventBridge | 다양한 AWS 서비스 이벤트와 연동 |
이러한 과정은 Lambda를 활용하여 완전히 자동화할 수 있으며, 서버를 직접 관리하지 않아도 되는 서버리스의 대표적인 활용 사례이다.
Lambda는 CloudWatch Events를 사용하여 특정 시간에 실행될 수 있다. 예를 들어, 1시간마다 Lambda를 실행하는 크론 작업을 설정할 수 있다.
cron(0 * * * ? *)
과 같은 Cron 표현식을 사용하여 1시간마다 실행되도록 설정.이 방식으로 서버를 직접 관리하지 않고도 특정 시간에 자동 실행되는 배치 작업을 수행할 수 있다.
서버리스는 서버를 직접 운영하지 않고도 애플리케이션을 배포하고 실행할 수 있는 강력한 아키텍처이다. AWS Lambda를 활용하면 온디맨드 실행, 자동 확장, 비용 절감 등의 장점을 얻을 수 있으며, 다양한 AWS 서비스와 연동하여 완전한 서버리스 환경을 구축할 수 있다.
특히, S3, DynamoDB, API Gateway, SNS, SQS 등과 결합하면 이벤트 기반 아키텍처를 쉽게 구현할 수 있으며, Cron 작업을 활용하여 정기적인 자동화 작업도 가능하다.
즉, Lambda를 활용하면 최소한의 코드로 복잡한 서버 운영 없이 강력한 애플리케이션을 구축할 수 있다.