애플리케이션의 불일치 및 데이터 손실을 방지하기 위해 Lambda 함수를 멱등성으로 만들려면 어떻게 해야 합니까?

최종 업데이트 날짜: 2019년 5월 28일

AWS Lambda 함수 코드를 멱등성으로 만들어야 한다고 들었습니다. 어떻게 해야 합니까?

간략한 설명

프로그래밍에서 멱등성이란 애플리케이션이나 구성 요소가 반복되는 이벤트를 식별하고 그에 따라 대응하여 중복, 불일치 또는 데이터 손실을 방지하는 기능입니다.

AWS Lambda 함수를 멱등성으로 만들기 위해서는 함수 논리를 설계하여 중복된 이벤트를 올바르게 처리해야 합니다. 멱등성 함수 로직은 다음과 같은 사항을 줄일 수 있습니다.

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

​해결 방법

함수를 멱등성으로 만들기 위해서는 코드가 입력 이벤트를 적절히 검증하고 이벤트가 이전에 처리되었는지 여부를 식별해야 합니다. 애플리케이션 작동 방식이 이 작업을 수행하는 최선의 방법을 결정합니다. 다음의 예제 함수 로직에 대한 지침 및 모범 사례를 참조하십시오.

예제 함수 로직

이 예제에서는 대부분의 경우에 Lambda 함수 로직이 적용됩니다.

  1. 입력 이벤트의 고유 속성 값을 추출하십시오. (예: 트랜잭션 또는 구매 ID)
  2. 제어 데이터베이스에 속성 값이 존재하는지 확인하십시오(예: Amazon DynamoDB 테이블).
    참고: 아키텍처에 AWS 서비스를 추가하면 추가 비용이 발생할 수 있습니다. 자세한 내용은 Amazon DynamoDB 요금 또는 AWS 요금을 참조하십시오.
  3. 고유 값이 존재하는 경우(중복된 이벤트를 나타냄), 실행을 정상적으로 종료합니다(즉, 오류 발생 없이). 고유 값이 존재하지 않는 경우, 일반적으로 실행을 계속합니다.
  4. 함수 작업이 성공적으로 완료되면 제어 데이터베이스에 레코드를 포함하십시오.
  5. 실행을 마치십시오.

모범 사례

Lambda 함수를 멱등성으로 설계할 때 다음 모범 사례에 유의하십시오.

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

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

AWS에서 개선해야 할 부분이 있습니까?


도움이 필요하십니까?