Lambda 함수 하나가 하나의 작업을 처리하는 것은 단순하다. 그런데 주문 처리처럼 검증 → 재고 확인 → 결제 → 배송 요청 → 알림이라는 여러 단계가 순서와 조건을 가지고 연결될 때, Lambda 안에서 이 흐름을 직접 코딩하면 어떻게 될까. 각 Lambda가 다음 Lambda를 호출하고, 실패 시 이전 단계를 취소하고, 어디까지 완료됐는지 추적하는 코드가 Lambda 비즈니스 로직과 뒤엉킨다. Step Functions는 이 흐름 제어(Flow Control)를 코드 밖으로 꺼내서 시각적 상태 머신으로 정의한다.
이런 오케스트레이션 문제는 마이크로서비스 아키텍처에서 특히 심각하다. 서비스가 늘어날수록 서비스 간 조율 로직이 각 서비스에 분산되어 버린다. 한 서비스가 다음 서비스를 직접 호출하는 코레오그래피(Choreography) 방식은 이벤트 기반으로 느슨하게 결합되지만, 전체 흐름을 한눈에 파악하기 어렵다. Step Functions의 오케스트레이션(Orchestration) 방식은 중앙에서 흐름을 정의하고 시각화할 수 있어서 복잡한 비즈니스 프로세스 추적에 유리하다.
Step Functions는 Amazon States Language(ASL)라는 JSON 기반 언어로 워크플로를 정의한다. ASL에서 모든 것은 "상태(State)"이고, 상태 간에 전이(Transition)가 있다