콘텐츠로 이동하기
애플리케이션-개발

Google Cloud의 서버리스 조정 엔진, Workflows 알아보기

2021년 1월 7일
https://storage.googleapis.com/gweb-cloudblog-publish/images/03_-_Application_Development.max-2600x2600.jpg
Filip Knapik

Group Product Manager

Google Cloud 사용해 보기

$300의 무료 크레딧과 20개 이상의 항상 무료인 제품으로 Google Cloud 사용을 시작해보세요.

무료 체험

* 본 아티클의 원문은 2020년 12월 5일 Google Cloud 블로그(영문)에 게재되었습니다.

기업에서 전자상거래 처리, 제품 생산, IT 서비스 제공 등 어떤 작업을 수행하든 다양한 시스템에 걸쳐 업무 흐름을 관리해야 합니다. 워크플로를 직접 관리하거나 범용 도구로 관리할 수도 있지만 전용 제품을 사용하면 훨씬 쉽게 관리할 수 있습니다. 

Google Cloud 포트폴리오에는 Cloud Composer와 새로 도입된 Workflows라는 두 가지 워크플로 도구가 있습니다. 8월에 도입된 Workflows는 Google Cloud의 일부로 실행되는 완전 관리형 워크플로 조정 제품입니다. 완전한 서버리스 제품이므로 인프라 관리가 필요 없습니다.

이 도움말에서는 Workflows가 지원하는 사용 사례, 기능, 효과적으로 사용하기 위한 팁을 다룹니다.

샘플 워크플로

먼저, 인보이스를 생성하는 다음과 같은 워크플로가 있다고 가정하겠습니다.
https://storage.googleapis.com/gweb-cloudblog-publish/images/image_1_sdF2Tdx.max-1400x1400.jpg

이 단계를 조정하는 일반적인 방법은 Cloud Functions, Cloud Run 또는 PDF 파일이 첨부된 이메일을 전송하는 공개 SaaS API(예: SendGrid)를 기준으로 API 서비스를 호출하는 것입니다. 하지만 일반적으로 실제 상황은 위에서 든 예시보다 훨씬 더 복잡하며 모든 워크플로 실행, 오류 처리, 결정 지점, 조건부 건너뛰기를 추적하고 항목 배열, 데이터 변환, 기타 고급 기능을 반복하는 작업을 계속해야 합니다. 

즉, 기술적으로는 범용 도구를 사용해 이 프로세스를 관리하는 것이 가능하지만 이상적인 선택은 아닙니다. 예를 들어 Cloud Functions와 같은 이벤트 기반 컴퓨팅 플랫폼으로 이 흐름을 처리할 경우 발생하는 몇 가지 문제를 알아보겠습니다. 우선, Cloud 함수의 최대 실행 기간은 9분이지만 워크플로는 특히 인적 상호작용이 포함된 경우 수일간 실행될 수 있습니다. 워크플로를 완료하는 데 시간이 더 필요하거나 응답 상태를 폴링할 때 단계 사이에 일시중지해야 할 수도 있습니다. 예를 들어 여러 Cloud Functions를 서로 연결하려는 경우 Pub/Sub를 사용할 수도 있지만 이러한 워크플로를 간단하게 개발하거나 운영할 방법은 없습니다. 우선, 이 모델에서는 단계 실패를 워크플로 실행과 연결하기가 까다롭기 때문에 문제 해결이 매우 어렵습니다. 또한 모든 워크플로 실행 상태를 파악하려면 커스텀 설계된 추적 모델이 필요하므로 아키텍처의 복잡성이 증가합니다. 

이와 달리 워크플로 제품은 예외 처리를 지원하며 성공 및 실패를 포함한 개별 단계의 실행 및 상태에 대한 가시성을 제공합니다. 각 단계의 상태가 개별적으로 관리되기 때문에 워크플로 엔진이 오류에서 원활하게 복구할 수 있어 이 워크플로를 사용하는 애플리케이션의 안정성이 크게 개선됩니다. 마지막으로 워크플로 제품에는 인기 API 및 클라우드 제품의 기본 제공 커넥터가 포함된 경우가 많아 시간을 절약하고 기존 API 인터페이스를 활용할 수 있습니다. 

Google Cloud의 Workflow 제품

Google Cloud 최초의 범용 워크플로 조정 도구는 Cloud Composer입니다.

