본문으로 건너뛰기

© 2026 Molayo

GeekNews헤드라인2026. 05. 26. 11:54

Jira는 튜링 완전하다

요약

Jira Automation을 사용하여 Minsky 머신을 구현함으로써 Jira의 튜링 완전성을 증명한 기술적 분석입니다. Epic 상태를 프로그램 카운터로, 연결된 이슈 수를 레지스터로 활용하여 산술 연산과 루프를 구현할 수 있음을 보여줍니다.

핵심 포인트

  • Jira Automation은 Minsky 머신 모델을 통해 튜링 완전성을 가짐
  • Epic 상태는 프로그램 카운터, 연결 이슈는 레지스터 역할을 수행
  • JQL 조건 규칙을 통해 조건 분기 및 명령 디스패치 구현 가능
  • Jira Cloud의 체인 깊이 제한(10)은 외부 재트리거로 극복 가능

Jira Automation은 두 무한 카운터와 유한 명령 상태를 가진 Minsky 머신을 표현해 Jira의 튜링 완전성을 보일 수 있음- Epic 상태는
프로그램 카운터, 연결된 Bug와 Task 수는 두 레지스터가 되며, Automation 규칙이 명령별 디스패치 테이블이 됨 INC

DEC

는 연결 이슈 생성·삭제로 구현되고, 조건 분기는JQL 조건 규칙으로 연결 이슈 수를 검사해 결정함- 덧셈 예시는
A=2

,B=3

에서 Bug를 줄이고 Task를 늘려 실제*.atlassian.net

실행에서Task 5개와 정지 상태에 도달함 - Fibonacci 예시는 이슈 유형 변환으로 루프를 줄이며, Jira Cloud의
체인 깊이 제한 10에 닿으면 수동 재트리거로 계속 진행 가능함

Jira 자동화로 만든 Minsky 머신

Jira Automation은 두 개의 무한 카운터와 유한한 명령 상태를 갖는 Minsky register machine을 표현할 수 있어, Jira의 튜링 완전성을 보이는 환원이 가능함- Minsky가 1967년에 증명한 모델은
INC r; goto S

if r == 0 goto S else (DEC r; goto S')

만으로 구성됨 - Jira 구성 요소는 Minsky 머신의 각 요소에 대응됨
Register A: 연결된Bug이슈 수Register B: 연결된Task이슈 수Program Counter: 단일Epic이슈의 상태Dispatch Table: 명령 상태별 Jira Automation 규칙Clock: 자동화가 트리거하는 전환 또는 체인 제한 이후 외부 재트리거

  • Epic 상태가 현재 명령을 인코딩하고, Automation rules가 연결 이슈 수를 검사해 다음 상태로 전환함
    INC

DEC

는 해당 유형의 연결 이슈 생성과 삭제로 구현되고, 조건 분기는 JQL 조건 규칙으로 처리됨

실행 예시와 제한

덧셈 프로그램A

를 줄이면서B

를 늘리는 Minsky 프로그램으로 구성됨1. if A == 0 goto 3 else (DEC A; goto 2) 2. INC B; goto 1 3. HALT

  • 최소 구현은 하나의 Epic, 연결 이슈 5개, 명령 상태별 Automation 규칙 하나씩으로 구성됨

워크플로와 규칙

  • Jira Workflow에 초기 상태
    BACKLOG

, 이후TODO

,DEV

,PROD

를 만들고 모든 상태가 서로 전환 가능하게 설정함 BACKLOG

상태의 Epic을 하나 생성함TODO

규칙은DEC A; if A=0 halt, else goto DEV

를 구현함- Epic 상태가
TODO

로 바뀌면 트리거됨 - 연결된 Bug가 하나 이상 있으면 Bug 하나를 삭제하고 Epic을
DEV

로 전환함 - Bug가 없으면 Epic을
PROD

로 전환해 정지함

  • Epic 상태가
    DEV

규칙은INC B; goto TODO

를 구현함- Epic 상태가
DEV

로 바뀌면 트리거됨 - 새 Task를 만들고 Epic에 연결함

  • Epic을
    TODO

로 전환함

  • Epic 상태가

  • 두 규칙 모두 "
    Allow rule to trigger other rules"가 활성화됨

  • Jira Workflow에 초기 상태

초기값과 결과

  • Epic에 Bug 2개와 Task 3개를 연결해
    A=2

,B=3

으로 초기화함 - Epic을
TODO

로 전환하면 다음 흐름으로 연쇄 실행됨(2,3) TODO → (1,3) DEV → (1,4) TODO → (0,4) DEV → (0,5) TODO → (0,5) PROD

  • 실제
    *.atlassian.net

인스턴스에서 실행됐고, 최종적으로 Epic은PROD

에 도달하며 Bug 0개와 Task 5개가 연결됨 - 이 실행은 Jira 자동화로
2 + 3 = 5

를 계산한 결과가 됨

  • Epic에 Bug 2개와 Task 3개를 연결해

Fibonacci 구성

Convert Issue Type은 Bug → Story, Story → Task처럼 이슈 유형을 즉시 바꿀 수 있음CONVERT

DEC + INC

로 표현 가능해 계산 능력을 확장하지 않지만, 이동 루프의 디스패치 테이블을 줄여 더 복잡한 프로그램을 다루기 쉽게 만듦- Fibonacci는
(A, B) → (B, A+B)

로 표현되며, 세 레지스터A=Bug

,B=Task

,C=Story

와 세 상태TODO

,QA

,DEV

로 구성됨TODO: if any linked Task exists: CONVERT Task → Story INC Bug transition to TODO else: transition to QA QA: if any linked Bug exists: CONVERT Bug → Task transition to QA else: transition to DEV DEV: if any linked Story exists: CONVERT Story → Bug transition to DEV else: transition to TODO

  • 초기 상태는
    A=1

,B=1

,C=0

이며,Task 수B

에서1, 1, 2, 3, 5, 8, 13, ...

수열이 나타남 - 덧셈 머신과 달리 Fibonacci 머신에는 정지 상태가 없고, Jira Cloud의 체인 깊이 제한 10에 도달할 때까지 실행됨

  • 제한에 닿으면 운영자가 Epic을 다시 트리거해 계속 진행할 수 있으며, 한 번의 상태 편집으로 연쇄 실행이 재시작됨
  • Jira Data Center는
    automation.rule.execution.timeout

과 관련 설정을 구성 가능한 속성으로 노출함 - 무한한 이슈 생성과 규칙 실행을 가정하면 Jira 자동화 언어는 두 카운터 머신을 인코딩할 수 있으며, 물리 컴퓨터도 유한하다는 통상적 기준에서는 Jira Cloud의 유한 쿼터가 이 구성을 반박하지 않음

AI 자동 생성 콘텐츠

본 콘텐츠는 GeekNews의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.

원문 바로가기
0

댓글

0