AWS/Serverless Lambda

[AWS] Serverless 서비스 - AWS Lambda

yubi5050 2023. 6. 6. 16:07

서버리스(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 요청

출처 : https://tech.junhabaek.net/zappa%EC%99%80-github-action%EC%9D%84-%ED%99%9C%EC%9A%A9%ED%95%9C-%EC%84%9C%EB%B2%84%EB%A6%AC%EC%8A%A4-django-application-aws-%EB%B0%B0%ED%8F%AC-%ED%8A%B8%EB%9F%AC%EB%B8%94-%EC%8A%88%ED%8C%85-15604ed6bbcc