재귀 적 AWS Lambda 함수 호출-모범 사례

아리

저는 VM을 켜고 끄는 장기 실행 작업을 수행하는 AWS Lambda에 구축 된 서비스를 살펴 보는 임무를 받았습니다. 저는 Azure 팀에서 왔으므로 AWS 서비스의 스타일이나 모범 사례에 익숙하지 않습니다.

원래 개발자가 취한 접근 방식은 전체 워크로드를 하나의 Lambda 함수로 보낸 다음 해당 함수가 워크로드의 일부를 취하도록 한 다음 모든 항목이 사라질 때까지 나머지 워크로드로 자신을 재귀 적으로 호출하는 것입니다 (워크로드 = 0).

유사 코드 :

// Assume this gets sent to a HTTP Lambda endpoint as a whole
let workload = [1, 2, 3, 4, 5, 6, 7, 8]

// The Lambda HTTP endpoint
function Lambda(workload) {
    if (!workload.length) {
        return "No more work!"
    }
    const toDo = workload.splice(0, 2) // get first two items
    doWork(toDo)

    // Then... except it builds a new HTTP request with aws sdk
    Lambda(workload) // 3, 4, 5, 6, 7, 8, etc.
}

이것은 매우 비효율적이고 신뢰할 수없는 것 같습니다 (내가 틀렸다면 수정). 이 프로세스에는 많은 상태가 저장되고 있으며 제 생각에는 많은 실패 지점이 생성됩니다.

내 계획은 전체 서비스를 리엔지니어링하여 대신 Queue / Worker 유형 프레임 워크를 사용하도록 제안하는 것입니다. 이상적으로는 엔드 포인트가 한 번에 하나의 워크로드를 처리하고 상태 비 저장 일 것입니다.

대기열은 서비스 (Jenkins? Lambda? 수동?)에 의해 채워진 다음 두 번째 서비스가 대기열에서 읽습니다 (이상적으로는 필요에 따라 확장).

제레미 톰슨

제가 생각했던 "커플 링"입니다. 여기를 참조하십시오 : https://www.jeffersonfrank.com/insights/aws-lambda-design-considerations

Coupling
Coupling은 Lambda 설계 고려 사항을 넘어서 시스템 전체에 관한 것입니다. 마이크로 서비스 내의 Lambda는 때때로 밀접하게 결합되어 있지만 마이크로 서비스의 작은 블랙 박스 내에서 Lambda간에 전달되는 데이터가 과도하게 순수한 HTTP가 아니고 동기식이 아닌 한 걱정할 필요가 없습니다.

Lambda는 요청 응답 방식으로 서로 직접 연결되어서는 안되며 비동기 적으로 연결되어야합니다. S3 이벤트가 Lambda 함수를 호출 한 다음 해당 Lambda도 동일한 마이크로 서비스 내에서 다른 Lambda를 호출해야하는 시나리오를 고려하십시오.

aws 람다 커플 링

여기에 이미지 설명 입력

Lambda 1이 AWS SDK를 사용하여 Lambda 2를 호출하도록 허용하는 것과 같은 직접 결합을 구현하고 싶을 수 있습니다. 이로 인해 다음과 같은 문제가 발생합니다.

  1. Lambda 1이 Lambda 2를 동기식으로 호출하는 경우 후자가 먼저 완료 될 때까지 기다려야합니다. Lambda 1은 Lambda 2가 Lambda 3을 동기식으로 호출했다는 사실을 모를 수 있으며 이제 Lambda 1은 Lambda 2와 3이 모두 성공적으로 완료 될 때까지 기다려야 할 수 있습니다. Lambda 1은 모든 Lambda가 먼저 완료 될 때까지 기다려야하므로 시간이 초과 될 수 있으며 기다리는 동안 각 Lambda에 대한 비용도 지불합니다.
  1. Lambda 3에 동시성 제한이 설정되어 있고 다른 서비스에서도 호출되면 어떻게됩니까? Lambda 2와 3 간의 호출은 다시 동시성을 가질 때까지 실패합니다. 오류는 Lambda 1까지 다시 반환 될 수 있지만 Lambda 1은 오류를 어떻게 처리합니까? S3 이벤트가 실패했고이를 재생해야한다는 사실을 저장해야합니다.

이 프로세스는 이벤트 기반으로 재 설계 될 수 있습니다. 람다 커플 링

여기에 이미지 설명 입력

이는 직접 결합 방식으로 발생하는 모든 문제에 대한 해결책 일뿐만 아니라 각 Lambda에 오류가 발생했을 때 DLQ를 재생하는 방식을 제공합니다. 메시지가 손실되거나 외부에 저장 될 필요가 없으며 수요가 처리에서 분리됩니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

setTimeout을 사용하여 재귀 적으로 함수 호출

