기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
오케스트레이션
이 접근 방식에서는 단일 오케스트레이터가 각 마이크로서비스를 호출하고, 호출을 순차적으로 할지 병렬로 할지 결정하며, 개별 서비스 응답을 처리하고 최종 결과를 조합하는 역할을 수행합니다. 오케스트레이터는 동기 호출과 비동기 호출을 혼합하여 사용할 수 있습니다.
AWS Step Functions
오케스트레이션은 프로세스에 논리적 브랜치가 있고, 해당 로직을 단일 위치에서 캡슐화해야 할 때 적합합니다. 또한 비동기 클레임 체크 패턴을 구현할 때 유용합니다. 예를 들어, Step Functions의 표준 워크플로는 워크플로를 일시 중지하고 다른 서비스로부터의 콜백을 기다릴 수 있습니다. 오케스트레이터를 사용하면 프로세스 모니터링 및 관찰성을 향상시킬 수도 있습니다.
예제: Step Functions
Step Functions를 사용하여 여러 Lambda 함수 및 기타 함수를 조정 AWS 서비스하고 마이크로서비스 통합을 위한 복잡한 워크플로를 구축할 수 있습니다. 이 옵션은 특히 여러 마이크로서비스가 포함된 장기 실행 다단계 프로세스에 유용합니다.
다음과 같은 경우 Step Functions 사용을 고려해야 합니다.
-
마이크로서비스 통합이 복잡한 다단계 프로세스를 포함하는 경우
-
장기 실행 작업에서 상태를 유지해야 하는 경우
-
워크플로 수준에서 오류 처리 및 재시도 로직을 구현하고자 하는 경우
-
동기 및 비동기 작업을 모두 조정해야 하는 경우
Step Functions는 복잡한 워크플로를 설계할 수 있는 시각적 편집기를 제공하여 상태 머신을 생성하고 관리하는 과정을 단순화합니다. 또한 재시도 로직과 오류 상태 관리 등 내장 오류 처리 메커니즘을 제공하여 애플리케이션의 신뢰성과 견고성을 향상시킵니다. 표준 워크플로는 최대 1년까지 장기 실행 프로세스를 지원하므로, 장기간에 걸친 워크플로에 적합합니다. 이 옵션을 사용하면 오케스트레이션 로직을 애플리케이션 코드와 분리할 수 있어 코드 복잡성이 크게 줄어듭니다. 즉, 개발자는 핵심 비즈니스 로직에 집중할 수 있고, Step Functions가 분산 구성 요소의 흐름 제어와 조정을 처리합니다.
예를 들어, 다음 다이어그램에 나와 있는 금융 서비스 애플리케이션의 대출 승인 프로세스를 고려해 보겠습니다. 이 프로세스는 대출 신청서가 제출되면서 시작됩니다.
이전 다이어그램에서 설명된 상태 머신에서 Step Functions는 다음 단계를 오케스트레이션합니다.
-
신청 데이터 검증(Lambda 함수)
-
신용 점수 확인(외부 API를 호출하는 Lambda 함수)
-
위험 평가(Lambda 함수)
-
위험이 높은 경우 수동 검토로 라우팅(인간 승인 작업)
-
승인 시 대출 지급 시작(Lambda 함수)
-
신청자에게 알림 전송(Amazon SNS)
이 접근 방식을 사용하면 자동화와 수동 단계를 모두 포함할 수 있으며, 내장 오류 처리 기능을 활용하여 복잡하고 장기 실행 가능성이 있는 프로세스를 안정적으로 관리할 수 있습니다.
고려 사항:
-
상태 머신을 신중하게 설계하여 모든 가능한 시나리오를 처리합니다.
-
가능한 경우 단계별 병렬 실행을 고려합니다.
-
영구적 실패와 일시적 실패 모두에 대해 Step Functions의 내장 오류 처리 및 재시도 메커니즘을 사용합니다.
-
사용 사례에 따라 표준 또는 익스프레스 워크플로를 선택하는 것을 고려합니다. 짧은 기간 또는 대량 워크플로에는 익스프레스 워크플로가 적합할 수 있습니다.
-
실행 지표를 모니터링하여 워크플로를 최적화합니다.
-
중첩 워크플로를 사용하여 여러 상태 머신에서 기능을 캡슐화하고 재사용할 수 있습니다.
-
복잡한 워크플로의 경우 Step Functions 대신 Amazon Bedrock Agents 사용을 고려합니다.
자세한 내용은 Step Functions 설명서를 참조하세요.
예제: Amazon MWAA
조직에서 이미 Apache Airflow를 사용 중이라면, 워크플로 오케스트레이터로 Amazon MWAA를 자연스럽게 선택할 수 있습니다. Apache Airflow에서는 Python을 사용하여 워크플로를 방향성 비순환 그래프(DAG) 형태로 구축합니다. Step Functions 섹션에서 설명한 상태 머신을 DAG로 표현하면 다음과 같이 구성될 수 있습니다.
DAG 작업에 대한 자세한 내용은 Amazon MWAA 설명서를 참조하세요.
Step Functions와 Amazon MWAA의 주요 차이점
-
Step Functions는 완전 관리형 서버리스 서비스이므로, 사전 프로비저닝을 위한 인프라나 유지보수 윈도우 예약이 필요 없습니다. Amazon MWAA는 미리 배포되어야 하며, 클러스터의 노드 수와 크기를 선택해야 합니다.
-
Step Functions에서는 Workflow Studio, JSON 직접 작성, AWS Cloud Development Kit (AWS CDK)사용 등 다양한 방식으로 상태 머신을 작성할 수 있습니다. Apache Airflow DAG는 Python으로 작성합니다.
-
Step Functions를 사용하면 실행 중인 워크플로가 없을 때 비용이 발생하지 않습니다. Amazon MWAA를 사용하면 DAG가 실행되지 않아도 비용이 발생합니다.