AWS Service Review

AWS Serveless Lambda Review

GearDeveloper 2024. 5. 26. 23:31

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