서버리스 컴퓨팅
개요
서버리스 컴퓨팅(serverless computing)은 클라우드 컴퓨팅 실행 모델의 하나로, 클라우드 제공자가 애플리케이션 실행에 필요한 컴퓨팅 자원의 프로비저닝(provisioning), 스케일링(scaling), 관리(management)를 동적으로 처리한다.
요금은 미리 구매한 용량이 아니라, 애플리케이션이 실제로 소비한 컴퓨팅 시간, 메모리, 네트워크 사용량 등을 기반으로 청구된다.[1] 이로 인해 서버리스 컴퓨팅은 유틸리티 컴퓨팅(utility computing)의 일종으로 분류된다.
비록 '서버리스'라는 이름이 붙었지만, 실제로 서버가 존재하지 않는 것은 아니다.[2] 이 모델에서 "서버리스"란 의미는 다음과 같다:
- 서버 인프라 관리(서버 설치, 유지보수, 확장 등)가 개발자나 운영자에게서 완전히 추상화된다.
- 개발자는 비즈니스 로직 구현에만 집중할 수 있다.
서버리스 컴퓨팅은 다음과 같은 형태로 활용될 수 있다:
- 마이크로서비스 아키텍처와 함께 부분적으로 적용
- 완전 서버리스 애플리케이션으로 구성하여 프로비저닝 서버를 사용하지 않는 형태
대표적인 서버리스 플랫폼 예시:
- AWS Lambda
- Azure Functions
- Google Cloud Functions
- Cloudflare Workers
AWS Lambda
AWS Lambda는 Amazon Web Services(AWS)가 제공하는 서버리스 컴퓨팅 서비스로, 개발자가 서버를 프로비저닝하거나 관리할 필요 없이 코드를 실행할 수 있게 해준다.
주요 특징:
- 특정 이벤트(HTTP 요청, 파일 업로드, 데이터베이스 변경 등)에 반응하여 자동으로 함수 실행
- 초 단위 과금 (코드 실행 시간과 메모리 사용량 기준)
- 다양한 언어 지원: Python, Node.js, Java, Go, Ruby, .NET 등
- 자동 스케일링: 요청 수에 따라 자동으로 인스턴스가 증가/감소
기본 사용 방법
1. AWS Management Console 또는 CLI에서 Lambda 함수 생성 2. 트리거(Trigger)를 설정 (예: API Gateway, S3 업로드 이벤트) 3. 코드를 작성하거나 업로드 4. 실행 권한(IAM Role) 부여 5. 배포 후, 이벤트 발생 시 Lambda 함수 자동 호출
샘플 코드 (Python 예제)
아래는 AWS Lambda에서 기본적으로 많이 사용하는 Python 함수 예제이다:
def lambda_handler(event, context):
# 입력 이벤트를 출력
print("Received event:", event)
return {
'statusCode': 200,
'body': 'Hello from Lambda!'
}
- `event`: 트리거로부터 전달된 입력 데이터
- `context`: 함수 실행에 대한 메타 정보 (시간 초과, 함수 이름 등)
간단한 배포 예시 (CLI 이용)
AWS CLI를 사용하여 Lambda를 배포할 수도 있다:
# IAM Role이 생성되어 있다고 가정
aws lambda create-function \
--function-name hello-world \
--runtime python3.9 \
--role arn:aws:iam::123456789012:role/execution_role \
--handler lambda_function.lambda_handler \
--zip-file fileb://function.zip
서버리스 프레임워크
서버리스 아키텍처를 설계하고 배포하는 데 도움을 주는 다양한 프레임워크와 도구들이 존재한다.
주요 서버리스 프레임워크:
- Serverless Framework: AWS Lambda를 비롯해 다양한 클라우드 제공자(Azure, Google Cloud 등)를 지원하는 오픈소스 배포 도구. YAML 파일로 함수 정의 및 인프라 구성이 가능하다.
- AWS SAM (Serverless Application Model): AWS가 제공하는 서버리스 애플리케이션 설계 및 배포 프레임워크. CloudFormation을 기반으로 한다.
- Google Cloud Functions Framework: Google Cloud 플랫폼에 최적화된 서버리스 함수 개발 프레임워크.
- Azure Functions Tools: Azure Functions를 위한 로컬 개발, 디버깅, 배포 도구 모음.
- OpenFaaS: 쿠버네티스(Kubernetes) 기반 서버리스 오픈소스 프로젝트.
서버리스 프레임워크를 사용하면 다음과 같은 이점을 얻을 수 있다:
- 간편한 배포 및 버전 관리
- 인프라 코드(IaC, Infrastructure as Code) 지원
- 멀티 클라우드 또는 온프레미스 환경에 서버리스 앱 배포 가능
- CI/CD 파이프라인 통합 용이