카테고리 없음

AWS의 람다 아키텍처는 무엇인가? 어떻게 동작하는가?

Ed2024 2024. 10. 26. 19:07

AWSLambda 아키텍처는 서버리스 컴퓨팅 모델로, 이벤트에 따라 코드를 실행할 수 있는 서비스입니다. AWS Lambda는 서버를 직접 프로비저닝하거나 관리하지 않고도 애플리케이션을 구축하고, 실행할 수 있도록 설계되었습니다. Lambda 아키텍처의 핵심 요소와 동작 원리를 구체적으로 설명하겠습니다.

 

 1. AWS Lambda의 핵심 개념

  1) 서버리스 (Serverless):

  • AWS Lambda는 서버리스 컴퓨팅 환경을 제공하여 사용자가 인프라를 관리하지 않아도 됩니다. AWS는 코드가 실행될 때 필요한 인프라를 자동으로 프로비저닝하고, 코드 실행이 끝나면 리소스를 해제합니다.

  2) 이벤트 기반 실행 (Event-driven Execution):

  • Lambda 함수는 특정 이벤트가 발생할 때 자동으로 트리거됩니다. 이러한 이벤트는 다양한 AWS 서비스(예: S3, DynamoDB, API Gateway, CloudWatch 등)와 통합되어, 파일 업로드, 데이터베이스 변경, HTTP 요청 등 다양한 상황에서 함수를 호출할 수 있습니다.

  3) 자동 스케일링 (Auto Scaling):

  • Lambda 함수는 동시에 여러 인스턴스를 실행할 수 있습니다. Lambda는 요청이 들어올 때마다 새로운 인스턴스를 생성하여 자동으로 확장하며, 트래픽 변화에 맞춰 동적으로 조정됩니다.

 2. Lambda 아키텍처의 구성 요소

  1) Lambda 함수:

  •  AWS Lambda에서 실행되는 코드 단위입니다. 사용자는 Lambda 콘솔 또는 CLI를 통해 코드를 업로드하거나, 직접 작성할 수 있습니다. 함수는 Python, Node.js, Java, Go 등 다양한 프로그래밍 언어로 작성할 수 있습니다.

  2) 트리거 (Trigger):

  •  Lambda 함수는 다양한 AWS 서비스로부터 이벤트를 트리거로 받아 실행됩니다. 예를 들어, S3 버킷에 파일이 업로드되면 해당 이벤트가 Lambda 함수를 호출할 수 있으며, API Gateway를 통해 HTTP 요청이 발생할 때 함수를 호출하는 것도 가능합니다.

  3) Lambda Layers:

  • 레이어는 Lambda 함수에서 공통적으로 사용되는 라이브러리나 패키지를 재사용할 수 있게 하는 기능입니다. 이를 통해 코드의 크기를 줄이고, 코드 관리 및 배포를 효율적으로 할 수 있습니다.

  4) 환경 변수 (Environment Variables):

  • Lambda 함수는 환경 변수를 통해 설정 정보를 전달받을 수 있습니다. 이를 통해 함수의 동작을 동적으로 변경할 수 있으며, 보안이 필요한 정보(예: API 키)를 안전하게 전달할 수 있습니다.

 3. Lambda 아키텍처의 동작 방식

Lambda 함수가 어떻게 동작하는지 일반적인 플로우를 통해 설명하겠습니다:

1) 이벤트 발생:

  • S3에 파일이 업로드되거나, DynamoDB에서 데이터가 변경되거나, API Gateway에서 HTTP 요청이 발생하는 등 다양한 이벤트가 발생할 수 있습니다.

2) 트리거 및 함수 호출:

  • 설정된 트리거에 따라 Lambda 함수가 호출됩니다. 예를 들어, S3 버킷에 파일이 업로드되면 해당 이벤트가 Lambda 함수를 트리거하여 코드를 실행하게 됩니다.

3) Lambda 환경에서 코드 실행:

  •  AWS는 자동으로 필요한 인프라를 프로비저닝하고, 사용자의 코드를 실행할 수 있는 환경을 설정합니다. 코드 실행에 필요한 리소스는 Lambda 함수의 실행 시간과 메모리 설정에 따라 자동으로 조정됩니다.

4) 실행 결과 및 응답 처리:

  • 함수가 실행된 후, AWS Lambda는 실행 결과를 호출한 서비스로 전달하거나 CloudWatch를 통해 로그를 기록합니다. 만약 API Gateway를 통해 HTTP 요청이 발생한 경우, 응답을 클라이언트에 전달합니다.

5) 리소스 해제:

  • 함수 실행이 완료되면 AWS Lambda는 인프라 리소스를 해제합니다. 이는 사용자가 사용한 만큼만 비용을 지불하게 하는 핵심 요소로, 불필요한 자원 낭비를 줄입니다.

 4. Lambda 아키텍처의 장점

  1) 비용 효율성:

  •  Lambda는 함수가 실행되는 시간과 메모리 사용량에 따라 비용이 책정되므로, 사용자가 사용하는 만큼만 비용을 지불합니다. 이는 전통적인 서버 기반 구조보다 비용을 크게 절감할 수 있습니다.

  2) 유연한 확장성:

  •  Lambda는 자동으로 요청에 따라 인스턴스를 확장하므로, 트래픽 변화에 유연하게 대응할 수 있습니다. 사용자가 직접 서버를 추가하거나 제거할 필요가 없습니다.

  3) 통합과 확장성:

  •  AWS의 다양한 서비스와 통합되어 있어, S3, DynamoDB, SNS, CloudWatch 등과 손쉽게 연동할 수 있습니다. 이를 통해 이벤트 기반의 다양한 아키텍처를 구축할 수 있습니다.

 5. Lambda의 한계 및 고려 사항

  1) Cold Start 문제:

  • Lambda는 함수가 처음 호출되거나 일정 시간 동안 호출되지 않은 후에 다시 호출될 때 초기화 시간이 길어질 수 있습니다. 이를 Cold Start라고 하며, 응답 속도에 영향을 미칠 수 있습니다.

  2) 제한된 실행 시간:

  • Lambda 함수의 최대 실행 시간은 15분으로 제한됩니다. 따라서 장시간 실행이 필요한 작업에는 적합하지 않을 수 있습니다.

  3) 상태 관리:

  • Lambda는 무상태 함수(stateless function)이므로, 함수 실행 간에 상태를 유지하려면 외부 스토리지나 데이터베이스를 사용해야 합니다. 이로 인해 상태 관리를 위해 추가적인 설계가 필요할 수 있습니다.

 6. Lambda 아키텍처의 실제 사용 사례

  1) 데이터 처리 및 변환:

  • S3 버킷에 업로드된 파일을 처리하거나, DynamoDB의 데이터를 가공하여 다른 서비스로 전송하는 경우에 유용합니다.

  2) API 백엔드:

  •  API Gateway와 연동하여 서버리스 REST API 백엔드를 구축할 수 있습니다. 사용량에 따라 자동으로 확장되므로, 트래픽 변화에 유연하게 대응할 수 있습니다.

  3) IoT 이벤트 처리:

  •  AWS IoT와 연동하여 IoT 장치로부터 수신된 데이터를 실시간으로 처리할 수 있습니다.