Apache Airflow를 기반으로 한 Cloud Composer는 ETL 조정, 빅데이터 처리 또는 머신러닝 워크플로 등의 데이터 엔지니어링 파이프라인에 적합하며 BigQuery 또는 Dataflow 와 같은 데이터 제품과 원활하게 통합됩니다. 예를 들어 데이터 웨어하우스 또는 빅데이터 클러스터에서 일련의 작업을 실행하고 결과를 스토리지 버킷에 저장해야 하는 워크플로라면 Cloud Composer를 선택하는 것이 당연합니다.

하지만 서버리스 방식으로 이벤트를 처리하거나 API를 연결하려는 경우 또는 워크로드가 급격하게 증가하거나 지연 시간에 민감한 경우에는 Workflows를 권장합니다. 

Workflows는 사용하지 않을 때는 0으로 조정되어 유휴 상태에서 비용이 발생하지 않습니다. 워크플로의 단계 수를 기준으로 가격이 책정되므로 워크플로를 실행하는 경우에만 비용을 지불하면 됩니다. 또한 Workflows에서는 실행 시간을 기준으로 요금을 청구하지 않으므로 태스크 사이에 워크플로를 몇 시간 일시중지할 때도 요금이 부과되지 않습니다. 

Workflows는 자동으로 수직 확장되어 시작 시간이 매우 짧으며 '콜드 스타트'의 영향이 없습니다. 아울러 단계 간 전환이 빨라 지연 시간에 민감한 애플리케이션을 지원합니다. 

Workflows 사용 사례

Workflows가 조정할 수 있는 프로세스와 흐름의 수에는 제한이 없습니다. 보다 인기 있는 사용 사례를 살펴보겠습니다. 

고객 트랜잭션 처리

고객 주문을 처리해야 하는 경우를 가정해보면 한 상품의 재고가 없는 경우 외부 공급업체의 인벤토리 보충을 트리거해야 합니다. 또한 주문을 처리하는 중에 대량 고객 주문이 들어오면 영업 담당자에게 알리는 것이 좋습니다. 영업 담당자가 Slack을 사용해 이러한 알림을 받으면 빠르게 대처할 가능성이 높아집니다. 

다음은 예시의 워크플로 다이어그램입니다.

https://storage.googleapis.com/gweb-cloudblog-publish/images/image_2_LBi7g2Y.max-1600x1600.jpg

위의 워크플로는 Slack, SendGrid 또는 인벤토리 공급업체의 커스텀 API를 포함한 외부 API는 물론 Google Cloud Firestore에 대한 호출을 조정합니다. 단계 간에 데이터를 전달하고 다른 API 출력에 따라 조건부로 단계를 실행하는 결정 지점을 구현합니다. 

한 번에 하나의 트랜잭션을 처리하는 각 워크플로 실행이 로깅되어 필요한 경우 역추적하거나 문제를 해결할 수 있습니다. 워크플로는 필요한 재시도 또는 API에서 발생한 예외를 처리하여 전체 애플리케이션의 안정성을 개선합니다. 

업로드된 파일 처리

고려할 만한 또 다른 사례로는 사용자가 업로드한 파일에 파일 콘텐츠에 따라 태그를 지정하는 워크플로가 있습니다. 사용자가 텍스트 파일, 이미지 또는 동영상을 업로드할 수 있기 때문에 워크플로에서는 파일의 콘텐츠를 분석하기 위해 다양한 API를 사용해야 합니다. 

이 시나리오에서는 Cloud Storage 트리거에 의해 Cloud 함수가 트리거됩니다. 그러면 함수가 Workflows 클라이언트 라이브러리를 사용해 워크플로를 시작하고 워크플로에 파일 경로를 인수로 전달합니다. 

이 예시에서 워크플로는 파일 확장자에 따라 사용할 API를 결정하고 해당하는 태그를 Firestore 데이터베이스에 저장합니다.

https://storage.googleapis.com/gweb-cloudblog-publish/images/image_3_4zhI67V.max-1600x1600.jpg

Workflows 심층 탐구

이 모든 사용 사례를 Workflows에서 즉시 구현할 수 있습니다. Workflows에서 확인할 수 있는 주요 기능을 자세히 살펴보겠습니다. 

단계

