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