멱등성 Lambda 함수를 만들려면 어떻게 해야 합니까?

최종 업데이트 날짜: 2021년 4월 14일

애플리케이션의 불일치와 데이터 손실을 방지하기 위해 AWS Lambda 함수 코드를 멱등성으로 만들어야 한다고 들었습니다. 어떻게 해야 합니까?

간략한 설명

프로그래밍에서 멱등성이란 애플리케이션이나 구성 요소가 반복되는 이벤트를 식별하고 중복, 불일치 또는 데이터 손실을 방지하는 기능을 의미합니다. AWS Lambda 함수를 멱등성으로 만들기 위해서는 함수 논리를 설계하여 중복된 이벤트를 올바르게 처리해야 합니다.

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

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

해결 방법

함수를 멱등성으로 만들려면 코드가 입력 이벤트를 적절히 검증하고 이벤트가 이전에 처리되었는지 여부를 식별해야 합니다. 애플리케이션 작동 방식이 코드를 작성하는 최선의 방법을 결정합니다.

다음 예제 함수 로직을 사용하여 지침 및 모범 사례를 확인하세요.

멱등성 Lambda 함수 로직 예제

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

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

2.    제어 데이터베이스에 속성 값이 존재하는지 확인합니다. (예: Amazon DynamoDB 테이블.) 그런 다음 결과에 따라 다음을 수행합니다.
고유 값이 있으면 오류를 생성하지 않고 작업을 종료합니다.

-또는-

고유 값이 없으면 원래 디자인한 작업을 진행합니다.

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

3.    함수 작업이 완료되면 제어 데이터베이스에 레코드를 포함합니다.

4.    작업을 마칩니다.

멱등성 Lambda 함수 모범 사례

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

참고: Amazon Elastic Compute Cloud(Amazon EC2)에 대한 API를 호출할 때 이 서비스는 ClientToken 파라미터를 제공합니다. ClientToken은 API 요청을 다시 시도할 때만 변이하는 API 요청이 한 번만 실행되도록 하는 데 사용할 수 있습니다.


이 문서가 도움이 되었습니까?


결제 또는 기술 지원이 필요합니까?