Programming

[AWS, Certified Developer Associate] Step Functions

AWS Step Functions

  • AWS 서비스 오케스트레이션 / 비즈니스 프로세스 자동화 / 서버리스 애플리케이션 구축에 사용되는 시각적 워크플로 서비스
  • 실패, 재시도, 병렬화, 서비스 통합 등을 관리
  • json 형태로 워크플로 정의
  • 상태 
    • Choice : 브랜치 (or 기본 브랜치)로 보낼 조건 테스트
    • Fail / Succeed : 워크플로의 실패 / 성공 여부로 실행을 중지
    • Pass : 입력값을 출력값에 전달 or 작업을 수행하지 않고 고정된 데이터 주입
    • Wait : 특정 날짜/시간동안 지연
    • Map : 단계를 동적으로 반복
    • Parallel : 브랜치 수행을 병렬적으로 수행

 

 

Step Functions - 오류 핸들링

  • Step Function 자체에서 오류 처리 메커니즘 정의 가능
  • 이를 통해 코드에서의 에러 처리 제외 > 복잡도 감소
  • Retry (재시도) / Catch (실패한 경로로 오류 전환) 두가지 방식이 존재
  • 사전정의된 에러 코드
    • States.ALL : 모든 오류이름과 매칭
    • States.Timeout : 타임아웃
    • States.TaskFailed : 태스크 실행이 자체적으로 실패
    • States.Permission : 태스크 실행을 위한 권한 관련
  • Retry
    • 오류 발생 시 재시도 관련 처리
    • ErrorEquals : 오류 타입 (CustomError, States.TaskFailed ...)
    • IntervalSeconds : 재시도 간격
    • MaxAttempts : 최대 재시도 횟수 (기본값 3, 0 설정 시 재시도 X)
    • BackoffRate : 지수 백오프 수치 
    • MaxAttempts까지 재시도 후 오류 발생 시 Catch 블록 실행
  • Catch
    • 실패 경로로 오류 전환
    • ErrorEquals : 오류 타입
    • ResultPath : 전송되는 입력값의 경로 ("$.error" 설정 시 기본 입력값과 함께 오류 정보도 함께 전송, 오류 분석 및 디버깅 가능)
    • Next : 결과를 보낼 상태
      • Type : 상태 (Pass 등)
      • Result : 응답 결과
      • End : 종료여부

 

Step Functions - 워크플로 비교 Standard vs Express

  • Standard
    • Max Duration : 최대 1년
    • 실행 모델 : 정확히 1회 실행
    • 실행 : 초당 약 2000개 워크플로 실행
    • 실행 기록 : 콘솔에 최대 90일 기록 / CloudWatch 사용 영구보존 가능
    • 비용 : # of 상태전환
    • 사용사례 : 멱등성 보장되지 않는 작업 (결제 처리)
  • Express
    • Max Duration : 최대 5분
    • 실행 : 초당 약 10만
    • 실행 기록 : 콘솔에서는 기록 불가 / CloudWatch 사용
    • 비용 : # of 실행횟수, 실행기간, 메모리 사용량
    • 사용사례 : IoT 데이터 수집, 스트리밍 데이터 처리, 모바일 앱 백엔드
    • 비동기
      • 최소 1회 실행 보장 (오류 발생 시 동일한 작업 2번 실행 가능 / 멱등성 관리 필요)
      • 실행 결과 기다리지 않음 (CloudWatch에서 결과 확인)
      • ex) 메시지 서비스
    • 동기
      • 최대 1회 실행 보장 (실패하더라도 워크플로 재시작 X, 재시도 필요 시 사용자가 로직 직접 구현)
      • 실행 결과 기다림 (결과를 즉각적으로 응답받아야 하는 경우)
      • ex) 마이크로서비스 오케스트레이션
      • Gateway or Lambda 함수에서 호출되어 응답 가능

 


Reference

Udemy - AWS Certified Developer Associate 시험 합격을 위한 모든 것!