분류에서Dev

TypeTag를 사용하여 재귀 적으로 함수 호출

분류에서Dev

Java 모범 사례 : 컨트롤러에서 최적의 호출 수

분류에서Dev

사용자 입력을 위해 함수를 재귀 적으로 호출

분류에서Dev

Rust-여러 유형의 함수 호출 모범 사례

분류에서Dev

AWS Lambda 코드 모듈화 모범 사례

분류에서Dev

AWS 서비스 및 Lambda 모범 사례 모의

분류에서Dev

재귀 함수가 호출 된 횟수를 추적합니다.

분류에서Dev

Node JS, 정적 함수 / 변수 모범 사례

분류에서Dev

목록에서 재귀 적으로 함수 호출

분류에서Dev

재귀 적으로 비동기 함수 호출

분류에서Dev

AngularJS에서 재귀 적으로 함수 호출

분류에서Dev

AWS Lambda 함수를 비동기 적으로 호출하는 방법

분류에서Dev

C : 음수 부호를 사용한 재귀 함수 호출

분류에서Dev

SQSEvent 객체를 사용하여 다른 함수에서 aws lambda 함수 호출

분류에서Dev

재귀 및 함수 호출

분류에서Dev

AWS Lambda에서 중첩 함수 호출

분류에서Dev

sudo를 사용할 때 docker 함수가 재귀 적으로 호출되지 않습니까?

분류에서Dev

재귀 적으로 비동기 함수를 호출하는 함수 대기

분류에서Dev

중첩 된 사전을 재귀 적으로 업데이트하는 모범 사례?

분류에서Dev

다른 범위 함수를 호출하는 자바 스크립트 함수를 "재귀 적으로"문자열 화하려면 어떻게해야합니까?

분류에서Dev

AWS의 Ubuntu 모범 사례

분류에서Dev

함수 이름을 사용하지 않는 재귀 호출

분류에서Dev

재귀 회문 검사-함수 호출시 문제 발생

분류에서Dev

GMock 사망 사례-모의 함수가 호출되지 않음

분류에서Dev

자바 : 재귀 호출에서 원래 매개 변수를 사용하여 내 메서드를 재귀 적으로 호출하는 방법

분류에서Dev

재귀 적 axios 호출

분류에서Dev

재귀 호출 추적

분류에서Dev

추가 매개 변수없이 재귀 적으로 함수 호출

Related 관련 기사

  1. 1

    setTimeout을 사용하여 재귀 적으로 함수 호출

  2. 2

    TypeTag를 사용하여 재귀 적으로 함수 호출

  3. 3

    Java 모범 사례 : 컨트롤러에서 최적의 호출 수

  4. 4

    사용자 입력을 위해 함수를 재귀 적으로 호출

  5. 5

    Rust-여러 유형의 함수 호출 모범 사례

  6. 6

    AWS Lambda 코드 모듈화 모범 사례

  7. 7

    AWS 서비스 및 Lambda 모범 사례 모의

  8. 8

    재귀 함수가 호출 된 횟수를 추적합니다.

  9. 9

    Node JS, 정적 함수 / 변수 모범 사례

  10. 10

    목록에서 재귀 적으로 함수 호출

  11. 11

    재귀 적으로 비동기 함수 호출

  12. 12

    AngularJS에서 재귀 적으로 함수 호출

  13. 13

    AWS Lambda 함수를 비동기 적으로 호출하는 방법

  14. 14

    C : 음수 부호를 사용한 재귀 함수 호출

  15. 15

    SQSEvent 객체를 사용하여 다른 함수에서 aws lambda 함수 호출

  16. 16

    재귀 및 함수 호출

  17. 17

    AWS Lambda에서 중첩 함수 호출

  18. 18

    sudo를 사용할 때 docker 함수가 재귀 적으로 호출되지 않습니까?

  19. 19

    재귀 적으로 비동기 함수를 호출하는 함수 대기

  20. 20

    중첩 된 사전을 재귀 적으로 업데이트하는 모범 사례?

  21. 21

    다른 범위 함수를 호출하는 자바 스크립트 함수를 "재귀 적으로"문자열 화하려면 어떻게해야합니까?

  22. 22

    AWS의 Ubuntu 모범 사례

  23. 23

    함수 이름을 사용하지 않는 재귀 호출

  24. 24

    재귀 회문 검사-함수 호출시 문제 발생

  25. 25

    GMock 사망 사례-모의 함수가 호출되지 않음

  26. 26

    자바 : 재귀 호출에서 원래 매개 변수를 사용하여 내 메서드를 재귀 적으로 호출하는 방법

  27. 27

    재귀 적 axios 호출

  28. 28

    재귀 호출 추적

  29. 29

    추가 매개 변수없이 재귀 적으로 함수 호출

뜨겁다태그

보관