Lambda 함수를 처음 한두 개 만들어 쓰다 보면, 어느 순간 "이걸 순서대로 묶고, 실패하면 보상하고, 외부 승인을 기다리고 싶다"는 요구가 생긴다. 처음에는 한 Lambda가 다른 Lambda를 호출하는 방식으로 풀고 싶어진다. 그러나 그 순간부터 함수 chain의 timeout(15분), 실패 시 어느 단계에서 멈췄는지 모르는 가시성 문제, 재시도와 보상 로직이 코드 안에 흩어지는 유지보수 문제가 한꺼번에 생긴다.
Step Functions는 이 모든 문제를 "상태 머신을 인프라로 만든다"는 방식으로 푼다. 워크플로우의 각 단계는 state가 되고, 전이는 선언적 JSON(ASL — Amazon States Language)으로 표현된다. AWS는 그 상태를 영속적으로 저장하고, 실패하면 정확히 어느 상태에서 멈췄는지 보여주고, 보상 분기를 매니지드로 실행한다. SAP 시험에서 "장기 워크플로우", "Saga", "여러 서비스 오케스트레이션" 키워드가 나오면 거의 Step Functions가 답이다.
여러 마이크로서비스를 묶는 워크플로우는 본질적으로 분산 트랜잭션 문제다. 결제 → 재고 차감 → 배송 예약 같은 시퀀스는 모든 단계가 성공하거나 모두 롤백되어야 한다