함수를 멱등성 Lambda 함수로 만들려면 어떻게 해야 하나요?

3분 분량
0

애플리케이션의 불일치 및 데이터 손실을 방지하기 위해 AWS Lambda 함수 코드를 비활성화하고 싶습니다.

간략한 설명

프로그래밍에서 idempotency는 애플리케이션 또는 구성 요소가 반복되는 이벤트를 식별하고 중복되거나 일관되지 않거나 손실된 데이터를 방지할 수 있는 능력을 의미합니다. AWS Lambda 함수를 멱등화하려면 중복된 이벤트를 올바르게 처리하도록 함수 로직을 설계해야 합니다.

멱등성 함수 로직은 다음과 같은 문제를 줄이는 데 도움이 될 수 있습니다.

  • 불필요한 API 호출
  • 코드 처리 시간
  • 데이터 불일치
  • 스로틀
  • 지연 시간

해결 방법

함수를 멱등성 함수로 만들려면 함수의 코드가 입력 이벤트를 검증하고 이벤트가 이전에 처리되었는지 확인해야 합니다. 애플리케이션의 기능에 따라 코드를 작성하는 가장 좋은 방법이 결정됩니다.

다음 예제 함수 로직과 모범 사례를 참고하세요.

멱등성 Lambda 함수 로직 예제

참고: 다음 예제 Lambda 함수 로직은 대부분의 사용 사례에 적용됩니다.

1.    입력 이벤트의 고유 속성 값을 추출합니다. (예: 거래 또는 구매 ID).

2.    속성 값이 제어 데이터베이스에 존재하는지 확인합니다. (예: Amazon DynamoDB 테이블).

3.    결과에 따라 다음 단계를 완료합니다.
고유 값이 존재하면 오류를 생성하지 않고 작업을 종료합니다.

-또는-

고유 값이 존재하지 않으면 원래 설계한 작업을 계속 진행합니다.

참고: 아키텍처에 AWS 서비스를 추가하면 추가 비용이 발생할 수 있습니다. 자세한 내용을 보려면 Amazon DynamoDB 가격AWS 가격을 참조하세요.

4.    함수 작업이 완료된 후 고유 값이 존재하지 않는 경우 제어 데이터베이스에 레코드를 포함하세요.

5.    작업을 완료합니다.
참고: 함수에 Java 또는 Python 런타임을 사용하는 경우, AWS Lambda Powertools GitHub 페이지에서 PythonJava 멱등성 모듈을 검토하세요.

Lambda 함수 멱등성 모범 사례

  • 애플리케이션을 개발하기 전에 멱등성 기능을 계획하세요.
  • Lambda 코드가 중복 이벤트를 처리할 때 오류를 생성하지 않고 종료되는지 확인하세요.
    참고: 오류가 발생하면 Lambda 또는 함수를 호출하는 다른 서비스에서 추가 재시도가 발생할 수 있습니다.
  • 전체 런타임이 올바르게 처리되도록 Lambda 함수 시간 초과 설정을 변경하세요.
    참고: 별도의 서비스를 사용하여 데이터를 지속하고 중복된 이벤트를 제어하려면 HTTPS 엔드포인트에 대한 API 호출이 필요할 수 있습니다. 그러면 HTTPS 엔드포인트에 대한 API 호출에 기본값인 3초보다 더 많은 런타임이 필요할 수 있습니다.
  • 기능을 최대한 테스트하고 최적화하세요. 실제 시나리오와 요청 속도를 시뮬레이션하세요.
    참고: 시간 초과, 과도한 지연 시간 또는 병목 현상과 같은 잠재적인 부작용을 방지하려면 멱등성 함수 로직을 테스트하고 최적화하는 것이 중요합니다.
  • 쉽게 확장할 수 있고 높은 처리량을 제공하는 서비스(예: DynamoDB)를 사용하여 세션 데이터를 저장합니다.

참고: Amazon Elastic Compute Cloud(Amazon EC2)에 API 호출을 할 때 이 서비스는 clientToken 파라미터를 제공합니다. 이 파라미터는 동일한 clientToken으로 여러 번 재시도를 시작하더라도 변경되는 API 요청이 워크플로우를 한 번만 성공적으로 완료하도록 합니다.


관련 정보

Lambda 프로그래밍 모델

콘솔을 사용하여 Lambda 함수 생성

멱등성 API로 안전하게 재시도

AWS 공식
AWS 공식업데이트됨 2년 전
댓글 없음

관련 콘텐츠