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 - 실행 성공 여부를 확인하기 위한 상태


