워크플로우를 관리하는 AWS Step Function와 Amazon MWAA 에 대하여 알아보기

워크플로우를 관리하는 AWS Step Function와 Amazon MWAA 에 대하여 알아보기

AWS에서 워크플로우를 관리하기 위한 서비스인 Step Function 과 Amazon MWAA에 대하여 알아보는 글입니다.
Clock Icon2025.02.28

안녕하세요 클래스메소드의 이수재입니다.
AWS 클라우드 환경에서 여러 서비스를 사용하고 데이터를 처리할 때 일련의 워크플로우를 설계해야하는 경우가 있습니다.
다만 워크플로우를 관리하기 위해서 검색해보면 AWS StepFunction과 AWS MWAA라는 선택지가 나옵니다.
이번 글에서는 이 서비스들에 대해서 알아보고 어떤 상황에 도입하면 되는지를 알아보도록 하겠습니다.

어떤 서비스인가?

어떤 상황에 적합한지를 한줄로 정리하면 다음과 같습니다.

AWS StepFunction : AWS 내 서비스들의 워크플로우 를 관리/운용하기 위한 서비스
AWS MWAA (Managed Workflows for Apache Airflow, 이하 MWAA) : 복잡한 데이터 워크플로우 을 관리하기 위한 서비스

따라서 관리 대상인 워크플로우가 데이터 처리가 중점이라면 StepFunction은 검토 대상 밖일 가능성이 높습니다.

AWS StepFunction

분산 애플리케이션을 위한 시각적 워크플로
https://aws.amazon.com/ko/step-functions/

시각적인 워크플로우를 사용하여 분산 애플리케이션과 마이크로서비스를 조정하는 서버리스 오케스트레이션 서비스입니다.
JSON 기반의 상태 머신을 사용하여 워크플로우를 정의하며 다른 AWS 서비스들과 쉽게 통합할 수 있습니다.
AWS 서비스를 이용하여 하나의 파이프라인을 구성할 때 가장 먼저 검토하는 서비스이기도 합니다.

진행하는 작업에 대해 스테이터스가 나뉘어져 있고, 각 스테이터스에 대해 병렬 처리, 에러 처리, 재시도 로직 등을 다양한 케이스에 대해서 쉽게 구현할 수 있도록 구성되어 있습니다.

워크플로우에는 정확히 한 번 실행하는 것을 보장하는 Standard Workflows와 이벤트 처리를 위해 사용하는 고성능인 Express Workflows가 있습니다.

AWS MWAA (Managed Workflows for Apache Airflow)

Apache Airflow를 위한 고가용성의 안전한 관리형 워크플로 오케스트레이션
https://aws.amazon.com/ko/managed-workflows-for-apache-airflow/

Apache Airflow의 관리형 오케스트레이션 서비스입니다.
기존 Airflow 생태계의 모든 기능 사용 가능하기 때문에 보통 온프레미스 환경에서 Apache Airflow를 사용하고 있을 때 AWS로 리플랫포밍하는 경우 고려됩니다.

Apache Airflow를 그대로 따라 Python으로 작성된 DAG를 사용하여 워크플로우를 정의합니다.
DAG를 관리하기 위한 웹 UI도 제공하고 있습니다.

자동 확장을 제공하기 때문에 확장성이 뛰어나고 멀티 AZ로 구성하여 고가용성을 보장하는 것도 가능합니다.
또한 자동 업그레이드, 백업 및 복구 등의 기능도 제공하고 있습니다.

무엇이 다른가?

카테고리로 나누어 구분해보겠습니다.

실행 환경

StepFunction은 서버리스로 운영됩니다. 따라서 파이프라인의 절차만 잘 정의한다면 실행을 위한 오버헤드가 발생하지 않습니다.
MWAA는 실행하는 서버를 관리해야하며 기본적으로 최소 웹 서버 수는 2개이고 최대 웹 서버 수는 5개입니다.

프로그래밍 언어

StepFunction은 JSON/YAML 파일로 파이프라인을 정의할 수 있습니다.
MWAA는 Apache Airflow가 Python으로 파이프라인을 정의하기 때문에 그대로 따릅니다.

복잡성

