Home
home
버블박스
home

순환 백엔드 워크플로우가 자꾸 멈춰요!

중요 공지

“버블박스”가 “노코더스”라는 이름으로 변경됐어요

현재 사이트는 더 이상 운영하지 않으니 노코더스 사이트로 이동해주세요

목차

1. 순환 백엔드 워크플로우란?

버블에서는 클라이언트단이 아니라, 서버단에서 실행하는 워크플로우가 있습니다. 쉽게 말해, 유저가 서비스에 접속한 것과 무관하게 작동하는 워크플로우로, 백엔드 워크플로우라고 부릅니다.
특정 서비스에서 반복적으로 실행하는 워크플로우가 있습니다. 예를 들어 매일 7시에 알림을 보내줘야 한다면, 하루를 간격으로 동일한 워크플로우를 실행해야 합니다. 이때, 워크플로우는 유저의 서비스 접속과 무관하게 작동해야 하므로, 백엔드 워크플로우를 사용해야 합니다. 이렇게 (1) 순환적으로 실행하는 (2) 백엔드 워크플우를 순환 워크플로우(Recursive workflow)라고 표현합니다.
순환 백엔드 워크플로우 설정은 간단합니다. 우선 분 단위로 실행할 백엔드 워크플로우를 만듭니다.
그리고 액션의 마지막에 [Schedule API Workflow]를 추가하고, 실행한 백엔드 워크플로우로 현재 워크플로우를 선택합니다.
[Scheduled date]에는 [Current date/time]에 시간, 분, 초를 추가해 주기를 결정하면 됩니다.
예를 들어, 분 단위로 실행되야 한다면 아래처럼 입력하면 됩니다. 그러면 현재 워크플로우 실행이 끝난 후, 1분 후에 다시 워크플로우를 실행합니다.

2. 잘 작동하다가 멈추는데요…?

하지만, 여기까지 설정해서 테스트해보면 순환이 잘 되는 듯 하다가 멈춥니다. 버블 단톡방에서 순환 백엔드 워크플로우를 사용해 [Create thing] 액션을 20번 반복했는데, 10번까지만 작동하고 이후에는 멈춘다는 질문이 올라왔습니다.
순환 워크플로우가 잘 작동되다가 갑자기 왜 멈추는 걸까요? 처음부터 안 된다면 이해가 가는데, 중간에 갑자기 멈추는 게 이해가 안 됩니다.
이는 버블에서 순환 백엔드 워크플로우를 사용할 경우, 최대 뎁스 설정을 하도록 변경했기 때문입니다. 아래 이미지를 보면, 24년 7월 1일부터 순환 워크플로우의 뎁스(Depth)가 기본 10으로 자동 설정된다고 합니다. 즉, 설정한 depth 10을 넘으면, 워크플로우가 멈추게 됩니다. 앞선 사례에서 10번까지만 작동하는 이유는 해당 설정 때문입니다.
버블은 답답하게 왜 이런 설정을 만든걸까요? 공식 문서를 확인해보면, 워크로드의 급격한 사용을 방지하고자 이런 설정을 추가했다고 합니다
Infinite Recursion Protection helps prevent runaway recursive workflows from causing large, accidental spikes in workload or CPU consumption. — Infinite Recursion Protection은 무한 재귀 워크플로우가 발생하여 작업량이나 CPU 소비가 급격히 증가하는 것을 방지하는 데 도움이 됩니다.
순환 백엔드 워크플로우가 잘 작동하다가 멈추면, Depth limit을 변경하면 됩니다. [Setting] > [API]로 이동한 후, [Infinite Recursion Protection] 섹션에서 값을 변경합니다.

3. workflow depth 가 뭐죠?

갑자기 등장한 workflow depth… 이 놈에 대해 좀 더 알아봅시다. 참고로 해당 정보는 아래 공식 문서에서 상세히 확인할 수 있습니다. 다만, 이 모든 걸 알 필요는 없으니 핵심적인 부분만 버블박스에서 정리했습니다.
버블 고수, 일타강사 버블박스만 믿어보세요!
workflow depth는 루트 워크플로우로 직접적으로 연결된 워크플로우의 전체 개수를 나타냅니다. 도대체 이게 무슨 말일까요? 한 번 예시로 알아봅시다. 백엔드 워크플로우는 아래와 같습니다.
유저가 특정 버튼을 클릭하면, [create_number_nurse] 워크플로우가 처음 실행됩니다. 이어서 백엔드 워크플로우를 순환 반복합니다. 이때, 순환의 첫 시작이 되는 워크플로우가 “루트 워크플로우”입니다.
이를 뎁스로 나타내면 다음과 같습니다. 다음 이미지를 보면, 워크플로우가 순환될 때마다 뎁스가 쌓이는 걸 볼 수 있습니다.
만약 API 설정에서 Depth limit을 10으로 설정하면, Depth가 11인 워크플로우부터 동작이 멈춥니다.
케이스별 Depth 계산 방법도 공식 문서에서 확인할 수 있으니, 더 딥하게 알고 싶다면 아래 링크를 읽어보시길 추천드립니다.
중요 공지

“버블박스”가 “노코더스”라는 이름으로 변경됐어요

현재 사이트는 더 이상 운영하지 않으니 노코더스 사이트로 이동해주세요

버블박스가 버블을 주제로 책을 발행할 예정입니다. 출간 알림을 등록하면 추후에 안내 드릴게요! + 알림 신청자 중 일부에게 책을 무료로 드릴 예정입니다.
필요한 플러그인이 있다면, 버블박스에게 요청해주세요
햇갈리거나 잘 모르는 이론 및 개념이 있다면 아래에 남겨주세요.
버블 크레딧으로 더 저렴하게 시작하기
버블박스 l BubbleBox
Enterprise