Logic Apps Standard 내부: Azure Tables가 워크플로를 저장하는 방식

발행: (2026년 1월 15일 오전 08:28 GMT+9)
10 min read
원문: Dev.to

Source: Dev.to

번역을 진행하려면 번역하고자 하는 본문 내용을 제공해 주시겠어요?
본문을 알려주시면 원본 형식과 마크다운을 유지하면서 한국어로 번역해 드리겠습니다.

Overview

Azure Logic Apps Standard는 Azure Table Storage를 기본 영속성 계층으로 사용합니다:

  • 워크플로우 상태
  • 실행 기록
  • 런타임 메타데이터

이 문서는 테이블 아키텍처, 명명 규칙 및 스키마 패턴에 대한 포괄적인 참고 자료를 제공합니다.

테이블 카테고리

Logic Apps Standard는 데이터를 두 가지 별도 테이블 카테고리로 구성합니다:

카테고리범위목적
기본 테이블Logic App 리소스전체 워크플로우에 걸친 공유 런타임 메타데이터
플로우 테이블개별 워크플로우워크플로우당 격리된 실행 데이터

이 분리는 워크플로우 격리, 수평 확장, 및 독립적인 수명 주기 관리를 가능하게 합니다.

기본 테이블 (앱‑수준)

기본 테이블은 전체 Logic App 리소스에 적용되는 메타데이터를 저장합니다. 하나의 Logic App에 포함된 모든 워크플로는 이 테이블들을 공유합니다.

테이블‑명명 패턴

flow{LAIdentifier}{suffix}
구성 요소설명
LAIdentifierMurmurHash64(LogicAppName)의 처음 15자
suffix테이블 유형 식별자 (아래 목록 참조)

기본 테이블 유형

테이블 접미사목적핵심 데이터
flows마스터 워크플로 레지스트리워크플로 정의, 상태, CU 할당
flowruntimecontext런타임 실행 컨텍스트플로우 상태, 실행 클러스터 유형, 런타임 구성
flowaccesskeys워크플로 액세스 키워크플로 API 접근을 위한 기본/보조 키
flowsubscriptions구독 등록테넌트 등록, 구독 상태
flowsubscriptionsummary워크플로 수 및 요약상태별 플로우 수 (활성/비활성)
jobdefinitions작업 스케줄러 메타데이터실행 상태, 재시도 구성, 반복 일정

예시

Logic App 이름이 **OrderProcessing**인 경우:

LAIdentifier = flow7365adc025615f3

결과적인 기본 테이블:

flow7365adc025615f3flows
flow7365adc025615f3flowruntimecontext
flow7365adc025615f3flowaccesskeys
flow7365adc025615f3flowsubscriptions
flow7365adc025615f3flowsubscriptionsummary
flow7365adc025615f3jobdefinitions

흐름 테이블 (워크플로 수준)

흐름 테이블은 각 워크플로에 대한 실행 데이터를 저장합니다. 각 워크플로마다 고유한 격리된 테이블 세트를 가집니다.

테이블 명명 패턴

flow{LAIdentifier}{WFIdentifier}{suffix}
자리표시자설명
LAIdentifierMurmurHash64(LogicAppName) 의 처음 15자
WFIdentifierMurmurHash64(WorkflowId) 의 처음 15자
suffix테이블 유형 식별자 (예: flows, runs, …)

흐름 테이블 유형

테이블 접미사목적저장되는 핵심 데이터
flows워크플로 정의 캐시최신 정의, 매개변수, 런타임 컨텍스트, CU
runs실행 메타데이터실행 상태, 타이밍, 트리거 정보, 상관 관계 ID
histories트리거 기록트리거 발생, 평가 결과, 입력/출력 링크
actions액션 실행액션 상태, 타이밍, 입력/출력 Blob 링크
variables워크플로 변수변수 이름, 데이터 유형, 값 링크
concurrentruns동시 실행 추적활성 실행 조정 (동시성이 활성화된 경우)

날짜가 포함된 테이블

액션 관련 테이블은 확장성을 위해 날짜별로 파티션됩니다:

{WFIdentifier}yyyyMMddT000000Z{suffix}

예시: 1c859134ef297b720250114T000000Zactions

예시

워크플로 ProcessOrderOrderProcessing Logic App에 있는 경우:

LAIdentifier = flow7365adc025615f3
WFIdentifier = 1c859134ef297b7

결과 테이블:

flow7365adc025615f31c859134ef297b7flows
flow7365adc025615f31c859134ef297b7runs
flow7365adc025615f31c859134ef297b7histories
flow7365adc025615f31c859134ef297b720250114T000000Zactions
flow7365adc025615f31c859134ef297b720250114T000000Zvariables

테이블 주요 필드

기본 Flows 테이블 (마스터 레지스트리)

FieldDescription
FlowId고유 워크플로 식별자 (GUID)
FlowName워크플로 이름
Kind워크플로 유형 (Stateful / Stateless)
StateEnabled 또는 Disabled
ScaleUnitCU 할당 (CU00, CU01, …)
DefinitionCompressed압축된 워크플로 JSON 정의
ParametersCompressed압축된 워크플로 매개변수
RuntimeConfiguration보존 설정, 운영 옵션
CreatedTime / ChangedTime라이프사이클 타임스탬프

FlowRuntimeContext 테이블

FieldDescription
FlowId워크플로 식별자
FlowState현재 워크플로 상태
FlowExecutionClusterType실행 클러스터 (Classic 등)
Kind워크플로 유형
RuntimeConfiguration런타임 설정 JSON
FlowSequenceId시퀀스 식별자

FlowAccessKeys 테이블

FieldDescription
FlowId워크플로 식별자
FlowAccessKeyName키 이름 (예: default)
PrimaryKey기본 액세스 키
SecondaryKey보조 액세스 키