둘 다 시각적으로 파이프라인을 확인할 수 있습니다.
다만 StepFunction은 AWS 서비스에 대상 기능이 한정되어 있는 만큼 비교적 단순하지만 MWAA는 서버의 관리부터 시작해서 StepFunction에 비해 운용이 더 복잡하지만 그만큼 유연성이 높습니다.

통합성

StepFunction은 AWS 서비스와의 통합이 뛰어난 만큼 다른 3rd party 서비스 및 클라우드와의 연계는 부족합니다.
MWAA는 유연성이 높은 만큼 AWS 및 외부 서비스와 통합하여 사용하는 것도 가능합니다.

고려할 점

AWS StepFunctions와 MWAA의 장단점에 대하여 알아보겠습니다.

AWS StepFunctions

장점으로는 다음과 같습니다.

  • 서버리스이기 때문에 인프라 관리가 필요 없음
    • 자동 확장 및 내결함성 제공
  • 시각적 워크플로우로 구성이 쉬움
  • 다른 AWS 서비스와 통합되어 있음
  • 상태 추적 및 오류 처리가 용이
  • 실행당 과금이기 때문에 저렴하게 이용 가능

고려할 점으로는 다음과 같습니다.

  • AWS 서비스 외 통합이 제한적
  • 복잡한 워크플로우 구현이 어려울 수 있음
    • 결국 선택지는 StepFunction에서 제공하는 범위를 벗어날 수 없기 때문
    • 즉, 커스텀 로직 구현이 제한

AWS MWAA

장점으로는 다음과 같습니다.

  • Apache Airflow의 모든 기능 사용 가능
  • Python 기반의 유연한 워크플로우
  • 다양한 외부 시스템 통합 가능
  • 확장성과 고가용성 보장
  • 기존 Airflow DAG 마이그레이션 용이

고려할 점은 다음과 같습니다.

  • 비교적 높은 운영 비용
  • AirFlow를 실행하기 위한 서버의 시간 당 비용이 발생
  • 복잡한 설정과 관리
  • StepFunction에 비해서 난이도가 높음
  • 인프라 리소스 관리 필요
  • 초기 설정에 시간 소요

도입 기준

무엇을 도입해야할지에 대해서는 다음과 같은 점을 고려해야한다고 생각합니다.

  1. 확장성 요구사항
  • AWS 이외의 서비스로도 확장되는 워크플로우라면 StepFunction은 선택지에서 제외됩니다
  1. 팀의 기술 스택 및 유지보수 계획
  • 워크 플로우를 관리하는데 있어서 팀에서 얼마나 인적 리소스를 할당할 수 있고 기술 학습을 위해 얼마나 투자할 수 있는지가 중요합니다.
  • 만약 서버를 관리할 수 있는 리소스가 부족한 상황이라면 AirFlow는 도입하기 힘들다고 생각합니다.
  1. 워크플로우 복잡도
  • 복잡한 워크플로우가 필요하다면 StepFunction은 목적에 맞지 않을 수 있습니다.
    이 외에 비용 예산, 보안 요구사항, 모니터링 필요성 등 추가적으로 필요한 사항에 대해 검토해보는 것이 중요합니다.

도입 사례에 대해서는 공식 페이지와 ChatGPT의 답을 공유하도록 하겠습니다.

https://aws.amazon.com/ko/step-functions/use-cases/

https://aws.amazon.com/ko/managed-workflows-for-apache-airflow/#:~:text=개선할 수 있습니다.-,사용 사례,-복잡한 워크플로 지원

ChatGPT 답변 공유

AWS StepFunctions와 MWAA의 도입 사례를 구체적으로 설명해드리겠습니다.

【AWS StepFunctions 도입 사례】

  1. 마이크로서비스 오케스트레이션
  • 여러 Lambda 함수를 연결하는 서버리스 애플리케이션
  • API 기반 마이크로서비스 워크플로우
  • 예시: 주문 처리 시스템, 결제 처리 시스템
  1. 데이터 처리 파이프라인
  • ETL 작업 조정
  • 데이터 변환 및 이동
  • 예시: 일일 배치 처리, 로그 분석 파이프라인
  1. IT 자동화
  • AWS 리소스 프로비저닝
  • 인프라 관리 자동화
  • 예시: 자동 백업, 리소스 정리
  1. CI/CD 파이프라인
  • 배포 프로세스 자동화
  • 테스트 자동화
  • 예시: 코드 빌드/테스트/배포 자동화
  1. 이벤트 기반 처리
  • IoT 데이터 처리
  • 실시간 이벤트 처리
  • 예시: 센서 데이터 처리, 알림 시스템

