AWS Step Functions
: 워크플로우 상태 머신으로 모델링 하게 해준다.
- 워크플로우 당 하나의 상태 머신을 가질 수 있다.
- AWS Step Functions는 AWS 서비스를 오케스트레이션하고, 비즈니스 프로세스를 자동화하고, 서버리스 애플리케이션을 구축하는 데 사용되는 로우 코드 시각적 워크플로 서비스입니다. 실패, 재시도, 병렬화, 서비스 통합 등을 관리한다.
Task States
: 상태 머신에 어떤 작업을 할 때 사용된다.
Invoke Lambda Function
: 람다 함수를 호출하기 위해 태스크 상태를 정의하고자 한다면 JSON을 정의한다.
States
- Choice State: 브랜치 또는 기본 브랜치로 보낼 조건을 테스트 한다.
- Fail or Succeedd State: 워크플로우의 성공 또는 실패로 Step Functions의 실행을 중지한다.
- Pass State: 입력값을 출력값이 전달하거나 작업을 수행하지 않고 고정된 데이터를 주입한다.
- Wait State: 특정 시간 동안 지연하거나, 특정 날짜나 시간까지 지연시킨다.
- Map State: 단계들을 동적으로 반복한다.
- Parallel State: 브랜치의 수행을 병렬적으로 수행한다.
Error Handling in Step Functions
Retry
: 테스트 재시도
Task or Parallel State
- ErrorEquals: 특정 오류를 매칭한다.
- IntervalSeconds: 재시도 전에 얼마나 오래 대기해야 하는지
- BackoffRate: 재시도 후의 지연을 곱한다.
- MaxAttempts: 재시도의 횟수
Catch
: 실패한 경로로 전환
Task or Parallel State
- ErrorEquals: 특정 오류를 매칭한다.
- Next: 다음 상태로 넘어가
- ResultPath: 다음 필드로 지정된 상태로 전송되는 입력값의 경로를 결정한다.
Wait for Task Token
- Step Functions의 태스크에서 리소스 필드에 .waitForTaskToken를 추가하면 실행을 계속하기 전에 특정 태스크 토큰이 반환될 때까지 대기하도록 Step Functions에 알려줄 수 있다.
- 모두 제대로 작동될 경우 SendTaskSuccess, 아닌 경우 SendTaskFailure API를 호출한다.
Activity Tasks
Activity Worker
: Step Functions에서 작업을 수행하는 구성 요소로 원하는 모든 곳에서 실행할 수 있다.
- GetActivityTask API를 이용해 정기적으로 Step Functions 워크플로를 폴링하여 태스크를 찾으며, 작업을 반환받으면 이를 실행 및 완료한 다음 이전과 동일하게 SendTaskSuccess와 SendTaskFailure API를 사용하여 응답을 보낸다.
- TimeoutSeconds를 아주 길게 구성하고 하트비트를 계속 보낼 경우 액티비티 태스크는 최대 1년까지 대기할 수 있다.
Standard vs Express
- 익스프레스 워크플로에는 비동기식과 동기식이 있는데 비동기식 익스프레스 워크플로는 최소 1회 실행 보장 모델이고 동기식 익스프레스 워크플로는 최대 1회 실행 모델이다.
AWS AppSync
- GraphQL의 사용
- 실시간 WebSocket 또는 WebSockets의 MQTT 통합
- AppSync는 Cognito Sync라는 오래된 것을 대체하는 서비스이다.
- AppSync를 시작하려면 1개의 GraphQL 스키마를 업로드한다.
- AWS AppSync는 DynamoDB, Lambda 등과 같은 데이터 소스에 안전하게 연결해야 하는 어려운 작업을 처리하여 GraphQL API를 쉽게 개발할 수 있도록 하는 완전 관리형 서비스이다.
Security
API_KEY
AWS_IAM
OPENID_CONNECT
AMAZON_COGNITO_USER_POOLS
AWS Amplify
: 모바일과 웹 애플리케이션을 만들 수 있는 서비스로 다양한 구성 요소로 이루어져 있다.
- 데이터 저장, 인증, 파일 저장 및 머신 러닝과 같은 필수 기능을 제공한다.
Important Features
- Authentication: 별도의 설치 없이 즉시 사용 가능한 인증 기능을 제공한다.
- DataStore: 복잡한 코드 없이 클라우드에 자동으로 동기화할 수 있다.
End-toEnd(E2E Testing)
- Amplify의 테스트 단계에서는 종단간 테스트를 실행한다.
- 테스트 단계를 사용하여 빌드 과정 중 테스트 명령을 실행하고 amplify.yml 파일에서 테스트 단계를 정의한다.
- Cypress 테스트 프레임워크를 사용하여 E2E 테스트를 생성할 수 있다.