섹션별 상세
Mycelium은 애플리케이션을 순수 데이터 변환 노드인 Cell의 유향 그래프로 구조화합니다. 각 Cell은 명시적인 입력 및 출력 스키마를 가지며 defmethod를 통해 등록됩니다. 이는 비즈니스 로직을 그래프 탐색 로직과 분리하여 유지보수성을 높입니다.
clojure
(defmethod cell/cell-spec :math/double [_]
{:id :math/double
:handler (fn [_resources data] (assoc data :result (* 2 (:x data))))
:schema {:input [:map [:x :int]]
:output [:map [:result :int]]}})입출력 스키마와 핸들러를 포함하는 개별 Cell 정의 예시
clojure
(myc/run-workflow
{:cells {:start :math/double :add :math/add-ten}
:edges {:start {:done :add} :add {:done :end}}
:dispatches {:start [[:done (constantly true)]]
:add [[:done (constantly true)]]}}
{} {:x 5})정의된 Cell들을 연결하여 워크플로우를 실행하는 예시
워크플로우 내의 데이터 전달은 누적 데이터 맵 모델을 따릅니다. 모든 Cell은 이전 단계에서 생성된 모든 키를 포함하는 전체 맵을 수신하므로, 멀리 떨어진 단계의 데이터도 별도의 배선 없이 참조할 수 있습니다. 이는 복잡한 데이터 흐름을 단순화합니다.
독립적인 작업을 동시에 수행하기 위한 Join 노드 기능을 지원합니다. 병렬(parallel) 또는 순차(sequential) 실행 전략을 선택할 수 있으며, 출력 키 충돌 시 사용자 정의 병합 함수를 통해 데이터를 통합합니다.
clojure
:joins {:fetch-data {:cells [:fetch-profile :fetch-orders]
:strategy :parallel}}
:edges {:start {:authorized :fetch-data, :unauthorized :render-error}
:fetch-data {:done :render-summary, :failure :render-error}}여러 Cell을 병렬로 실행하기 위한 Join 노드 설정
Resilience4j를 통합하여 시스템의 견고함을 확보합니다. 타임아웃, 재시도, 서킷 브레이커, 벌크헤드 등의 정책을 워크플로우 정의에 직접 선언할 수 있으며, 정책 위반 시 에러 상태로 자동 라우팅됩니다.
clojure
:resilience {:start {:timeout {:timeout-ms 5000}
:retry {:max-attempts 3 :wait-ms 200}
:circuit-breaker {:failure-rate 50}}}워크플로우 노드에 Resilience4j 정책을 적용하는 예시
워크플로우의 실행을 일시 중단하고 나중에 재개하는 Halt & Resume 기능을 제공합니다. 인간의 승인이 필요한 단계에서 상태를 유지한 채 중단할 수 있으며, 외부 저장소를 통해 프로세스 재시작 후에도 작업을 이어갈 수 있습니다.
clojure
(defmethod cell/cell-spec :review/check [_]
{:id :review/check
:handler (fn [_ data]
(assoc data :mycelium/halt {:reason :needs-approval}))})워크플로우를 일시 중단(Halt)하고 외부 개입을 기다리는 처리
LLM 코딩 에이전트의 효율적인 작업을 위해 매니페스트 시스템과 오케스트레이션 도구를 포함합니다. 에이전트에게 필요한 최소한의 컨텍스트인 Cell Brief를 생성하여 전달함으로써, 에이전트가 전체 코드베이스를 이해하지 않고도 정확한 코드를 작성하도록 돕습니다.
용어 해설
- 유향 비순환 그래프(DAG)
- — 노드 간의 방향은 존재하지만 순환하는 경로가 없는 구조로, 워크플로우의 실행 순서와 데이터 흐름을 정의하는 논리적 기반이 됩니다.
- 레질리언스포제이(Resilience4j)
- — 자바 및 JVM 환경을 위한 결함 허용 라이브러리입니다. 서킷 브레이커, 재시도, 속도 제한 등을 통해 분산 시스템에서 발생할 수 있는 장애 전파를 방지합니다.
- 이디엔(EDN)
- — Extensible Data Notation의 약자로, Clojure에서 사용하는 데이터 전송 포맷입니다. JSON보다 풍부한 데이터 타입을 지원하며 설정 파일 정의에 주로 쓰입니다.
- 무제한 컨텍스트(Unbounded Context)
- — LLM이 작업을 수행할 때 필요한 정보 이상의 과도한 데이터가 주어져 성능이 저하되거나 할루시네이션이 발생할 가능성이 높아지는 현상을 의미합니다.
- 말리(Malli)
- — Clojure용 데이터 검증 및 변환 라이브러리입니다. 런타임에 데이터 구조를 검사하고 타입 변환을 수행하여 시스템 구성 요소 간의 데이터 계약을 관리합니다.
기술
- Clojure
- Maestro
- Resilience4j
- Malli
- SCI
활용 사례
- LLM 코딩 에이전트 오케스트레이션
- 복잡한 데이터 처리 파이프라인
- 인간의 승인이 포함된 비즈니스 워크플로우
언급된 리소스
AI 분석 전체 내용 보기
AI 요약 · 북마크 · 개인 피드 설정 — 무료
출처 · 인용 안내
원문 발행 2026. 03. 01.수집 2026. 03. 01.출처 타입 RSS
인용 시 "요약 출처: AI Trends (aitrends.kr)"를 표기하고, 사실 확인은 원문 보기 기준으로 진행해 주세요. 자세한 기준은 운영 정책을 참고해 주세요.
