Search

Step Functions

AWS Step Functions이 필요한 경우

AWS 서비스와 네이티브하게 통합
내결함성을 갖춘 stateful 워크플로우
안정성, 확장성, 신뢰성, 모니터링 제공
람다를 개발할때 서비스의 크기가 커져서 서비스 로직이 복잡해지는 경우
복수의 람다를 마이크로서비스 형태를 통해 유기적으로 사용하여 함수들의 순서나 논리적인 연결 관계를 정의 하고 싶은 경우
람다와 같은 서비스를 활용해 마이크로서비스 워크플로우를 구현하기 위한 오케스트레이션 서비스
람다와 같은 AWS 서비스 사용, 비용 및 성능을 우선시 하는 경우 AWS Step Functions이 좋은 선택지

AWS Step Functions의 장점

다양한 서비스와 통합해서 사용할 수 있다.
빌트인으로 재시도 로직을 갖추고 있어 손쉬운 장애 대응이 가능하다.
다양한 상태를 활용해 상태머신을 정의하여 워크플로우를 만들기 용이하다.
개발자의 인프라 운영에 대한 부담을 줄여준다.
빠른 프로토타이핑, 소규모 조직 운영 가능
실행한 만큼 비용을 지불하기 때문에 비용 절감

AWS Step Functions의 작동 원리

[AWS Step Functions의 상태 머신]
실행될 워크플로우를 선언적으로 정의하는 그래프
하나의 워크플로우는 여러개의 작업 단위로 구성될 수 있다.
AWS Step Functions의 언어로 말하면 Action, Flow라는 컴포넌트로 구성
Action, Flow를 필요에 맞게 조합해 Start상태부터 End 상태까지 비즈니스 로직을 위한 다양한 워크플로우를 정의할 수 있다.
설계된 상태 머신 별 실행 내역은 AWS 콘솔에서 시각적으로 확인 할 수 있다.
빌트인 형태로 제공되는 try - catch - finally 패턴을 통해 타임아웃, 재시도, 에러메시지 등을 관리 할 수 있다.
[Action]
다음과 같이 다른 AWS 서비스를 활용하여 작업을 수행한다.
AWS Lambda 호출
Amazon SNS로의 Publish
Amazon ECS Task 실행
etc ..
[Flow]
Task들의 제어흐름을 정의하는 7개의 상태
Choice - 조건문에 따른 분기를 정의
Paralled - 동일 입력에 대해 여러 작업을 병렬 처리
Map - 배열과 같은 Iterable에 대해 Task의 동적 처리를 수행
Pass - 디버깅을 위한 상태
Wait - 타이머 기능
Success/Fail - 실행 성공 여부를 확인하기 위한 상태