Serverless Compution란 무엇인가?
우선 Lambda를 리뷰하기 전에 Serverless 개념을 설명드리겠습니다. Serverless Compution은 클라우드 공급자가 서버 할당 및 프로비저닝을 동적으로 관리하는 클라우드 컴퓨팅 실행 모델입니다. 이름에도 불구하고 서버는 여전히 관련되어 있지만 관리는 개발자로부터 추상화됩니다. 즉 서버를 직접 관리할 필요 없이 클라우드에서 코드를 실행하는 방법입니다. 서버를 계속 사용하더라도 클라우드 공급자가 모든 서버 관련 작업을 처리합니다. 다음 주요 사항입니다.
- 1. Event 기반 : 사용자 요청이나 파일 업로드와 같은 특정 이벤트에 대한 응답으로 코드가 실행됩니다.
- 2. 서버 관리 없음 : 서버 설정, 유지 관리 또는 확장에 대해 걱정할 필요가 없습니다. 클라우드 제공업체가 모든 것을 처리합니다.
- 3. 자동 확장 : 시스템은 필요에 따라 더많거나 적은 요청을 처리하도록 자동으로 조정됩니다.(Scale-Out)
- 4. 사용한 만큼만 지불 : 코드가 실행된 실제 시간에 대해서만 비용을 지불하므로 비용이 절약됩니다.
- 5. 코드에 집중 : 기본 인프라에 대한 걱정 없이 코드 작성에 집중할 수 있습니다.
AWS Lambda란?
AWS Lambda란 AWS에서 제공하는 서버리스 컴퓨팅 서비스입니다. window, Linux 등 OS 같은 인프라를 관리할 필요가 없어 개발자는 기본 인프라 걱정 없이 코드에 집중할 수 있습니다. 이뿐만 아니라 해당 위에 있는 Serverless Compution 특징을 모두 가지고 있습니다. 또한 python, node.js, java 등 여러 다양한 언어를 지원합니다. 다음은 Lambda 서비스를 좀 더 자세히 살펴보겠습니다.
AWS Lambda의 장점
비용 효율성
- 종량제 : 코드가 실제로 사용한 컴퓨팅 시간과 요청 수에 대해 비용을 지불하면 된다. 즉 코드가 실행되지 않을 때 비용이 발생하지 않습니다.
자동 확장
- 가변 로드 처리 : Lambda는 수신 요청에 따라 자동으로 확장됩니다. 하루에 대용량 건의 요청이 오든 상관없이 조정합니다.
- 효율적인 리소스 활용 : 워크로드에 맞게 실행 중인 인스턴스 수를 자동으로 조정하여 리소스를 효율적으로 사용할 수 있도록 합니다.
서버 자동 관리
- AWS 인프라 관리 자동 : AWS는 기본 인프라를 대신 처리하므로 개발자는 코드 작성에 집중할 수 있습니다.
- 운영 복잡성 감소 : 서버를 프로비저닝, 구성 및 관리할 필요가 없어 편합니다.
빠른 배포 및 업데이트
- 신속한 배포 : 개발자는 기능을 빠르게 배포하고 업데이트하여 신속한 개발과 반복을 가능하게 합니다.
이벤트 기반 아키텍처
- 호환성 : 다른 AWS 서비스와 원활하게 작동하여 S3, DynamoDB, API Gateway, IoT Core 등 쉽게 호환이 가능합니다.
- 트리거 실행 : Database 변경 및 IoT Core 반응 등 특정 이벤트에 의해 함수가 트리거 되므로 이벤트 중심 애플리케이션에 이상적입니다.
다양한 언어 지원
- 언어의 유연성 : Node.js, Pyhon, Java, Go 등 여러 프로그래밍 언어를 지원합니다.
AWS Lambda의 단점
ColdStart 지연시간
- 초기 지연 : 한동안 유휴 상태였던 함수를 처음 호출하면 지연이 발생할 수 있으며, 이는 특히 지연 시간에 민감한 애플리케이션의 경우 성능에 영향을 미칠 수 있습니다.
실행 시간 초과
- 단기 실행 : 각 Lambda 함수 실행의 최대 제한 시간은 15분입니다. 즉 장기적으로 실행하는 프로세스는 Lambda에 적합하지 않습니다.
리소스 제한
- 실행 제한 : 최대 메모리 할당(10,240MB), 실행 시간 초과(15분)에 제한이 있습니다.
AWS Lambda Service 활용
이벤트 기반 애플리케이션
- HTTP 요청 또는 파일 업데이트에 응답하는 애플리케이션에 이상적입니다. 예를 들어 AWS S3에 업로드된 파일을 처리하거나, DynamoDB 테이벌의 업데이트에 반응하거나, AWS API Gateway를 통해 API를 요청을 처리합니다.
Microarchitecture 서비스
- 소규모의 독립적인 서비스가 애플리케이션의 다양한 부분을 처리하는 마이크로서비스 아키텍처를 구축하는데 이상적입니다.
- AWS Lambda를 사용하면 개별 기능을 독립적으로 배포하여 유지 관리성과 확장성을 높일 수 있습니다.
IoT 서비스
- IoT 장치를 AWS IoT 서비스에 연결하면 클라우드의 다양한 시나리오를 처리할 수 있습니다. AWS Lambda는 MQTT 및 HTTP 프로토콜의 데이터를 처리합니다. 이는 AWS IoT와 Lambda가 함께 작동하여 IoT 장치의 데이터를 처리하는 방식의 핵심을 포착합니다.
AWS Lambda 비용
아키텍처 | 시간 | 요청 |
x86 요금 | ||
처음 6십억GB-초/월 | GB-초당 0.0000166667 USD | 요청 1백만 건당 0.20 USD |
다음 9십억GB-초/월 | GB-초당 0.000015 USD | 요청 1백만 건당 0.20 USD |
다음 150억GB-초/월 | GB-초당 0.0000133334 USD | 요청 1백만 건당 0.20 USD |
Arm 요금 | ||
처음 75억GB-초/월 | GB-초당 0.0000133334 USD | 요청 1백만 건당 0.20 USD |
다음 112억 5천GB-초/월 | GB-초당 0.0000120001 USD | 요청 1백만 건당 0.20 USD |
다음 187억 5천GB-초/월 | GB-초당 0.0000106667 USD | 요청 1백만 건당 0.20 USD |
- 해당 AWS Lambda 비용표입니다. AWS 공식문서를 참조하여 만들었습니다 해당 비용은 아시아 태평양(서울) 기준입니다.
- AWS Cloud 서비스를 사용하면서 비용 절감은 필수!
Reference
https://www.ibm.com/kr-ko/topics/serverless
https://aws.amazon.com/ko/lambda/
https://aws.amazon.com/ko/lambda/pricing/
https://docs.aws.amazon.com/ko_kr/iot/latest/developerguide/what-is-aws-iot.html