Workflows는 ‘단계’로 전달되는 활동의 시퀀싱을 처리합니다. 필요한 경우 단계 사이에 시간 관련 요금이 발생하지 않고 일시중지되도록 워크플로를 구성할 수도 있습니다.

https://storage.googleapis.com/gweb-cloudblog-publish/images/image_4_VMSRx8k.max-1500x1500.jpg

특히 네트워크 연결이 가능하며 워크플로 단계로 HTTP를 따르는 거의 모든 API를 조정할 수 있습니다. Cloud Functions 또는 Cloud Run에서 호출을 래핑하지 않고도 SaaS API 또는 비공개 엔드포인트를 포함한 모든 인터넷 기반 API에 대한 호출을 실행할 수 있습니다.

인증

Cloud 함수를 호출하거나 Firestore에서 데이터를 읽는 등 Google Cloud API에 대한 호출을 실행할 때 Workflows는 기본 제공 IAM 인증을 사용합니다. 워크플로에 특정 Google Cloud API를 사용할 수 있는 IAM 권한이 부여되어 있는 한 인증 프로토콜에 대해 걱정할 필요가 없습니다. 

https://storage.googleapis.com/gweb-cloudblog-publish/images/image_5_a0rN0DD.max-1500x1500.jpg

워크플로 단계 간 통신

대부분의 실제 워크플로에서는 단계 간 상호 통신이 필요합니다. Workflows는 단계에서 작업 결과를 후속 단계에 전달할 때 사용할 수 있는 기본 제공 변수를 지원합니다. 

자동 JSON 변환

JSON이 API 통합에서 매우 일반적으로 사용되면서 Workflows가 API JSON 응답을 사전으로 자동 변환하여 이후 단계에서 이 정보에 손쉽게 액세스할 수 있습니다. 

다양한 표현식 언어

또한 Workflows에는 산술 및 논리 연산자, 배열, 사전 및 기타 여러 기능을 지원하는 다양한 표현식 언어가 포함되어 있습니다. 워크플로에서 기본적인 데이터 조작을 직접 수행할 수 있어 API 통합이 더욱 간소화됩니다. Workflows는 런타임 인수를 허용하기 때문에 단일 워크플로를 사용해 다양한 이벤트 또는 입력 데이터에 대응할 수 있습니다.

https://storage.googleapis.com/gweb-cloudblog-publish/images/image_6_1OUZuI5.max-1600x1600.jpg

결정 지점

변수와 표현식으로 대다수 워크플로의 중요한 또 다른 구성요소인 결정 지점을 구현할 수 있습니다. Workflows에서는 커스텀 표현식을 사용해 워크플로의 다른 부분으로 건너뛸지 아니면 단계를 조건부로 실행할지를 결정합니다. 

조건부 단계 실행

로직에서 자주 사용되는 부분을 하위 워크플로로 코딩한 후 일반 단계로 호출하면 여러 프로그래밍 언어의 루틴과 비슷하게 작동합니다.

https://storage.googleapis.com/gweb-cloudblog-publish/images/image_7.max-1600x1600.jpg

네트워크 문제나 특정 API의 작동 중지 등으로 인해 워크플로의 단계가 실패하는 경우가 있습니다. 그러나 이로 인해 전체 워크플로 실행이 즉시 실패하지는 않습니다. 

Workflows는 워크플로가 API 호출에서 반환된 오류에 적절하게 대응하도록 해주는 구성 가능한 재시도 및 예외 처리의 조합으로 이 문제를 방지합니다.

https://storage.googleapis.com/gweb-cloudblog-publish/images/image_8.max-1600x1600.jpg

위의 모든 기능을 Workflows 소스 코드의 일부로 구성할 수 있습니다. 구성의 실제 예시는 여기에서 확인할 수 있습니다. 

지금 Workflows 시작하기

Workflows는 Google Cloud의 애플리케이션 개발 및 관리 도구 집합에 새로 추가된 강력한 도구이며 모든 프로젝트에 즉시 사용해 볼 수 있습니다. 

Workflows 사이트를 살펴보거나 Cloud Console로 바로 이동하여 첫 워크플로를 빌드해 보세요. Workflows에는 무료로 사용해 볼 수 있는 무료 등급이 포함되어 있습니다. 앞으로 발표될 Workflows 관련 공지도 기대해 주세요.

Workflows가 조정에 도움이 되기를 바랍니다.

게시 위치