【AWS MWAA 도입 사례】

  1. 복잡한 데이터 파이프라인
  • 대규모 ETL 작업
  • 다중 소스 데이터 통합
  • 예시: 데이터 웨어하우스 적재, 데이터 레이크 구축
  1. 머신러닝 워크플로우
  • 모델 훈련 파이프라인
  • 특징 엔지니어링
  • 예시: ML 모델 학습/배포 자동화
  1. 비즈니스 프로세스 자동화
  • 복잡한 비즈니스 로직
  • 다단계 작업 프로세스
  • 예시: 보고서 생성, 정산 처리
  1. 레거시 시스템 통합
  • 온프레미스-클라우드 하이브리드 환경
  • 다양한 외부 시스템 연동
  • 예시: ERP 시스템 통합, 데이터 마이그레이션
  1. 주기적인 배치 작업
  • 정기적인 데이터 처리
  • 복잡한 스케줄링 요구사항
  • 예시: 일/주/월 배치 작업

【구체적인 도입 시나리오】

StepFunctions 적합 시나리오:

  1. 전자상거래 주문 처리
  • 주문 접수 → 재고 확인 → 결제 처리 → 배송 처리
  • AWS 서비스 중심의 간단한 워크플로우
  • 실시간 처리 필요
  1. 이미지 처리 파이프라인
  • 업로드 → 리사이징 → 메타데이터 추출 → 저장
  • Lambda와 S3 연계
  • 서버리스 아키텍처

MWAA 적합 시나리오:

  1. 데이터 분석 파이프라인
  • 다양한 소스 데이터 수집
  • 복잡한 변환 처리
  • 품질 검증
  • 데이터 웨어하우스 적재
  1. ML 모델 훈련 자동화
  • 데이터 전처리
  • 특징 추출
  • 모델 훈련
  • 성능 평가
  • 모델 배포

【도입 시 고려사항】

  1. 기술적 요구사항
  • 워크플로우 복잡도
  • 처리 데이터 량
  • 실행 빈도
  • 확장성 요구사항
  1. 운영적 요구사항
  • 모니터링 필요성
  • 장애 대응 방안
  • 유지보수 용이성
  • 비용 효율성
  1. 조직적 요구사항
  • 기존 기술 스택
  • 팀의 기술력
  • 개발 생산성
  • 운영 리소스

이러한 사례들을 참고하여 프로젝트의 특성과 요구사항에 맞는 서비스를 선택하시면 됩니다.

다른 대안은?

만약 StepFunction도 MWAA도 도입하기 어렵다면 다른 방법을 고려해볼 수 있습니다.
AWS 내 서비스로 대체한다면 SQS + Lambda 등으로 간단한 워크플로우를 운용할 수 있습니다.
AWS 내의 이벤트 기반의 워크플로우라면 EventBridge 만으로도 처리할 수 있습니다.

혹은 Temporal이나 Camunda와 같은 오픈소스 서비스를 사용하는 것도 검토해볼 수 있습니다.

MWAA라면 보통 워크플로우는 부가적이고 데이터 처리가 메인인 경우가 많기 때문에 AWS EMR이나 AWS Batch 등을 고려해볼 수 있습니다.

마무리

현재 운용중인 환경이 어떤 특성을 가지는지 파악한 후에 필요한 서비스를 도입하는 것이 좋습니다.
이 글의 위에 기재한대로 AWS 서비스들의 파이프라인인지 아니면 데이터 처리 파이프라인인지에 따라서 도입 서비스를 판단하기 쉽다고 생각합니다.

긴 글 읽어주셔서 감사합니다.
오탈자 및 내용 피드백은 must01940 지메일로 보내주시면 감사합니다.

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.