FlowSubscriptions 테이블

FieldDescription
SubscriptionIdAzure 구독 식별자
State등록 상태 (Registered 등)
Properties테넌트 ID 및 등록된 기능 JSON
RegistrationDate구독 등록 타임스탬프

FlowSubscriptionSummary 테이블

FieldDescription
FlowCountsByState활성/비활성 워크플로 수를 포함한 JSON
FlowId / FlowName워크플로 참조 (워크플로별 항목용)
State워크플로 상태
ScaleUnitCU 할당
DefinitionCompressed캐시된 압축 정의

JobDefinitions 테이블

FieldDescription
JobId고유 작업 식별자
JobPartition작업 파티션 키
Callback작업 콜백 유형 (예: LinearSequencerJob)
State작업 상태 (Completed, Waiting, …)
ExecutionState현재 실행 상태
StartTime / EndTime작업 스케줄링 기간
NextExecutionTime다음 예정 실행 시간

이 참조는 Azure Logic Apps Standard의 영속성 레이어를 이해하거나 문제를 해결해야 하는 개발자, 아키텍트 및 운영 엔지니어를 위한 것입니다.

재발 및 재시도 구성

설정설명
RepeatMode / RepeatUnit / RepeatInterval재발 구성
RetryMode / RetryCount / RetryInterval재시도 구성
CurrentExecutionCount전체 실행 횟수
LastExecutionStatus / LastExecutionTime가장 최근 실행 정보
BinaryMetadata00‑15압축된 작업 메타데이터 청크

Runs Table

FieldDescription
FlowId / FlowName워크플로에 대한 참조
StatusSucceeded, Failed, Running, Cancelled
CreatedTime / EndTime실행에 대한 타임스탬프
TriggerName실행을 시작한 트리거 이름
CorrelationId요청 상관관계 식별자
ClientTrackingId클라이언트 제공 추적 식별자
TriggerCompressed트리거의 압축된 페이로드
OutputsCompressed실행 출력의 압축된 페이로드

Histories Table (Trigger History)

필드설명
HistoryName히스토리 항목 식별자
TriggerName트리거 참조
Fired불리언 – 트리거가 실제로 실행되었는지 여부
Status트리거 평가 결과
InputsLinkCompressed트리거 입력에 대한 링크 (압축)
OutputsLinkCompressed트리거 출력에 대한 링크 (압축)
TrackingId상관 관계 추적 식별자

작업 테이블

필드설명
ActionName작업의 식별자
ActionRepetitionName루프 반복 인덱스 (예: 000000)
StatusSucceeded, Skipped, Failed
Code결과 코드 (OK, ActionSkipped 등)
CreatedTime / CompletedTime작업이 시작되고 완료된 시점의 타임스탬프
InputsLinkCompressed압축된 입력 블롭에 대한 링크
OutputsLinkCompressed압축된 출력 블롭에 대한 링크
RepeatItemIndex루프 반복의 인덱스
RepeatItemScopeName부모 루프 작업의 이름
Error오류 세부 정보 (작업이 실패한 경우)

Variables Table

FieldDescription
VariableName변수 식별자
DataType변수 유형 (Integer, String, Boolean 등)
FlowId / FlowName워크플로우 참조
FlowRunSequenceId실행 순서 식별자
OperationId변수를 수정한 작업
OperationSequenceId작업 순서
InputsLinkCompressed변수 입력에 대한 링크
ValueLinkCompressed현재 변수 값에 대한 링크
CreatedTime / ChangedTime변수 수명 주기 타임스탬프

Workflow Flows Table (Per‑Workflow Cache)

FieldDescription
FlowId / FlowName워크플로 식별자
Kind워크플로 유형 (Stateful)
StateEnabled 또는 Disabled
ScaleUnitCU 할당
DefinitionCompressed압축된 최신 워크플로 정의
ParametersCompressed압축된 매개변수
RuntimeConfiguration런타임 설정 JSON
RuntimeContext압축된 런타임 컨텍스트
FlowSequenceId정의 시퀀스 ID
FlowUpdatedTime마지막 정의 업데이트 시간

식별자 생성

Logic Apps는 MurmurHash64를 사용하여 결정적이며 충돌 방지 식별자를 생성합니다.

알고리즘

// Generate Logic App identifier (LAIdentifier)
string laIdentifier = "flow" + MurmurHash64(logicAppName).Substring(0, 15);

// Generate Workflow identifier (WFIdentifier)
string wfIdentifier = MurmurHash64(workflowId).Substring(0, 15);

// Build the complete table name
string tableName = laIdentifier + wfIdentifier + suffix;

제약 조건

  • 테이블 이름: 최대 63자 (Azure Table Storage 제한)
  • 문자: 소문자 영숫자만
  • 해시 잘라내기: 15자는 충분한 고유성을 제공합니다

빠른 참고

테이블‑이름 형식

Base:   flow{LAIdentifier}{suffix}
Flow:   flow{LAIdentifier}{WFIdentifier}{suffix}
Dated:  flow{LAIdentifier}{WFIdentifier}{yyyyMMddT000000Z}{suffix}

일반적인 접미사

SuffixLevelPurpose
flowsBoth정의
runsFlow실행 기록
actionsFlow작업 실행
flowsubscriptionsBase트리거 구독
jobdefinitionsBase예약 작업
Back to Blog

관련 글

더 보기 »

제로에서 SQS Lambda까지 15분 안에

내 AWS 여정 나는 현재 조직에 입사했을 때 AWS 여정을 시작했습니다. 그 이전에는 VPS와 bare‑metal 서버를 사용하며 완전히 만족했습니다. 긴 이야기…