# Flow - AI 에이전트 제작을 위한 경량 태스크 엔진

> Clean Markdown view of GeekNews topic #18127. Use the original source for factual precision when an external source URL is present.

## Metadata

- GeekNews HTML: [https://news.hada.io/topic?id=18127](https://news.hada.io/topic?id=18127)
- GeekNews Markdown: [https://news.hada.io/topic/18127.md](https://news.hada.io/topic/18127.md)
- Type: news
- Author: [xguru](https://news.hada.io/@xguru)
- Published: 2024-12-06T10:46:01+09:00
- Updated: 2024-12-06T10:46:01+09:00
- Original source: [github.com/lmnr-ai](https://github.com/lmnr-ai/flow)
- Points: 11
- Comments: 1

## Summary

Flow는 전통적인 Node-Edge 기반 워크플로우 대신 Dynamic Task Queue 시스템을 사용하여 간결성과 유연성을 강조하며, 동시 실행, 동적 스케줄링, 스마트 의존성의 세 가지 원칙을 따릅니다. 이 시스템은 복잡한 워크플로우를 간소화하고, 명시적 쓰레딩 코드 없이 병렬 작업 실행, 조건 분기와 흐름 제어, 상태 관리 등의 기능을 제공합니다. 또한, 외부 종속성 없이 경량화된 설계를 갖추고 있으며, 향후 비동기 지원 및 서버리스 배포 옵션 추가를 계획하고 있습니다.

## Topic Body

- 전통적인 Node-Edge 기반 워크플로우 대신 Dynamic Task Queue 시스템을 사용하여 간결성과 유연성을 중시  
- 3가지 원칙  
  - 동시 실행: 작업이 자동으로 병렬 실행  
  - 동적 스케줄링: 작업 실행 중 새 작업 추가 가능  
  - 스마트 의존성: 이전 작업의 결과를 기다려서 처리  
- 모든 태스크의 결과는 쓰레드 세이프한 `Context`에 저장됨  
- 이 태스크 기반 아키텍처는 복잡한 워크플로우를 아주 간단하게 만들어줌   
  - 명시적 쓰레딩 코드 없이 병렬 작업 실행  
  - 자체 수정 가능한 동적 워크플로우와 사이클   
  - 조건 분기와 흐름 제어   
  - 작업 실행 스트리밍  
  - 상태 관리, 이전 상태를 로드하고 현재 상태를 저장   
  - 특정 작업부터 실행 시작 가능  
  - 입력 데이터를 동적으로 전달하여 다음 작업 실행  
  - MapReduce와 같은 병렬 처리 및 결과 수집  
- 노드 간 연결 사전 정의 없이 동적 스케줄링 사용  
- 복잡한 워크플로우를 간소화하여 깔끔한 코드 작성 가능  
- 경량화된 설계, 외부 종속성 없음  
- Auto-Instrumentation   
  - Laminar를 이용하여 추적을 위한 Auto-Instrumentation 기능 포함   
  - OpenTelemetry 기반 추적을 활성화하려면 Flow를 사용하기 전에 Laminar SDK를 initialize 필요   
- 고급 기능  
  - **컨텍스트 공유**: 모든 작업이 동일한 컨텍스트를 공유하여 데이터 흐름 관리  
  - **에러 처리**: 작업 내 예외를 적절히 전파  
  - **쓰레드 안전성**: 모든 작업이 쓰레드 안전  
  - **최소 종속성**: 외부 라이브러리 없이 동작  
- 향후 개발 계획  
  - 비동기 지원 추가  
  - 서버리스 배포 옵션 추가

## Comments



### Comment 32118

- Author: savvykang
- Created: 2024-12-07T14:36:08+09:00
- Points: 2

프로젝트 설명이 잘 이해가 안되는 데요. AI 에이전트 전용이 아니라 적용사례의 예시를 든 것 뿐일까요? 일반적인 범용 작업엔진이랑 다른 게 없어보여서요
