---
id: pattern-background-worker
title: "Background Worker Pattern"
category: "Pattern_Desktop"
status: "draft"
verification_status: "applied"
canonical_id: ""
aliases: ["background worker", "백그라운드 워커", "worker thread", "job queue", "concurrency limit"]
duplicate_of: ""
source_trust_level: "A"
confidence_score: 0.86
created_at: 2026-06-13
updated_at: 2026-06-13
review_reason: ""
merge_history: []
tags: ["pattern", "desktop", "worker", "queue", "concurrency", "platform-independent"]
raw_sources: ["일반 소프트웨어 공학 지식", "ConnectAI/src/core/queue.ts (적용 예)"]
applied_in: ["ConnectAI"]
github_commit: ""
---

# [[Background Worker Pattern]]

## 🎯 한 줄 통찰 (One-line insight)
Background Worker 는 "무거운/장시간 작업을 메인(UI) 흐름 밖에서, *동시성 상한이 있는 큐* 로 처리" 해 UI 멈춤과 자원 폭주를 동시에 막는 패턴이다.

## 🧠 핵심 개념 (Core concepts)
1. **작업 큐:** 작업을 enqueue, 워커가 꺼내 실행.
2. **동시성 상한:** 동시에 N개만(CPU/메모리 보호).
3. **UI 분리:** CPU 바운드는 워커 스레드, I/O 는 비동기.
4. **결과 반환:** 작업별 Promise/콜백으로 결과 전달.
5. **백프레셔:** 큐가 넘치면 거부/지연.

## 📖 세부 내용 (Details · 패턴 명세)
- **언제 쓰나:** 대량/무거운 작업이 UI 반응성·자원을 위협할 때.
- **사용 조건:** 작업 단위 분리; 동시성 정책; 결과 전달 경로.
- **장점:** UI 반응성, 자원 안정(상한), 처리량 제어.
- **단점:** 복잡도, 결과 동기화, 스레드 통신 비용(CPU 바운드 시).
- **대안:** 동기 처리(소규모), 외부 잡 시스템(분산), OS 스케줄러.
- **실패 사례:** 무한 병렬 OOM; 큐 무한 증가(백프레셔 없음); 워커 예외 미처리로 멈춤; UI 스레드에서 무거운 작업.

## 💻 코드 패턴 (Code patterns)
```text
class Queue {
  enqueue(task): Promise = new Promise((res,rej)=>{ this.q.push(()=>task().then(res,rej)); this.next() })
  next(): if (active < limit && q.length) { active++; run(q.shift()).finally(()=>{active--; next()}) }
}
limit = max(2, cpus-1)   # UI 코어 여유
```
적용 예: ConnectAI 의 ActionQueueManager(동시성 `max(2,cpus-1)`, micro-delay 로 숨통) [S2]. 무거운 LLM 작업은 큐 대신 missionId 락으로 직렬화([[동시성 제어 Lock Queue Transaction]]).

## ⚖️ 모순 및 업데이트 (Contradictions & updates)
동시성은 처리량을 올리지만 자원을 넘으면 역효과 — 상한은 *하드웨어 기준*([[ADR-0004 순차 디스패치 채택]]). 메모리 큰 작업(모델)은 병렬보다 순차가 안전.

## 🛠️ 적용 사례 (Applied in summary)
ConnectAI actionQueue + 워처.

## 🔗 지식 그래프 (Knowledge Graph)
- **상위/루트:** [[패턴 카탈로그 인덱스]]
- **관련 개념:** [[Async Concurrency Pattern]], [[Background Task Pattern]], [[AITRAIN 동시성 제어]], [[데스크탑 앱 개발 가이드]]
- **참조 맥락:** 작은 모델이 무거운 작업을 백그라운드로 뺄 때 참조.

## 📚 출처 (Sources)
- [S1] 일반 워커/잡 큐 지식
- [S2] ConnectAI/src/core/queue.ts — ActionQueueManager

## 📝 변경 이력 (Change history)
- 2026-06-13: 프로젝트 독립 패턴 카드 작성.
