서버리스(Serverless) 아키텍쳐란?
서버리스 아키텍처 란 서버를 직접 관리할 필요가 없는 서버를 의미
서버리스의 큰 갈래
서버리스의 큰 갈래는 FasS와 BaaS로 나눌 수 있는데, 정의는 다음과 같다.
- FaaS (Function as a Service) : 비즈니스 로직을 함수 단위로 구현하여 서비스 형태로 제공하는 방식
- (ex. AWS Lambda, Azure Functions, Google Cloud Functions)
- BaaS(Backend as a Service) : 클라우드 서비스에서 제공 되는 서버의 특정 기능을 단순하게 이용하는 방식
- (ex. 구글 Firebase, 구글 Fabric)
AWS Lambda 란? (장단점)
AWS Lambd는Serverless FaaS의 일종으로, 서버의 프로비저닝(IT 인프라를 생성하고 설정하는 프로세스)이나 평소 운영에 대한 추가적인 리소스 없이, 비즈니스 로직을 서비스로 제공 할 수 있도록 해주는 컴퓨팅 서비스
수요가 많을 때는 빠르게 Scale-up 해야 하고, 수요가 없을 때는 Scale-down 해야 하는 서비스에 이상적인 서비스
장점
- 확장성이 좋음 -> 자동으로 Scale-up / Scale-down을 해줌
- 가용성이 좋음 -> 이벤트 기반 비용 측정으로 비용이 매우 저렴한 편에 속함
- 패키징 단위의 배포 가능
- 프로비저닝, 보안, 운영 등을 신경 쓸 필요가 없음
- 자동 스케일 업/다운
- 함수에 대한 동작 로그가 Cloudwatch(로그 기록 서비스)에 자동적으로 기록됨
- 다양한 언어로 로직 작성을 지원함 (Python, Node, Java, Go 등)
단점
- 성능 및 가능한 구성 방식 등이 클라우드 플랫폼에 종속적임 -> 원하는 기능이나 성능을 위해 클라우드 기술 검토 필요
- 처음 실행시 서버가 뜨는 과정에서 오래 걸림 -> warm start 옵션으로 개선됨
- 실행 시간 및 payload 용량에 한계 (AWS Lambda의 경우 15분 / 6mb 제한) / 소스코드 파일은 압축 50mb, 비압축 250mb
동작 원리
- lambda는 기본적으로 단일 요청을 처리하며 각 요청에 대해 컨테이너+process를 생성함
- api-gateway -> lambda는 비동기적으로 호출 가능
- lambda에서는 요청이 병렬적으로 들어오고 기존 인스턴스가 이미 수행중이라면, 인스턴스를 병렬적으로 늘려서 수행
- labmda의 요청에 대한 실행 과정 설명 (with. 인스턴스 생성)
AWS Lambda 활용하여 할 수 있는 것
아래 기능 외에도 다양한 기능들에 대해 작동 가능하다.
- (배치성 작업) CronJob 만들어서 일정 주기마다 기능 수행하게 하기
- (API 대용) API Gateway (API 구성 서비스) + Lambda(웹 서버 - FastAPI, Chalice 등) 조합을 통해 API 기능 수행
- (파일 처리) S3 이미지 업로드 웹 서버 만들기
- (스트림 처리) AWS Lambda로 Serverless 채팅 서비스 만들기
- (고가용성 구성 서버)
- (IoT / 모바일 백엔드) IoT나 모바일에서의 서드 파티 API 요청 처리 가능 (with. Amplify)
(추가) EC2 vs Serverless HTTP 요청 차이
일반 EC2 HTTP 요청
Serverless API Gateway + Lambda HTTP 요청
'AWS > Serverless Lambda' 카테고리의 다른 글
[AWS Lambda] Python Serverless 서비스 (Chalice) (0) | 2023.06.06 |
---|---|
[AWS Lambda] Python Serverless 서비스 (FastAPI + Mangum) (1) | 2023.06.06 |